JavaプロジェクトがLog 4 Jの脆弱なバージョンに依存するかどうかチェックする方法


The Log4j 脆弱性追跡CVE-2021-44228 (also known as Log4Shell ) 攻撃者がシステム内の任意のコードを実行できるようにします.あなたのアプリケーションがバージョン4からlog 4 jを使用するならば2.0-alpha1 to 2.14.1 , に更新する必要がありますlatest version ( 2.16.0 できるだけ早く書くこと.
スイス政府published 脆弱性を説明する優れた図

さあ、緩和戦略に飛び込みましょう.

Maven依存プラグインの使用
Mavenプロジェクトでは、依存関係ツリー内のLog 4 j Core - Rule依存性を検索し、影響を受けた依存関係を使用しているかどうかを確認できます.簡単な方法は以下のコマンドを実行することです.
mvn dependency:tree -Dincludes=org.apache.logging.log4j:log4j-core
このコマンドはMaven Dependency Plugin プロジェクトの依存関係ツリー(推移依存関係を含む)を表示するには.includeオプションは出力をフィルタリングしてlog 4コア依存のみを表示します.もしあなたのプロジェクトがLOG 4 Jの脆弱なバージョンに依存しているなら、次のようになります.

この例では、プロジェクトが直接バージョン2.0を使用していることを示します2.14.1 ( log 4 jの脆弱性)このプロジェクトは依存関係を更新する必要があります.
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.14.1</version> <!-- update this! -->
</dependency>
次に示す
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.16.0</version> <!-- or newer version -->
</dependency>
これを試してみたJDBC connector プロジェクトMariaDB database 次のようにします.

これは良いニュースです-プロジェクトはlog 4 jを使用していないので、log 4 shellに脆弱ではありません(参照).this article MariADBの特定のケースについての詳細情報です.

Mavenヘルププラグインの使用
さらに調査したい場合は、プロジェクトで使用されるログフレームワークの有効なPOMと検索を検査する必要があります.MADADB JDBCコネクタプロジェクトを続けていますMaven Help Plugin 効果的なPOMを生成するために、私はUnixライクなオペレーティングシステム(MacOS)を使用していたので、私はgrepfindstr Windowsでは次のようになります.
mvn help:effective-pom | grep log
次の出力を得ました.

これは、MariADB JDBCドライバが使用することを示しますLogback ログフレームワークとして.LogbackはLog 4 Shellによって影響されませんが、それには関連した脆弱性がありますfixed in version 1.2.8 and 1.3.0-alpha11 . 私は、コネクタによって使用されるバージョンをチェックして、それが1.3.0 - alpha 10を使用するとわかりました.LogbackはMariADBドライバのテスト依存関係として含まれていますが、pull request Githubを更新します.私は、あなたが見つけるどんなオープンソースプロジェクトでも同じことをするのを奨励します、そして、それは脆弱な依存関係を含みます.

SyftとGrypeの使用
JARファイルの数が多いより複雑なプロジェクトではSyft and Grype . SyftはCLIツールであり、コンテナイメージとファイルシステムからの材料(SBOM)のソフトウェア法案を生成するためのライブラリです.それは入れ子の複数のレベルを介して脆弱性のためのコンテナイメージやファイルシステムをスキャンするGrypeで使用することができます.

Lunasecのツールの使用
の人々LunaSec (オープンソースのデータセキュリティプラットフォーム)ディレクトリをスキャンし、脆弱なlog 4 j依存性に一致するハッシュを持つファイルを見つけるためのオープンソースツールを開発しました.The tool Windows、Linux、MacOSで利用可能です.あなたがしなければならないのは、ツールをスキャンしてディレクトリを通過させることです.例えば、
log4shell scan your-project-dir
脆弱なプロジェクトでは、次のようになります.
10:04AM INF identified vulnerable path fileName=org/apache/logging/log4j/core/net/JndiManager$1.class path=test/struts-2.5.28-all/struts-2.5.28/apps/struts2-rest-showcase.war::WEB-INF/lib/log4j-core-2.12.1.jar versionInfo="log4j 2.8.2-2.12.0"

log 4 jスキャンの使用
チームFullHunt オープンソースのツールを提供したlog4j-scan , 脆弱なlog 4 jホストを見つけるための自動で広範なスキャナ.チームはインフラストラクチャをスキャンするだけでなく、WAF(Webアプリケーションファイアウォール)をテストすることもできますbypasses これによりコード実行が可能です.ツールはいくつかのオプションがありますが、短い場合は、ツールをスキャンするURLを渡すと、脆弱性に関するレポートを取得します.例えば、
python3 log4j-scan.py -u https://log4j.lab.secbot.local
以下は出力のスクリーンショットです:


Huntress Log 4 shell脆弱性テスターの使用
The Huntress Log4Shell vulnerability tester アプリケーションがオンラインで利用可能なオープンソースツールです.ツールは、テキストフィールドでそれを使用するなど、チェックするアプリケーションで入力として使用できる文字列を生成します.この文字列にはLDAPサーバへのJNDI検索が含まれます.サーバーはあなたのアプリケーションからの要求を記録し、要求が発生した場所からIPアドレスを示します.このツールをデモビデオで録画しました

結論
より多くのツールが表示され、私はどのようなセキュリティの専門家に目を維持することをお勧めしますpublishing . 閉じるこの動画はお気に入りから削除されていますMariaDB JDBC connector , あなたが脆弱なバージョンを使用しているとわかるならば、あなたはlog 4 jを使用するどんなオープンソースプロジェクトにでもパッチを送るよう奨励します.