
サーバーがCVE-2021-44228に対して脆弱かどうかを迅速にチェックする
以下のWindows/Linux用ダウンロードクレードルを使用する場合は、事前にスクリプトを確認してください。インターネットからコードをダウンロードして実行することこそが、Log4Shellを招いた原因ですよね? ;-)
log4j_checker_beta.shスクリプトは、サーバーがCVE-2021-44228(log4jの脆弱性)の影響を受ける可能性があるかを迅速にチェックするために使用されます。
このスクリプトは脆弱でないことを100%保証するものではありませんが、脆弱である可能性があるかどうかのヒントを提供します。
wget https://raw.githubusercontent.com/rubo77/log4j_checker_beta/main/log4j_checker_beta.sh -q -O - |bash
警告のみを表示したい場合は、次のコマンドを使用してください
wget https://raw.githubusercontent.com/rubo77/log4j_checker_beta/main/log4j_checker_beta.sh -q -O - | bash | grep '\[WARNING\]'
実行する前に、locateデータベースが更新されていることを確認してください。
sudo updatedb
このスクリプトは、JAR/WAR/EARアーカイブの第一階層にある.classファイルをテストし、log4jの脆弱なクラスファイルの既知のsha256ハッシュと一致するかどうかを確認できます。
sha256ハッシュ(HEX形式)が1行に1つずつ記載されたプレーンテキストファイルのダウンロードを提供する必要があります。最初のスペース以降は無視されます。
URLは変数download_fileに設定できます。それ以外の場合、この機能は動作しません。
Lunasec.ioが公開している脆弱なバイナリJava .classファイルのハッシュに関する情報:
https://github.com/lunasec-io/lunasec/blob/master/tools/log4shell/constants/vulnerablehashes.go
また、彼らのブログも参照してください: https://www.lunasec.io/docs/blog/log4j-zero-day-mitigation-guide/
このリポジトリ内のhashes-pre-cve.txtファイルを指すSHA256_HASHES_URLをスクリプトに含めています。ただし、シェル上でスクリプトの最初のパラメータとして独自のURLを追加するか、ローカルファイルを使用することもできます。例えば、hashes-pre-cve_local.txtにファイルを保存してから次のように呼び出します:
./log4j_checker_beta.sh hashes-pre-cve_local.txt
locateとunzipコマンドがインストールされている必要があります。unzipはjarファイルを検査するために使用します。
DebianおよびUbuntuシステムにインストールするには:
sudo apt install unzip locate
sudo updatedb
次のスニペットを使用できます
IEX (New-Object Net.Webclient).downloadstring("https://raw.githubusercontent.com/anlx-sw/log4j_checker_beta/main/get-vulnerablejars.ps1")
Windows上で潜在的に脆弱なjarファイルを直接チェックできます。または、このスクリプトをダウンロードして、出力を書き込み可能なファイル共有に出力することもできます。 この方法は、Windows Server 2012上のPowershell 2.0でも動作しました。
エラーハンドリングや追加機能は、スクリプトを短く簡潔に保ち、Powershell 2.0および古いバージョンのWindowsとの互換性を維持するために意図的に追加されていません。このスクリプトはjarファイルをチェックし、脆弱なライブラリを示す文字列「JndiLookup.class」を検索するだけです。お好みのツールを使用して管理者権限で実行するか(または手動で使用してください)。
あるいは、Powershellが使えない場合は、コマンドプロンプトで次のスニペットを使用して、現在のドライブを「JndiLookup.class」を含むjarファイルでスキャンできます。 この行を管理者権限で実行した後、ファイルc:\log4j-vuln.txtをチェックして脆弱なファイルを確認してください。
cd \ && for /r %f in (*.jar) do (find /i /c "JndiLookup.class" "%f" 1>nul && echo "%f" >> "c:\log4j-vuln.txt")