Log4Shell 脆弱性はどのように機能するのか?
基本的なレベルでは、この脆弱性は不適切な入力の検証によって引き起こされます。これは、ソフトウェアが受け取ったデータを適切に検証しない場合に起こり、不正に検証された入力を使用して、プログラムが想定していない動作を実行することができるため、脆弱性の可能性が生じます。
Log4Shellは、Log4jがLDAPとJNDIを利用してサーバーに送信するリクエストを特に利用する。これらのリクエストを利用することで、攻撃者は、脆弱なシステム上でコードを実行することができ、悪意のある行為者がシステムを完全に制御し、ランサムウェアをインストールしたりデータを盗んだりする能力を持つようになる可能性があるのです。Log4Shell は何に影響するのか?
Javaは非常に人気のあるプログラミング言語なので、Log4jをロギング機能に使用しているJavaで書かれた多くのソフトウェアが、この脆弱性の影響を受けています。この脆弱性の影響を受ける最も有名で一般的に使用されているソフトウェアには、ApacheやMinecraftと呼ばれるビデオゲームなどがあります。
どのソフトウェアが影響を受けるか知るには?
Log4Shell は、他のサイバーセキュリティの脆弱性と同様に、その影響を受けるソフトウェアにパッチを適用することで緩和されます。しかし、Log4Shell の場合は、非常に広範なソフトウェアに影響を与えるため、何が影響を受け、何が影響を受けないかをリストアップするのが難しいという、少し特殊なケースです。
幸いなことに、オランダのNational Cyber Security CenterがGitHubで包括的なリストを公開しており、さまざまな組織が開発したソフトウェアの名前が含まれていて、それらがLog4Shellに対して脆弱かどうかを知らせています。Apacheサーバーの脆弱性をスキャンする方法
この脆弱性は、サイバーセキュリティとソフトウェアのコミュニティに大きな影響を与えたので、管理者が自分のサーバーの脆弱性をスキャンするためのツールが利用可能であることは、驚くことではありません。
そのようなスキャナーの1つが Log4j-RCE-Scanner で、Apache Log4j のリモートコマンド実行の脆弱性を複数のアドレスでスキャンすることが可能です。Log4j-RCE-Scannerのインストール
その前に、依存関係にある httpx
と curl
をインストールする必要があります。
Curlは、UbuntuやDebianベースのシステムで、apt
コマンドを使用して簡単にインストールすることができます。
sudo apt install curl
同じことが Arch Linux でも pacman
コマンドを使って行えます。
sudo pacman -Sy curl
また、CentOS や Fedora では yum
コマンドを使用します。
sudo yum install curl
httpxのインストールは、以下のコマンドで行うことができます。
git clone https://github.com/projectdiscovery/httpx
cd httpx/cmd/httpx && go build .
sudo mv httpx /usr/local/bin/
必要な依存関係をすべてインストールしたら、Log4J-RCE-Scannerのリポジトリをクローンします。
git clone https://github.com/adilsoybali/Log4j-RCE-Scanner
新しく作成されたディレクトリにアクセスします。
cd Log4j-RCE-Scanner/
最後に、Bashスクリプトに必要な実行パーミッションを追加します。
chmod +x log4j-rce-scanner.sh
Log4j-RCE-Scannerの使用方法
スキャナーのインストールが完了したら、いよいよ実際に使ってみましょう。
スクリプトのヘルプセクションをタイプして読んでください。bash log4j-rce-scanner.sh -h
これで、Apache サーバに Log4shell 脆弱性がないかスキャンすることができます。
bash log4j-rce-scanner.sh -d [ドメイン] -b [Burpコラボレーター].
dと
-b` フラグを使用して、ドメインと Burp Collaborator を指定することができます。ドメインが脆弱な場合、脆弱なドメイン名を持つDNSコールバックがBurp Collaboratorに送信されます。
また、-l
フラグを使用して、ドメインのリストを指定することもできます。
Pythonベースのスキャナーのインストールと使用
Pythonスクリプトを使用したい場合は、米国のCybersecurity and Infrastructure Security Agencyによって開発されたlog4-scannerを使用することができます。
これをインストールするにはgit clone https://github.com/cisagov/log4j-scanner/
ディレクトリにアクセスします。
cd log4j-scanner/log4-scanner/
Pythonベースの pip3
コマンドを使用して、必要な依存関係をインストールすることができます。
pip3 install -r requirements.txt
h` フラグを使用すると、スクリプトが提供する “ヘルプ” を表示することができます。
python3 log4j-scan.py -h
単一のURLをスキャンするのは簡単で、-u
フラグを使用して行うことができます。
python3 log4j-scan.py -u example.com
また、-l
フラグを使用すると、URLのリストをスキャンすることができます。
python3 log4j-scan.py -l list.txt
Apacheへのパッチ適用方法
本脆弱性に対処するためには、Apacheの設定を最新に保つことが非常に重要です。
Apacheのバージョンの確認は、CPanelやWebHost Managerなどの管理パネルから確認することができます。また、httpd
コマンドを-v
フラグを付けて実行することでもバージョンを確認することができます。
httpd -v
Debian や Ubuntu システムでは、apt
コマンドを使って Apache を最新の安全なバージョンに更新することができます。
sudo apt update && sudo apt upgrade apache2
同じ結果は、CentOSでyum
コマンドを使用しても達成できます。
sudo yum install httpd
よくある質問
1. Log4j のどのバージョンがこの脆弱性の影響を受けますか?
2.1.7.1以下のバージョンは、脆弱性があります。バージョン2.15.0では最も悪用されやすい要素が修正され、2.17.1では悪用されにくいリモートコード実行の脆弱性が修正されています。
2. 脆弱性のあるドメイン名を含むDNSコールバックを受信するために、Burp Collaboratorユーティリティは必要ですか?
Bashベースのスキャナーの開発者によると、Burp Collaboratorは、脆弱なドメイン名を持つDNSコールバックを受け取るために、スクリプトそのものと一緒に使用されます。また、Interact.shのアドレスを使用することも可能です。
3. 3. Bashベースのスキャナを使用するために、他の依存関係が必要ですか?
基本的な使い方であれば、httpxとCurlが依存関係としてシステムにインストールされていれば大丈夫です。ただし、一部の機能をアンロックするためには、Subfinder、Assetfinder、Amassがインストールされている必要があります。