AIセキュリティ

PHP、AI支援の調査で明らかになった重大なPHP2Shell脆弱性を修正

Calif、OpenAI、Wizの調査を受け、PHPが二つの重大なメモリ安全性の欠陥を修正。攻撃の試みも報告され、成立条件は構成により異なる。

公開日 更新日
PHP2ShellPHPAI支援の調査リモートコード実行セキュリティ更新メモリ安全性

PHPは10月21日、PHP2Shellと総称される二つの重大な脆弱性に対する緊急セキュリティ更新を公開した。調査にはCalif、OpenAI、Wizが関与した。修正版はPHP 8.5.12、8.4.27、8.3.36、8.2.35。CVE-2026-109618とCVE-2026-109619はいずれもCVSS 4.0の深刻度スコアが9.2で、必要な条件がそろうと認証なしでコードを実行できる。研究者は機密情報を含むプロセスメモリの漏えいも実証した。

両方のアドバイザリは、この四つのブランチで修正版より前のリリースを影響対象としている。研究者は影響するコードをPHP 5.4までさかのぼって確認しており、何世代ものアプリケーションにまたがる実行環境の問題となる。PHPの警告対象にはApache mod_php、PHP-FPM、php-cgi、FrankenPHP、LiteSpeedなどのWeb構成が含まれる。アプリケーション自体のコードが安全でも、脆弱な実行環境によってリスクが生じ得るが、攻撃経路は構成とリクエストのライフサイクルに依存する。

CVE-2026-109618は、メモリ不足時の処理に関わる。PHPは従来、非局所ジャンプで処理を打ち切っていたため、内部のリクエストデータの初期化が完了する前に操作が中断されることがあった。その後の後処理が未完成のデータを有効なものとして読み、メモリ破壊につながる。これはエラー処理と初期化の不備だ。パッチでは急な脱出を安全な実行地点での制御された応答に置き換え、さらに高いメモリしきい値ではプロセスを直ちに終了する。

CVE-2026-109619は、メモリを所有していたリクエストより長く残る内部状態に関わる。致命的エラーや終了処理中の一部の診断によって、常駐ワーカーが解放済み領域への参照を保持することがある。同じワーカーが次のリクエストを処理すると、通常の初期化で消去する前に古い値を使う可能性がある。アドバイザリはPHP 8.5の致命的エラーのバックトレースと、セッションのアップロード進捗に関する事例を確認している。悪用には、状態を残す操作と、その状態を後で利用する操作の両方が必要になる。

評価上、リスクが最も高いのはApache mod_phpだ。実証された攻撃は、アプリケーションのコードが動く前に脆弱な処理へ到達できる。PHP-FPMはリクエスト開始に失敗するとワーカーを終了するため、この特定の流れは阻止される。一方、古い状態のアドバイザリは、起動成功後に中断された操作が次のリクエストへ状態を残す、アプリケーション依存のFPM経路を確認している。深刻度の指標には、権限や利用者の操作が不要であることとともに、高い攻撃複雑度や追加の実行条件も記されている。

OpenAIによると、CalifはPatch the Planetの取り組みを通じてGPT-5.6 Solを使い、重大な欠陥を発見した。PHP Foundationは、Califの研究者Ryan Aが8月11日に問題を報告し、OpenAIも同じ日に同一の根本原因を独立に報告したと記録している。Califの説明は、PHPの脆弱性の歴史を知る研究者の知識が調査の方向付けに役立ったとしている。初期の発見は、未公開モデルや専用のテストハーネスに依存しなかった。

Wizも独立して調査し、8月24日に発見を報告した。チームはWiz Atlas、Gemini 4 Argon、GPT-5.6 Solを使用し、特にArgonが発見、検知、パッチ検証で大きく貢献したと説明した。WizはWordPress、Drupal、Joomlaのテスト環境で攻撃を実証し、別にメモリ漏えいも示した。その説明では、あらゆるPHP環境に一つの攻撃手段が自動的に通用するのではなく、異なるメモリ配置への適応と反復テストが必要だった。

修正と公開を主導したのはPHPの保守担当者だ。Foundationによると、OSTIFの調整でQuarkslabが2024年に実施した監査の指摘に対応する中で、すでにメモリ枯渇問題の兆候が見つかっていた。互換性、性能、拡張機能に関する取捨選択が解決を遅らせた。OpenAIは調査支援とインフラ事業者との調整を行い、Foundationは修正に当たる技術者へ資金を提供した。新たな報告は、それまで悪用の可能性が未実証だった問題について、実際の影響を示した。

10月20日にCVE番号が出回り始めたため、公開日程は前倒しされた。Foundationは、調整していた公開日時を10月22日14時UTCから10月21日14時UTCへ変更した。配布事業者にはパッケージを完成させる時間がまだ必要だったとしている。その後Califは、限られた追加情報を明らかにする実証動画を誤って投稿し、後に削除した。修正と技術アドバイザリは現在、公開されている。

Cloudflareは、無料または有料のWAFを使う顧客に対し、10月21日03時02分UTCに既定の保護を提供したと述べ、ペイロードを変化させようとする攻撃トラフィックも報告した。一方、Foundationは公開時点で、自ら確認した流通中の概念実証には動作する攻撃を見いだしていなかったと説明した。これらの観察から、侵害されたサーバー数を確定することはできない。Cloudflareは引き続きPHPへのパッチ適用を求め、PHPも設定変更やフィルタリングの保護は部分的だとしている。

ディストリビューションや長期サポート事業者には事前にパッチが渡されており、バックポートしたパッケージが提供される場合がある。PHP 8.1以前は通常の上流セキュリティサポートの対象外だが、深刻さを踏まえ、プロジェクトは7.4、8.0、8.1向けに最小限のソース修正を提供した。この例外的な修正によって古いブランチのサポートが復活するわけではない。ホスティングされたアプリケーションの対処は、運営者が提供するPHP実行環境に依存し、コンテンツ管理システムの更新だけでは代わりにならない。