原文:PHP2Shell: Critical RCE Vulnerabilities Affect a Large Majority of Web Servers

※2026年10月22日更新:「確認された脅威アクティビティとインジケーター」および「緩和策と推奨事項」のセクションを追加しました。

概要

10月21日、Wiz Research、Calif、OpenAI、およびPHPチームによる共同発表において、2件の深刻なメモリ操作の脆弱性が公表されました。この2件の脆弱性を組み合わせたものは「PHP2Shell」と呼ばれています。これらの脆弱性はPHP Coreに存在するため、PHP上で動作するあらゆるWebアプリケーションが脆弱である可能性が高いと考えられます。推定では、これはWeb全体の3分の2(2/3)以上に相当します。

影響を受けるバージョン

PHPブランチ 脆弱なリリース 最初の修正リリース
8.2 < 8.2.35 8.2.35
8.3 < 8.3.36 8.3.36
8.4 < 8.4.27 8.4.27
8.5 < 8.5.12 8.5.12

パッチはこちらから入手できます。

脆弱性

これらの脆弱性は、PHPが致命的エラーを処理する方法に起因しています。致命的エラーに関連する古い状態データが残存し、後続のセッションがそれを再利用できるため、メモリ操作、認証不要のリモートコード実行、および情報漏えいにつながります。

これらの脆弱性は10年以上にわたってPHPのコード内に潜んでいました。今回発見されたのは、脆弱性調査においてAIが活用されたためです。調査チームはWiz Atlas、Gemini 4 Argon、GPT-5.6 Solの各モデルを組み合わせて使用しており、特にGemini 4 Argonが脆弱性の発見とエクスプロイト開発に役立ったと述べています。

これらの脆弱性に割り当てられたCVEは以下の表のとおりです。

CVE CVSS 脆弱性 攻撃者が達成できること 実証された内容
CVE-2026-109618 9.2 メモリ不足(OOM)破損 PHP Webワーカーとして認証なしでコードを実行 WordPress、Drupal、Joomlaにおける認証前のリモートコード実行(RCE)
CVE-2026-109619 9.2 リクエスト間での古いグローバル状態 Use-After-Freeを引き起こし、ワーカーのメモリを開示またはコードを実行 WordPressおよびDrupalにおける認証前のRCE、アプリケーションに依存しないリモートメモリ開示

確認された脅威アクティビティとインジケーター

公開されたセキュリティ調査および最近のセキュリティテレメトリーから、PHP2Shellに関連する日和見的なスキャンやエクスプロイトの試行が確認されています。アクティビティには、PHPセッションのアップロード進捗機能を標的とするHTTPリクエスト、不審なマルチパートフォームの送信、PHP2Shell関連のUser-Agent文字列を使用した自動スキャンが含まれます。

HTTPリクエストの潜在的なインジケーターは以下のとおりです。

  • multipart/form-dataおよびPHP_SESSION_UPLOAD_PROGRESSパラメーターを含むPOSTリクエスト
  • 異常に大きいフォームパラメーター、または不正な形式のセッションアップロード進捗値
  • 不審なリクエストの後に発生する、PHPのメモリ制限に関する異常なエラーや予期しないアプリケーションの応答

広範な脅威ハンティングの過程で確認されたスキャナーのUser-Agent文字列は以下のとおりです。

  • php2shell-109618
  • php2shell-scan/109618
  • php2shell-scan/1.0
  • php2shell-probe/1.0

これらのUser-Agent文字列は攻撃者が制御可能なものであり、エクスプロイトの成功ではなく、自動スキャンやプロービングを示している可能性があります。

複数の顧客にわたる広範な調査の過程で確認された主なIPアドレスは以下のとおりです。

注:これらのインジケーターは、PHP2Shellアクティビティの疑いがある事案の調査中に特定されたものです。一部はエクスプロイトの試行の可能性に関連していますが、その他は自動スキャンや偵察を反映したものであり、必ずしも悪意があるとは限りません。掲載されていることは、エクスプロイトの成功や侵害を確定するものではありません。ブロックや修復措置を講じる前に、追加のコンテキストに照らしてインジケーターを検証してください。

種類 インジケーター 背景/評価
IP 64.95.12.7 エクスプロイトの疑い:PHP2Shell関連のマルチパートインジケーターを含むHTTP POST。Cloudflare WAFによりブロック。
IP 34.22.235.83 エクスプロイトの疑い:PHP_SESSION_UPLOAD_PROGRESSを含むHTTP POST。Cloudflare WAFによりブロック。
IP 85.11.167.243 エクスプロイトの疑い:PHP2Shellをテーマとしたアクティビティに関連するPOSTリクエスト。CVE-2026-109618/109619を参照するIPS検知あり。エクスプロイト成功は確認されていません。
IP 153.75.85.29 スキャン:PHP2Shellをテーマとした自動スキャンおよびPHPの露出チェック。Cloudflareのチャレンジを確認。
IP 172.105.154.49 スキャン:PHP2Shellバージョンチェック用のUser-AgentおよびHTTP GETリクエスト。エクスプロイトの証拠なし。
IP 1.52.101.122 スキャン:shellflow-php2shell/1.0 User-Agentを使用したリクエスト。
IP 136.144.33.112 スキャン:shellflow-php2shell/1.0に関連。エクスプロイトは確認されていません。
IP 2a02:c207:2330:6679::1 スキャン:複数のドメインにわたるPHP2Shellをテーマとしたリクエスト。
IP 172.59.146.126 スキャン:PHP2Shell露出チェック用のUser-Agent。Cloudflareのマネージドチャレンジ。
IP 50.20.218.219 スキャン:PHP2Shell露出チェック用のUser-Agent。Cloudflareのマネージドチャレンジ。
IP 73.74.49.22 スキャン:PHP2Shell露出チェック用のUser-Agent。Cloudflareのマネージドチャレンジ。
IP 104.251.180.130 スキャン:PHP2ShellスキャナーのUser-Agent。認可の主張は未検証。
IP 164.68.102.163 スキャン:PHP2Shell検証用のUser-Agent。エクスプロイトは確認されていません。
IP 77.222.114.171 スキャン:PHP2ShellスキャナーのUser-Agent。
IP 115.120.198.165 スキャン:PHP2ShellプローブのUser-Agent。Cloudflareのチャレンジを確認。
IP 90.76.239.150 スキャン:特徴的なUser-Agentを使用したPHP2Shellをテーマとした自動スキャン。
IP 185.182.185.160 スキャン:PHP2ShellスキャナーのUser-Agent。エクスプロイトは確認されていません。
HTTP PHP_SESSION_UPLOAD_PROGRESSを含むPOST multipart/form-data より確度の高いエクスプロイトインジケーター:PHP2Shellのエクスプロイトの疑いがある試行において、PHPのアップロード進捗機能が標的とされています。
HTTP 異常に大きい、または不正な形式のPHP_SESSION_UPLOAD_PROGRESS値 不審なマルチパートリクエストと相関がある場合、PHP2Shellのエクスプロイトの準備またはトリガー動作の可能性があります。
User-Agent php2shell-109618 不審なPOSTリクエストおよびPHP2Shellを参照するIPS検知で確認。
User-Agent php2shell-version-check/1.0 (safe, no exploitation) PHP2Shellの自動バージョンチェック。無害であるとの主張は未検証。
User-Agent shellflow-php2shell/1.0 PHP2Shellをテーマとした自動プロービング。
User-Agent Mozilla/5.0 (compatible; php2shell-exposure-scan/1.0) PHP2Shellの露出スキャン。必ずしも悪意があるとは限りません。
User-Agent php2shell-check/1.0 PHP2Shellの自動チェック。
User-Agent php2shell-scan/2.0 (authorized-security-assessment) 認可を主張するPHP2Shellスキャナー。未検証。
User-Agent php2shell-scanner/1.0 PHP2Shellの自動スキャン。
User-Agent php2shell-validate/1.0 (+detection-only; no exploitation) PHP2Shellの検証アクティビティ。主張は未検証。
User-Agent php2shell-masscheck/1.0 (authorized-audit) PHP2Shellの大規模スキャン。認可は未検証。
User-Agent php2shell-scan/1.0 PHP2Shellの自動スキャン。
User-Agent Mozilla/5.0 (compatible; php2shell-probe/1.0; authorized-scan) PHP2Shellのプロービング。認可は未検証。
User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36 DNN-CERT-BPO/Kheish-LLM-autoscan/php2shellRun

ホストベースの潜在的なインジケーターは以下のとおりです。

  • セグメンテーション違反を含む、PHP-FPMまたはApacheワーカーの予期しないクラッシュ
  • PHPプロセスによるシェル、インタープリター、またはその他の異常な子プロセスの生成
  • Webサーバープロセスから発生する不審な外部へのネットワーク接続
  • アプリケーションファイルの予期しない変更、または権限のないWebアクセス可能なスクリプトの出現

個々のインジケーターが存在するだけでは、エクスプロイトが成功したとは断定できません。影響を受けたシステムが侵害されたかどうかを判断するには、追加の調査とイベントの相関分析が必要です。

緩和策と推奨事項

PHPセキュリティチームは2026年10月21日に緊急パッチをリリースしました。一時的な設定変更やWebアプリケーションファイアウォール(WAF)による保護では完全な緩和にはならないため、組織は影響を受けるPHPランタイムの更新を直ちに最優先で実施する必要があります。

1. PHPの導入環境の棚卸し

インターネットに公開されたWebサーバー、社内アプリケーション、PHPランタイムを同梱するサードパーティ製品を含め、PHPを実行しているすべてのサーバー、コンテナ、ホスティングアカウント、アプリケーションを特定します。

インストールされているPHPのバージョン、オペレーティングシステム、導入方式、および担当管理者を記録します。特にPHP-FPM、Apache mod_php、php-cgi、LiteSpeed、FrankenPHP、およびコンテナ化された導入環境に注意を払う必要があります。

2. 公式セキュリティアップデートの適用

影響を受けるPHPインストールを、必要に応じて8.2.35、8.3.36、8.4.27、または8.5.12にアップグレードするか、検証済みのベンダー提供のセキュリティバックポートを適用します。

アップデートは、信頼できるPHPディストリビューション、オペレーティングシステムのリポジトリ、コンテナイメージの発行元、またはホスティングプロバイダーから入手します。影響を受けるPHPサービスを再起動または再デプロイし、更新されたランタイムが実際に稼働していることを確認します。

組織は、影響を受けるすべてのPHP導入環境が確実に修復されるようにしつつ、インターネットに公開されたシステムやその他の重要なアプリケーションを優先する必要があります。

3. 一時的な予防措置の実施

直ちにパッチを適用できない場合、組織は潜在的な露出を低減するための一時的な保護策を検討する必要があります。これには、不要な外部アクセスの制限、利用可能なWAF保護の適用、PHPセッションのアップロード進捗機能の見直しが含まれます。

PHPのsession.upload_progress.enabled設定はアップロード進捗の追跡を制御するもので、デフォルトで有効になっています。この機能が不要な場合、管理者は一時的に無効化することを検討できます。

session.upload_progress.enabled = Off

この設定は、php.ini、.user.ini、またはサポートされている場合は.htaccessなど、適切なPHP設定メカニズムを通じて構成し、必要に応じて関連サービスをリロードまたは再起動してください。

注:セッションのアップロード進捗機能を無効化すると、特定の攻撃経路への露出を低減できる可能性がありますが、両方の脆弱性に対する完全な保護にはなりません。PHPセキュリティチームは、影響を受けるランタイムの更新が唯一の完全な修復策であるとしています。管理者は、設定変更を実施する前にアプリケーションの互換性を確認する必要があります。その他の緩和策については、php2shell.comのWebサイトで紹介されています。

4. サポート対象外のPHPバージョンへの対応

サポート対象外のバージョンでは上流のセキュリティアップデートが提供されなくなっている可能性があるため、レガシーなPHP導入環境には特に注意が必要です。

組織は、ホスティングプロバイダーまたはディストリビューションのメンテナーに問い合わせ、検証済みのセキュリティバックポートが利用可能かどうかを確認する必要があります。サポートされた修復策が利用できない場合は、互換性テストを実施したうえで、現在メンテナンスされているPHPリリースへの移行を優先する必要があります。

5. インシデントレスポンス手順の準備

最新のバックアップが利用可能であることを確認し、調査に備えて関連するWebサーバー、WAF、PHPエラー、アプリケーション、エンドポイント、およびネットワークのログを保持します。

組織は、PHPプロセスに関わる不審なアクティビティ、アプリケーションの予期しないクラッシュ、異常な子プロセスの実行、およびWebアクセス可能なファイルへの不正な変更を確認する必要があります。

Linuxシステムでは、Florian Roth氏のprocess-watcherプロジェクトが、環境への適合性を検証したうえで、任意の調査リソースとして役立つ可能性があります。

OpenAI PHP2Shell Checker

OpenAIは、組織が脆弱である可能性のあるPHPインストールを特定するのに役立つ、オープンソースのPHPバージョン評価ユーティリティを公開しました。

リポジトリ:https://github.com/openai/php2shell-checker

このユーティリティは、Node.jsを使用して、リモートからアクセス可能なWebサイト、またはローカルにインストールされたPHPバイナリのチェックをサポートしています。

コマンド例:

  • リモートWebサイトの評価:node phpcheck.js “https://example.com”
  • ローカルPHPの評価:node phpcheck.js –local

このチェッカーは、識別できたPHPのバージョン情報に基づいて、OK、VULNERABLE、またはUNKNOWNの評価を返します。

リモート評価は、X-Powered-ByやServerなど公開されているHTTPヘッダーに依存しており、バージョン情報が隠されている場合や取得できない場合は結論が得られないことがあります。このツールは脆弱性を実際にエクスプロイトするものではなく、修復が成功したかどうかを独自に検証するものでもありません。

また、ベンダーのセキュリティバックポートにより、上流のPHPバージョン文字列が変わらないままパッチ状況が変化する場合があります。そのため、結果はローカルのパッケージインベントリやベンダーのセキュリティアドバイザリと照らし合わせて検証する必要があります。

組織はこのユーティリティを認可された資産に対してのみ使用し、OKという結果をシステムが安全であることの決定的な証拠とみなすべきではありません。

結論

脆弱性調査にAIを取り入れることで、今後、特にオープンソースのコードにおいて、より重大なバグが発見されていくことは間違いありません。これによりサービスやソフトウェアはかつてないほど安全になりますが、当面はこのような公表がさらに増えることが予想されます。

その他のリソース

信頼できるセキュリティパートナーとして、LevelBlueはお客様とパートナーのために警戒態勢を強化し、不審なアクティビティを監視しています。この評価を変更する新たな情報が得られた場合は、直接最新情報をお知らせします。