編集者注 (202 1年12月28日 午後 7時35分 GMT) : Log4jチームが 新たな セキュリティアップデートを リリースしました。 この アップデートに より、 2.17.0に CVE-2021-44832と して 特定された リモートコード実行の 脆弱性が ある ことが 判明しました。 現時点での 最新版である 2.17.1への アップグレードを 推奨します。 詳しくは こちら を ご覧ください。
編集者注 (202 1年12月18日 午後 6時55分 GMT) : Log4jを めぐる 状況は 急速に 変化しており、 新しい 情報が 入り次第、 ブログを 更新しています。 2.17.1以降への アップグレードを 推奨します。 この バージョンには、 2.15.0で 修正された 2件の リモートコード実行の 脆弱性 ( CVE-2021-44228 および 2.16.0で 修正された CVE-2021-45046 ) への セキュリティ修正に 加え、 2.17.1で 修正された 最新の DoS脆弱性 ( CVE-2021-45105 ) への 修正が 含まれています。 詳しくは こちら を ご覧ください。
静かな 週末を 過ごそうと どれほど 頑張っていても、 12月10日 (金)に 公表された 新たな Log4Shell の ゼロデイ脆弱性に、 少なくとも 一度は 予定を 邪魔されたのではないでしょうか (202 1年12月10日)。
この 新たな 脆弱性は、 人気の 高い Javaロギングフレームワークの 1つである Log4Jを 構成する、 オープンソースの Javaライブラリ log4j-coreで 見つかりました。 CVE-2021-44228 が 割り当てられ、 CVSSスコア10で 重大 に 分類されています。 また、 実際に 悪用されている 明確な 証拠が ある ことから、 悪用の 成熟度も 高いとされています。
2.0-beta9から 2.14.1までの すべての バージョンが この 新たな 脆弱性の 影響を 受けます。 脆弱性は 公表と 同じ 日に リリースされた 最新版 (2.16.0)で 修正されています。
Snykは、 新たな 脆弱性を すばやく Snyk Intel Vulnerability Database に 追加しました。 お客様、 パートナー、 コミュニティの 皆様は、 JVMアプリケーションや コンテナの スキャンに 利用し、 Snyk Open Source と Snyk Container を 使って この 脆弱性に 緊急の 修正を 適用 できます。
SnykでLog4Shellを検出・修正する方法 多くの 人が まず 知りたいのは、 「この 脆弱性に どの 程度さらされているのか?」と いう ことです。
Snykを 使えば、 脆弱な バージョンの パッケージを 使用しているかどうか、また その 使用箇所を 確認できます。 さらに、 SDLC全体に わたって 脆弱性を 修正する こともできます。
コーディング時、 SCMインテグレーション経由、 または 継続的な モニタリングサービスに よる アラートを 通じて、 Log4Shellの 影響を 受けているかどうかを Snykで 確認する 方法を ご紹介します。 また、 レポートサービスと APIを 使って 大規模に 確認する 方法も 解説します。
未管理・未宣言のコードを調べるSnyk CLIコマンド:snyk log4shell Snyk CLIには、 Log4Shell脆弱性の 影響を 受ける Log4jライブラリの 痕跡を 検出する ための 新しい コマンドが 追加されました。 snyk log4shellは ビルド済みの Javaプロジェクトを テストし、 マニフェストファイルで 宣言されていない 場合でも、 脆弱な ライブラリの 痕跡を 検出します。 snyk log4shellの 詳細と、 プロジェクトでの 使い方を ご覧ください 。
コーディング時にLog4Shellの脆弱性を検出する 脆弱性を できるだけ 早く 検出する ために、 開発者は 無料で 利用を 開始できる IDE プラグイン と CLI を 使用できます。 スキャン結果には、 Snykが 検出した すべての 脆弱性と、 それぞれの 脆弱性が アプリケーションに どのように 持ち込まれたか ( 直接 依存か 間接依存か )が 表示され、 修正方法も 明確に 示されます。
脆弱性の修正方法をインラインで示す、SnykのIntelliJ IDEプラグインのスクリーンショット。
Snyk CLI (必ず 最新版の v1.792.0 を お使いください)では、 脆弱性が 検出された 場合に 見落とさないよう、 専用の 警告メッセージが 表示されます。 Snyk CLIの インストールと アップデート方法に ついては、 ドキュメント を ご覧ください。
Snyk CLIで脆弱性を検出し、修正方法を確認する。
jarと して 追加された log4j-coreを スキャンする
パッケージマネージャー (Mavenなど)を 使用していない 場合でも、 Snykは jarファイル内の 脆弱性を 検出できます。 現在の フォルダ内の すべての jarを スキャンするには、 snyk test --scan-all-unmanagedコマンドを 実行します (プロジェクトを 継続的に モニタリングする sn yk monitorコマンドでも 利用できます)。
SnykのSCMインテグレーションでプロジェクトのLog4j脆弱性をテストする 数回クリックするだけで、 Snykが サポートする すべての プロジェクトを インポート し、 オープンソースの 脆弱性を テストできます。 脆弱性の 有無や、 脆弱性が どのように 持ち込まれたか、 修正方 法 などの 情報も すぐに 確認できます。
Snykは、 検出された 脆弱性に 関する 豊富な 情報を 提供します。 脆弱性の 修正方法を 把握し、 緊急性の 高い ものを 優先して 対処する うえで 役立ちます。
Snykの 優先度 スコア は、 脆弱性が 実際に 悪用されているか、 修正 プログラムが 提供されているか、 Twitterで 話題に なっているかなど、 さまざまな シグナルを もとに 算出されます。 この スコアを 使えば、 脆弱性の 一覧を すばやく 確認し、 適切な 優先順位を 付けて 修正できます。 Log4Shellの 場合、 スコアに カーソルを 合わせると わかるように、 優先度 スコアは 非常に 高くなっています。
プロジェクトの 依存関係 ツリーを 見ると、 脆弱性が アプリケーションに 直接 持ち込まれたのか、 間接依存に よって 持ち込まれたのかを 正確に 把握できます。
継続的なモニタリングで、今後のLog4j脆弱性に備える 新たな 脆弱性の 公表前に プロジェクトを インポートしていた 場合、 デフォルト設定を 変更していない 限り、 毎日の テストサイクルで プロジェクトが 自動的に テストされています。 通知を 有効に していれば、 プロジェクトの いずれかで 脆弱性が 見つかったかどうかを 知らせる 通知がすでに 届いているはずです。
Log4Shellを自動修正するPR/MR 新たな 脆弱性が 公表される 前から Snykで リポジトリを モニタリングしていた 場合、 Snykは すでに log4j-coreを 脆弱性の ない バージョンに アップグレードする 修正プルリクエスト/マージリクエストを 自動で 作成しています。
新規に インポートした プロジェクトの 場合、 または 自動修正PRを 有効に していない 場合は、 プロジェクトページから 修正PRを 手動で 作成 できます。
ビジネス全体のサービスでLog4Shellを検出・修正する APIと レポートサービスを 利用できる お客様は、 モニタリング対象の オープンソースプロジェクト全体で log4j-core依存関係が どこで 使用されているかを 把握する うえで、 これらの 機能が 役立ちます。
Snykのレポートでlog4j-coreを使用するプロジェクトを見つける Snykの 部品表 (グループおよび組織レベルの レポートの 依存関係 タブに あります)を 使って、 log4j-coreの 使用箇所を 検索できます。 Dependencies フィルターを 開いて 依存関係 名 ( log4j-core)を 入力し、 選択すると、 この パッケージに 絞り込んだ 結果が 表示されます。 結果が 表示されない 場合、 Snykで モニタリングしている プロジェクトに この 依存関係は 含まれていない ことを 示します。
Snykのレポートの依存関係タブで「log4j-core」を検索している画面のスクリーンショット。
依存関係が 見つかった 場合は、 使用箇所を 正確に 確認できます。 Projects リンクを クリックすると、 依存関係と して log4j-coreを 使用している すべての プロジェクトが 一覧 表示されます。 対象の プロジェクトを クリックすると 修正方法が 表示されます。 アップグレード可能な 場合は、 修正プルリクエスト/マージリクエストを 作成 できます。
Snyk APIでlog4j-coreを使用するプロジェクトを見つける APIを 使って log4j-core依存関係の 使用箇所を 検索する こともできます。 組織別の 依存関係 エンドポイントでは、 使用されている 依存関係を すべて 一覧 表示し、 それぞれの 使用箇所を 取得できます。 言語 (この 場合は Javaが 該当)、 深刻度など、 結果を 絞り込む ための フィルターも 複数用意されています。 複数の 組織が ある グループの すべての 組織を 順に 確認する 場合は、 グループ内の 全組織を 一覧 表示 エンドポイントを 使用してください。
レスポンスには、 該当する パッケージを 含む すべての プロジェクトが 一覧 表示されます。 ここから、 UIで プロジェクトを 確認して 脆弱性を 修正するか、 ほかの APIを 使って 修正方法を 取得できます。
Snykにお任せください! Snykは 無料で、 すぐに 簡単に 始められます 。 今すぐ ご利用ください。 脆弱な log4j-coreパッケージ (その 他の パッケージも 含む)が 使われている 箇所を 見つけ、 簡単に 修正できるよう サポートします。 安心して 週末を お過ごしください!
Capture the Flagを 始めよう オンデマンドの バーチャル入門ワークショップを 見て、 Capture the Flagの 課題の 解き方を 学びましょう。