10月21日、PHP Foundationが「Today's PHP Security Release, and How We're Strengthening PHP Security」と題した記事を公開した。
PHPを本番環境で運用しているチームは今すぐアップデートを確認してほしい。10月21日にリリースされたPHP 8.5.12・8.4.27・8.3.36・8.2.35は、未認証の攻撃者によるリモートコード実行(RCE)を可能にする2件の重大な脆弱性を修正している。PHPはWordPressをはじめとするCMSを通じて全ウェブサイトの約77%で動作しており、この脆弱性の影響範囲は極めて広い。さらに今回は協調開示(脆弱性発見者・開発者・ベンダーが合意したタイミングで同時に情報公開する手法)の直前に概念実証(PoC)動画が流出し、エンボーゴ(情報公開禁止期間)が破られるという混乱も重なった。
2つのRCE脆弱性——「ほぼ全てのリクエスト」が影響を受ける領域に潜んでいた
修正された脆弱性は以下の2件で、いずれもCVSSスコアは9.2だ(CVE IDは元記事の表記に従う)。
CVE-2026-109618(OOMによるメモリ破壊経由のRCE)
リクエストがPHPのmemory_limitに達した瞬間、PHPが未初期化の内部データを残したまま処理を続け、メモリが破壊される問題。Apache + mod_phpの構成ではアプリケーションコードが実行される前に、未認証のリクエストだけでトリガーできる。デフォルト設定でのRCEが実証されており、PHP-FPMでもアプリケーション経由でのRCEが確認されている。
CVE-2026-109619(古い内部状態経由のRCE)
致命的エラーが特定のタイミングで発生した場合、内部状態が前リクエストのメモリを指したままになる問題。同じワーカーが処理する後続のリクエストが解放済みメモリを参照するUse-After-Free(解放済みメモリへのアクセス)が発生し、Apache + mod_php上の実アプリケーションに対してRCEが実証された。
両脆弱性が厄介なのは、いずれもメモリ管理とエラーハンドリングという「ほぼ全てのリクエストが通過する」領域に潜んでいる点だ。影響範囲の広さゆえに深刻であり、同時に後方互換性・パフォーマンス・サードパーティ拡張への影響を考慮しながら修正することを困難にしていた。
2024年に兆候はあった——なぜ修正に2年かかったのか
CVE-2026-109618の最初の兆候が発見されたのは2024年に遡る。PHP FoundationがSovereign Tech Agencyの資金援助を受けて実施した、PHPとして初の外部セキュリティ監査がきっかけだ。監査はOSTIF経由でQuarkslabが担当し、その報告内容を修正する過程でPHPコア開発者がOOM問題の兆候を発見した。
当時、潜在的な悪用シナリオは理論上は想定されたが、具体的な攻撃経路は見つからなかった。セキュリティチームは複数の修正案を検討したものの、どれも「後方互換性の破壊」「新たなDoSの可能性」「多数のサードパーティ拡張への変更要求」というトレードオフを抱えており、コンセンサス方式で動くチームは決断を下せないまま修正作業は停滞と再開を繰り返した。
PHP Foundation自身、この点を率直に認めている。
「遅延は構造的な失敗だった。セキュリティチームの意思決定プロセスとリソース不足の両方が原因だ」
チームはその後、多数決での意思決定と妥協の奨励へとプロセスを変更している。
状況を変えた複数の外部監査とAIツールの台頭
転機となったのは2026年8月だ。PHP FoundationがOpenAIのPatch the Planetプログラムを通じて参加した監査で、セキュリティ企業Califの研究者(元記事でも匿名表記)が2024年に発見されていたOOM問題と同じ根本原因を持つ、無条件のRCEを8月11日に報告した。同日、OpenAIも独立して同じ根本原因を報告。さらに8月24日にはWiz、9月18日にはOpenAIが追加の攻撃ベクターを報告し、Trail of Bitsも並行して監査を実施している。
これらの報告により問題の全容が明らかになり、8月11日以降は最優先課題となった。週末を含め昼夜を問わず複数人が対応に当たり、「Foundationの資金援助なしには複数人をフルタイムでアサインすることは不可能だった」と記事は述べている。
AI活用の拡大により、セキュリティチームへの報告数は以前より大幅に増加している。7月1日以降だけで15件のCVEを公開し、無効・重複・再現不可と判断した報告は100件超にのぼる。AIは報告の検証や同一根本原因のグループ化に活用されているが、最終的な判断とパッチ作成は人間が担っている。
協調開示の崩壊——PoC動画流出とエンボーゴ破り
協調開示は予定リリース日の2日前まで順調に進んでいた。
10月20日15:00 UTC頃、2つのCVE IDがオンラインフォーラムやSNSで拡散し始めた。実際のCVSSスコア9.2に対して10.0という誤情報と誤ったリリース時刻が付随していたが(技術的な詳細の漏洩はなかった)、これを受けてPHPプロジェクトは事前告知を前倒しし、19:30 UTCに公開。リリース自体も10月22日から10月21日に繰り上げた。
さらに20:00 UTC頃、報告者の一社であるCalifが誤って概念実証(PoC)動画を公開した。複数ターゲットへの攻撃が映っており、削除後も拡散が続いたことで各種PoCの開発加速につながった。
決定的だったのは、10月21日7:41 UTC——協調リリースの6時間以上前にChainguardが修正済みのコンテナイメージを公開したことだ。パッチを事前に受け取っていた他のディストリビューターと同様にChainguardもパッチを受領していたが、他のユーザーがまだ更新できない状態でバイナリ形式のパッチが解析可能になった。記事はこれを「多くの関係者による数週間の協調開示の取り組みを無視した行為」と表現している。
広く使われるインフラを守る構造的課題
今回の一連の経緯は、広く使われているオープンソースインフラのセキュリティ対応がいかに少人数・少予算に依存しているかを改めて浮き彫りにした。2年越しの脆弱性修正、複数の外部監査、そして協調開示の崩壊——いずれも「人手とリソースがあれば早期に対処できた」問題であり、PHPに限らずオープンソースエコシステム全体が直面する構造的課題でもある。
PHP Foundationは企業・ホスティングプロバイダー・クラウドプラットフォーム・政府機関に対してスポンサーシップを呼びかけている。詳細はthephp.foundation/sponsorで確認できる。
詳細はToday's PHP Security Release, and How We're Strengthening PHP Securityを参照していただきたい。