新ツール「PHP2Shell scanner」、ホストが CVE-2026-109618・CVE-2026-109619 の影響を受けるかを検査

Searchlight Cyberは、ホストがCVE-2026-109618およびCVE-2026-109619の影響を受けるかどうかを検査するオープンソースツール「php2shell-scanner」を公開しました。この2件はPHPのリモートコード実行(RCE)の脆弱性で、10月21日に修正されています。

Image

「PHP2Shell」を悪用すると、攻撃者はデフォルト設定のApache mod_phpまたはPHP-FPM上で動作するPHPアプリケーションに対し、認証前にRCEを実行できます。WordPress、Drupal、Joomla、phpMyAdmin、Nextcloud、Magentoなど、広く使われているソフトウェアで悪用が確認されています。Webサーバの背後でPHPを運用している場合、どのホストが依然として脆弱なのかを把握する必要があります。しかしSearchlightの研究者らは、すでに出回っているスキャナの大半は、これを確実には判定できないと指摘しています。

研究者らは次のように述べています。「公開されている他のスキャナを評価したところ、大半はバージョン確認に依存しており、mod_phpとphp-fpmの双方について脆弱な状態を正確に捉えていませんでした」。バージョン確認は、サーバが公表している情報を読み取るだけです。欠陥に実際に到達できるかどうかは確認できません。また、2種類のサーバ構成では障害の現れ方が異なるため、PHPの実行方式によって判定結果も分かれます。

PHP2Shellは、厳密に選んだタイミングでPHPをメモリ不足に陥らせます。その結果、インタプリタがすでに解放したメモリへの参照を保持したままになり、この不整合な状態がコード実行への経路になります。検出するには、このメモリ枯渇状態を意図的に発生させ、ホストの反応を観察する必要があります。

スキャナは3段階のチェックを順番に実行します。まず、PHPのメモリ枯渇エラーの発生を試みます。それができなければ、PHP-FPMのワーカーがリクエスト処理中に異常終了したことを示す、差分のある空のHTTP 500を監視します。最後の手段として、公表されているPHPのバージョンを読み取ります。プローブの内容は具体的です。最小限のmultipartコントロールリクエストを送った後、62階層にネストしたPHP配列キーを使う細工済みのmultipartプローブを最大3回送信し、サイズを1 MiBから20 MiBまで増やします。判定が確定した時点でプローブは停止します。

研究者らは次のように述べています。「この脆弱性はOOM(メモリ不足)状態の誘発を必要とするため、本質的にリスクを伴います。しかし、この状態を引き起こさずに確実に検出する方法はありません」。それでも誘発を選んだのは、代替手段がバージョンバナーによる推測にとどまり、このツールはそれに代わるものとして作られたためです。ほとんどのPHP環境ではワーカーのクラッシュからすぐに復旧し、障害にはなりません。ただし、チームは実行時に注意するよう利用者に呼びかけています。

ホストに何を送るのかも確認しておきましょう。テスト対象のパスごとに、42バイトのコントロールリクエストと、合計約29 MiBの3回のプローブを受け取る可能性があります。スキャナはデフォルトで/index.phpをテストします。phpMyAdminが対象の場合は、2つ目のパスで自動的に再テストします。--sapiフラグを使えば、ホストの実行方式がmod_phpかPHP-FPMかがすでにわかっている場合に、検出をどちらか一方に限定できます。ただし、デフォルトでは両方のルールセットを適用します。

php2shell-scannerはGitHubで無償公開されています。

必読:PHP2Shell脆弱性がFortinet、Cisco、Palo Alto Networksの顧客に意味すること

翻訳元: https://www.helpnetsecurity.com/2026/10/22/php2shell-scanner-tool/

本記事は helpnetsecurity.com の記事を翻訳・要約したものです。