セキュリティ企業のDEVCOREは6月6日(現地時間)、「Security Alert: CVE-2024-4577 - PHP CGI Argument Injection Vulnerability|DEVCORE」において、Windowsで動作しているPHPから脆弱性を発見したと報じた。この脆弱性を悪用されると、リモートの認証されていない攻撃者に任意のPHPコードを実行される可能性がある。

Security Alert: CVE-2024-4577 - PHP CGI Argument Injection Vulnerability|DEVCORE

○脆弱性の情報

WindowsにはUnicode文字のBest-Fitマッピング(Unicode文字を最も近いANSI文字に変換する)機能があり、システムを特定のコードページに設定した場合、Win32 APIに渡されるコマンドライン文字列を自動的に変換することがある(参考:「[MS-UCODEREF]: WCTABLE | Microsoft Learn」)。PHP CGIモジュールを使用している場合、攻撃者はこの機能を利用してPHPのコマンドライン引数に任意の文字列を挿入することができる。

これまでに、次のコードページに設定されたWindowsのPHP CGI環境において攻撃可能なことが確認されている。

日本語(コードページ 932)

繁体字中国語(コードページ 950)

簡体字中国語(コードページ 936)

上記は他のコードページを使用するWindows環境の安全性を保証するものではない。他のコードページを使用する場合でも、対策を実施することが推奨されている。

脆弱性の情報(CVE)は次のとおり。

CVE-2024-4577 - コマンドラインインジェクションの脆弱性。特定のコードページを使用するようにシステムが設定されている場合、WindowsのBest-FitマッピングによりWin32 APIに渡されるコマンドライン引数が予期せずに置換される可能性がある

○脆弱性が存在する製品

脆弱性が存在するとされる製品およびバージョンは次のとおり。

PHP 8.3.7およびこれ以前のバージョン

PHP 8.2.19およびこれ以前のバージョン

PHP 8.1.28およびこれ以前のバージョン

PHP 8.0のすべてのバージョン

PHP 7のすべてのバージョン

PHP 5のすべてのバージョン

XAMPPのすべてのバージョン

○脆弱性が修正された製品

脆弱性が修正された製品およびバージョンは次のとおり。

PHP 8.3.8

PHP 8.2.20

PHP 8.1.29

PHP 8.0、PHP 7、PHP 5はサポートを終了しているため、これらバージョンを使用している場合は軽減策を実施するか、または製品をアップグレードする必要がある。

○対策

ApacheおよびPHP CGIモジュールを使用し、なおかつ日本語、繁体字中国語、簡体字中国語のWindows環境においてPHPのアップデートを実施できない場合は、Apacheに次の3行の設定を追加することで影響を一時的に軽減できる。

RewriteEngine On

RewriteCond %{QUERY_STRING} ^%ad [NC]

RewriteRule .? - [F,L]

発見された脆弱性の深刻度は発見者により緊急(Critical)と評価されており注意が必要。WebサーバーにWindowsおよびPHPを使用している管理者は、影響を確認して速やかにアップデートすることが推奨されている。