Log4Shell(CVE-2021-44228)とは?Linuxシステムを保護するための完全対策ガイド
Log4Shell(CVE-2021-44228)は、多くのサイバーセキュリティ研究者や専門家によって「史上最も深刻なゼロデイ脆弱性」と評されています。この脆弱性は、2001年から存在するJavaのログユーティリティ「Log4j」に影響を与えます。Log4jは、システムの日常的な操作やソフトウェアのエラーなどのイベントを記録・通信するために広く使用されています。本記事では、Linuxシステムをこの脆弱性から守るための具体的な方法をご紹介します。
Log4Shell脆弱性の仕組み
この脆弱性の根本的な原因は、不適切な入力バリデーション(入力値検証)です。ソフトウェアが受け取ったデータを適切に検証しない場合、悪意のある入力によってプログラムに本来実行されるべきではない動作をさせることが可能になります。
Log4Shellは、Log4jがLDAPおよびJNDIを使用してサーバーに送信するリクエストを悪用します。攻撃者はこれらのリクエストを利用することで、脆弱なシステム上で任意のコードを実行でき、最終的にはシステムの完全な制御を奪い、ランサムウェアのインストールやデータ窃取を行うことが可能になります。
Log4Shellの影響範囲
Javaは非常に人気のあるプログラミング言語であるため、ログ機能にLog4jを使用しているJava製のソフトウェアは、この脆弱性の影響を受けます。影響を受ける代表的なソフトウェアには、Apacheやゲーム「Minecraft」など、広く知られ、日常的に使用されているものが含まれます。
影響を受けるソフトウェアの確認方法
他のサイバーセキュリティ脆弱性と同様に、Log4Shellも影響を受けるソフトウェアにパッチを適用することで対処できます。しかし、Log4Shellの場合は影響範囲が非常に広いため、どのソフトウェアが脆弱でどれが安全なのかを把握するのが困難です。
幸いにも、オランダ国立サイバーセキュリティセンター(NCSC)がGitHub上で包括的なリストを公開しており、さまざまな組織が開発したソフトウェアがLog4Shellに対して脆弱かどうかを確認できます。
Apacheサーバーの脆弱性スキャン方法
この脆弱性がサイバーセキュリティ業界とソフトウェアコミュニティに大きな影響を与えたことから、管理者が自分のサーバーをスキャンできるツールが多数提供されています。
その一つが「Log4j-RCE-Scanner」です。このツールを使うと、複数のアドレスに対してApache Log4jのリモートコード実行(RCE)脆弱性をスキャンできます。
Log4j-RCE-Scannerのインストール
まず、必要な依存関係であるhttpxとcurlをインストールします。
UbuntuやDebianベースのシステムでは、aptコマンドでcurlを簡単にインストールできます:
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 Collaborator]
-dフラグでドメインを、-bフラグでBurp Collaboratorを指定します。ドメインが脆弱である場合、脆弱なドメイン名を含むDNSコールバックがBurp Collaboratorに送信されます。
また、-lフラグを使用して、ドメインのリストファイルを指定することもできます。
Pythonベースのスキャナーの導入と使用
BashスクリプトよりもPythonスクリプトを好む場合は、米国サイバーセキュリティ・インフラセキュリティ庁(CISA)が開発した「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などの管理パネルから確認するか、-vフラグ付きのhttpdコマンドを実行して確認できます:
httpd -v
DebianおよびUbuntuシステムでは、aptコマンドでApacheを最新の安全なバージョンに更新できます:
sudo apt update && sudo apt upgrade apache2
CentOSではyumコマンドで同様の結果が得られます:
sudo yum install httpd
よくある質問
Q1. どのバージョンのLog4jがこの脆弱性の影響を受けますか?
2.15.0より前のバージョンがこのエクスプロイトに対して脆弱です。バージョン2.15.0で最も悪用されやすい要素が修正され、2.17.1で悪用が困難なリモートコード実行脆弱性が修正されました。
Q2. 脆弱なドメイン名のDNSコールバックを受信するためにBurp Collaboratorは必須ですか?
Bashベースのスキャナー開発者によると、Burp Collaboratorはスクリプトと併用して、脆弱なドメイン名を含むDNSコールバックを受信するために使用されます。代わりにInteract.shのアドレスを使用することも可能です。
Q3. Bashベースのスキャナーを使用するのに他の依存関係は必要ですか?
基本的な使用では、httpxとCurlがシステムにインストールされていれば十分です。ただし、一部の機能を有効にするには、Subfinder、Assetfinder、Amassの追加インストールが必要になります。
-
会社のデータを盗難・悪用から守る方法!O&O SafeErase 16徹底解説
ほとんどの企業がビジネスをデジタル化・オンライン化する昨今、顧客データの保護はかつてないほど重要になっています。企業のサーバーは顧客情報が集中する最重要の場所であるため、マルウェアやランサムウェア攻撃の格好の標的となります。こうした攻撃は強力なVPNやリアルタイム型アンチウイルスソフトで防げますが、問題はスクラップ価格で売却されたり、廃棄処分されたりする古いパソコンやハードディスクです。廃棄された製品に残された顧客情報を、企業はどのように守ればよいのでしょうか。 さらに懸念すべきことに、近年のコンピュータソフトウェア分野では、高性能なディスク復元ソフトが登場しています。ごみ箱から削除した後でも
-
パソコンをマルウェアから守る方法|感染のサインと効果的な対策を解説
「最近、パソコンの動きがなんだか遅い…」「ポップアップ広告が以前より明らかに増えた」「ブラウザに見覚えのないツールバーが表示される」「知らないサイトに勝手にリダイレクトされる」——こんな症状に心当たりはありませんか?もしかすると、あなたのパソコンはマルウェアに感染しているかもしれません。この記事では、パソコンを脅威やマルウェアから守るために今すぐできる対策をご紹介します。 なぜ今、マルウェア対策が必要なのか? 近年、サイバー攻撃やセキュリティ脅威は急増しており、デバイスをマルウェアから保護することはもはや必須となっています。友人から借りたUSBメモリを挿しただけで、あるいは信頼できないWeb