Snyk CLIで管理対象外やシェーディングされたJAR内のLog4Shell脆弱性を検出
Michal Brutvan
2021年12月18日
0 分で読めますご存じの方も多いと思いますが、ApacheのLog4jログフレームワークに関するLog4Shell脆弱性(CVE-2021-44228およびCVE-2021-45046)が、金曜日(2021年12月10日)に公表されました。Snyk CLIは強力なツールで、Log4jライブラリがアプリケーションに直接または推移的に含まれていれば、Log4jのCVEを検出できます。しかし、Log4jライブラリがマニフェストファイルに記載されていない場合や、フォークまたは再パッケージされている場合は、これまで検出できないことがありました。今回、その問題を解決します。
本日、新しいsnyk log4shellコマンドによりSnyk CLIの機能を強化しました。このコマンドを使うと、アプリケーションをより詳しく把握でき、マニフェストファイルに宣言されていない脆弱性ライブラリの痕跡も検出できます。新しいコマンドは.jarファイルと.warファイルの内部を調べ、Log4jまたはその一部を検出します。「Fat JAR」にも対応しています。
このコマンドはSnyk CLIバージョン1.796以降で利用でき、今年初めのFossID買収によって実現した画期的な解析・検出技術を活用しています。
Snyk Open Source
Javaプロジェクトのテストに使える以下のコマンドは、すでにSnyk Open Source CLIで利用できます。
snyk testはプロジェクトのマニフェストを解析し、依存関係と既知の脆弱性を特定します。使用方法の詳細はSnykのJava向けドキュメントをご覧ください。snyk test --scan-all-unmanagedは、対象フォルダ内のJARファイルのシグネチャをMavenリポジトリ内のシグネチャと照合し、個々のパッケージとその脆弱性を検出します。使用方法の詳細はCLIリファレンスドキュメントをご覧ください。
Snyk Log4Shell(新機能)
既存の–scan-all-unmanaged引数はJARファイルを開かず、ファイルのシグネチャを照合するだけです。.jarファイルの内部を調べ、宣言されていない要素(フォークされたプロジェクト、名前が変更されたファイル、再パッケージされたJARファイル(Fat JARなど))を検出するために、CVE-2021-44228(Log4Shell)の影響を受けるLog4jのバージョンの検出に特化した、新しいSnyk CLIコマンドを導入しました。
snyk log4shellは、マニフェストファイルを通じて脆弱なパッケージを検出するSnyk Open Sourceのスキャンを補完します。Javaバイナリを再帰的に解析し、Log4jライブラリのソースコードの痕跡を検出します。
snyk log4shellでできること:
Javaプロジェクトをスキャンして、脆弱なバージョンのLog4jを含む.jarファイルがあるかどうかを確認できます。
Javaプロジェクトをスキャンして、脆弱なLog4jライブラリに含まれていることが確認されているファイルがあるかどうかを確認できます。このような検出結果は、Log4jライブラリ全体が含まれている可能性を示します。
snyk log4shellの使用方法
プロジェクトがビルド済みであることを確認します。
スキャンするプロジェクトのディレクトリから
snyk log4shellを実行します。
注:新しいコマンドでは、追加のコマンドライン引数は不要であり、サポートもされません。
その他のリソース
Snykでは、この追加機能の開発に加えて、Snyk4Shell脆弱性に関する幅広い情報ライブラリも作成してきました。安全を守るために、Log4Shell修正チートシートやLog4Shellの検出と修正ガイドなどのリソースをご覧ください。
