PHP の深刻な脆弱性 CVE-2024-5585 が FIX:RCE の恐れ

Command Injection Vulnerability Discovered in PHP: CVE-2024-5585

2024/06/10 SecurityOnline — サーバ・サイド・スクリプト言語として広く使われている PHP の複数のバージョンに、深刻な脆弱性 CVE-2024-5585 (CVSS:7.7) が発見された。この脆弱性の悪用に成功した攻撃者は、セキュリティ設定が適切な場合でも、任意のコマンド実行が可能となる。


この脆弱性は、以前に不完全な修正がされた RCE 脆弱性 CVE-2024-1874 (CVSS:9.4) に起因するものであり、そのバイパス手法が、セキュリティ研究者 Tianstcht により発見された。proc_open() 関数内のコマンド名の末尾にスペースを追加することで、攻撃者はセキュリティを回避し、Windows 上で任意のコマンドが実行可能となる。

この脆弱性は、proc_open() 関数を配列構文で使用する際の、コマンド引数の不十分な検証により発生する。Windows 上で bypass_shell オプションが有効化されている場合でも、攻撃者によるコマンド引数の操作が可能となり、コマンド・インジェクションへとつながる。

CVE-2024-5585 の悪用に成功した攻撃者は、サーバの完全な侵害を達成して任意のコードが実行可能となり、データ流出/不正アクセス/サービス運用妨害につながる恐れがある。

この脆弱性の PoC エクスプロイトは以下の通りだ:

  1. “echo hello” を test.bat として保存する。
  2. 以下のファイルを 1.php として保存する。”argv-filename” の最後にスペースがあることに注意:
    <?php $descriptorspec = [STDIN, STDOUT, STDOUT]; $proc = proc_open(["test.bat ", "\"&notepad.exe"], $descriptorspec, $pipes, null, null, array("bypass_shell" => true)); proc_close($proc);
  3. PHP を実行して、”notepad.exe” がポップアップ表示されることを確認する。

CVE-2024-5585 は、以下の PHP バージョンに影響をおよぼす:

  • 8.1.29 未満の 8.1.*
  • 8.2.20 未満の 8.2.*
  • 8.3.8 未満の 8.3.*

Web 上で PHP を使用している組織に対して、強く推奨されるのは、パッチが適用された最新版 (8.1.298.2.208.3.8) へと直ちにアップグレードすることだ。また、管理者にとって必要なことは、システム・ログ上で侵害の兆候の有無を確認し、適切な緩和策を実施することである。