Log4Shell (CVE-2021-44228) 脆弱性は、多くのサイバーセキュリティ研究者や専門家によって、史上最も重大なゼロデイ脆弱性であると言われています。この脆弱性は、Log4jという名前で広く利用されているJavaユーティリティに影響します。Log4jは、2001年から存在し、日常のシステム操作やソフトウェアのエラーなどのイベントを記録・通信します。ここでは、あなたの Linux システムをこの問題から守る方法を紹介します。

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のインストール

その前に、依存関係にある httpxcurl をインストールする必要があります。

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がインストールされている必要があります。

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。