PHPの重大な脆弱性「PHP2Shell」とは何か~誰でもわかる解説と、これから起こりうること(前)
世界中のホームページやネットサービスを支えるプログラム言語「PHP」に、認証なしで外部からサーバー上で任意のコードを実行される恐れのある重大な脆弱性が見つかった。「CVE-2026-109618」と「CVE-2026-109619」の2件で、これらを組み合わせた攻撃は「PHP2Shell」と呼ばれている。
PHP開発チームによる深刻度の評価はいずれもCVSS v4.0で9.2の「Critical」。修正版となるPHP 8.5.12、8.4.27、8.3.36、8.2.35が10月21日に公開された。開発元は完全な緩和策はなく、更新が唯一の安全な選択肢としている。
問題の大きさは、PHPが極めて広く利用されていることにある。W3Techsによると、サーバー側のプログラム言語が判別できるWebサイトのうち、PHPを利用する割合は2026年8月時点で70.3%に上る。企業ホームページやブログだけでなく、ネットショップ、予約・会員サービス、学校や自治体のWebサイト、社内システム、ゲームや各種Webサービスなど、その用途は幅広い。
WordPressではなく
「その下」にある問題
PHPは、Webサイトの表側ではなく「裏側」で動くプログラム言語だ。ボタンを押したら注文が確定する、ログインすると自分のページが表示されるといった処理をサーバー側で担っている。
たとえるなら、WordPressなどのアプリが「ビルの上に建てた店」だとすれば、PHPは「ビルそのものの基礎」に当たる。今回は店の鍵ではなく、基礎部分にひびが見つかったようなものだ。WordPress側のパスワードやログイン画面をいくら強化しても、PHP本体で攻撃が成立すれば防ぐことはできない。
今回問題となったのは、PHPがWebからの要求を受け取って処理の準備をし、処理終了後に後片付けをする基礎的な部分だ。
一つ目のCVE-2026-109618は、開発元が「RCE via OOM corruption」と呼ぶ、メモリ不足時の処理不備によるメモリ破壊に関する問題だ。工事中に資材が足りなくなって足場の組み立てが途中で止まったにもかかわらず、完成済みだと思い込んでそのまま使ってしまうような状況にたとえられる。
もう一つのCVE-2026-109619は、「RCE via stale global state」とされる問題で、解放済みのメモリを指す状態が残ってしまう。ホテルで前の宿泊客がチェックアウトしたにもかかわらず、古い部屋の案内表示が残り、次の宿泊客にも使われてしまうような状態だ。
攻撃では、攻撃者が細工した通信を送り、WordPressなどのアプリが動き始めるより前のPHP本体の段階で異常を起こさせる。その結果、サーバー上で任意のコードを実行し、情報の窃取や改ざん、別の攻撃の踏み台として利用される可能性がある。
「ログイン不要」
「アプリでは防げない」
今回の脆弱性が深刻視される理由はいくつかある。
まず、IDやパスワードをもっていない外部の攻撃者でも、インターネット経由で攻撃が成立する可能性がある。しかもWordPressなどのアプリケーションより手前で問題が起きるため、アプリ側のセキュリティー設定だけでは防げない。
さらに、攻撃に成功してもエラーにならない場合があると報告されており、「サイトが正常に動いているから無事」とは限らない。発見者は、PHPのワーカーが扱っていたメモリの内容を外部から読み取れる場合もあり、そこにほかの利用者のログイン情報や各種の鍵が含まれている可能性も指摘している。
発見者のWizによると、過去10年間のすべてのPHPには少なくともどちらか一方の欠陥が含まれており、PHP 5.4まで遡るという。PHP 5.4は2012年に公開されている。
PHP開発チームは10月21日、修正版を公開した。PHP 8.5系は8.5.12、8.4系は8.4.27、8.3系は8.3.36、8.2系は8.2.35への更新が必要になる。
注意が必要なのはPHP 8.2だ。8.2.35へ更新すれば今回の脆弱性には対応できるが、PHP 8.2そのもののサポートは2026年12月31日に終了する。8.1以前はすでにサポートが終了しており、公式の修正版リリースはない。開発元は7.4、8.0、8.1向けに最小限の修正ソースを提供しているものの、実質的には新しいバージョンへの移行が必要になる。
修正版が出る前から始まっていた攻撃
今回の問題でもう一つ重要なのは、脆弱性が公表され修正版が出た後に攻撃が始まったのではなく、修正版の公開前から攻撃の試みが観測されていたことだ。
開発側は24年、外部監査にともなう修正作業の過程で一方の欠陥の兆候を把握していた。ただし当時は攻撃経路が具体化しておらず、リソース不足もあって対応が長期化したとされる。
26年8月には、OpenAIの取り組み「Patch the Planet」の一環であるCalifと、セキュリティー企業Wizが、それぞれ独立して問題を発見し、PHP側に報告した。Wizは調査にAIモデルを活用したと説明している。
ところが10月17日、Amazon Web Services(AWS)の観測網「MadPot」が、脆弱性の公表4日前の時点ですでに攻撃の試みを観測した。10月20日には公表前に情報が流出し、PHP公式は翌21日14時(UTC)に重大な修正版を公開すると予告した。
21日の日中には、修正版が出る前から実証コードが出回り、国内でも報道が相次いだ。同日夕方から夜にかけて、コドモン、「Shadowverse: Worlds Beyond」、さくらのレンタルサーバなどが緊急メンテナンスを実施し、BASEなども対応を予定・実施した。これらは予防的な措置であり、被害が発生したことを示すものではない。
21日22時前には、高市首相が自身のXで「今夜に対応して頂きたい大至急のお願い」と投稿し、パッチの適用が難しい場合にはサイトの一時停止も有効策の一つだと言及した。国家サイバー統括室も同様の発信を行った。
同日23時ごろ、PHP開発チームが修正版を公開し、米サイバーセキュリティー・社会基盤安全保障庁(CISA)も即時修正を勧告した。10月21~22日にはIPAとJPCERT/CCも注意喚起を公表したと報じられている。
24年に日本企業も狙われたPHPの脆弱性「CVE-2024-4577」では、修正版公開から間もなく攻撃コードが出回り、その後ランサムウェア集団などにも悪用された。今回はそれよりさらに早く、公表前から攻撃の試みが観測されたことになる。
背景の一つとして、脆弱性の発見や攻撃手順の組み立てにAIが利用されるようになったことが挙げられている。AWSも、修正から攻撃までの時間が短くなっていると指摘する。「次の定期メンテナンスでまとめて更新する」という従来型の運用では、間に合わない可能性が出てきた。
(つづく)
【Hayate Kirishima】















