PHP2Shellとは:PHPの重大な脆弱性2件を解説
PHP2Shellは、9.2と評価されたPHPの脆弱性2件の総称で、1回のリクエストでWebサーバーを乗っ取られるおそれがあります。その仕組み、影響を受ける環境、そして完全な対策を解説します。
6 分で読めます
英語の原文から機械翻訳したものです。原文はClaire Whitmoreが事実確認と編集を行いました。内容に相違がある場合は英語版が優先されます。 編集方針

数字で見る
- CVSS v4.0 score PHP gives each flaw
- 9.2
- date CISA listed both flaws as exploited
- Oct 26
- internet-exposed hosts running PHP, per one Shodan search
- 1.9M+
PHP2Shellは、PHPに見つかった2件のセキュリティ上の欠陥の通称です。PHPは、WordPressやDrupalをはじめ、多くのWebサイトを動かしているプログラミング言語です。2件はCVE-2026-109618とCVE-2026-109619として追跡されており、PHPは2026年10月21日に両方を修正しました。PHPはそれぞれを10点満点中9.2と評価し、アカウントを持たない攻撃者でもインターネット経由で悪用できるとしています。
10月26日、事態はさらに深刻になりました。Tenableによると、この日、米国のサイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)が、悪用が確認されているバグのカタログに両方の欠陥を追加しました。連邦政府の民間機関は、10月29日までに修正しなければなりません。
PHP2Shellとは何か、誰が発見したのか
PHP2Shellは、2件の別々のバグをまとめて呼ぶ名前です。誰がこの名前を付けたのかについては、説明が分かれています。Recorded FutureのInsikt Groupによると、Wiz Researchがセキュリティ企業のCalifおよびOpenAIと協力してこれらの欠陥を発見し、名前を付けました。Tenableは、この名前の由来を、研究者のKirill Firsov氏が共有したエクスプロイトチェーンの動画にあるとしています。Firsov氏は、Calif.ioのLCFRの功績だとしています。
PHP Foundationは、Calif、OpenAI、Wizなどの功績を認めています。CalifとWizはいずれも、研究にAIモデルを使ったと述べています。Tenableによると、Califは、影響を受けるコードパスのうち最も古いものはPHP 5.4.0にさかのぼるとしています。
2件の欠陥の仕組み
どちらのバグも、PHPがWebリクエストのたびに開始時と終了時に実行するコードにあります。このコードは、WordPressのプラグインなど、サイト自体のコードが動く機会を得る前に実行されます。
Webサーバーは、ワーカーと呼ばれる長時間稼働するPHPプロセスをまとめて保持しています。各ワーカーは1つのリクエストに応答し、後片付けをして、次のリクエストを受け取ります。この再利用のため、あるリクエストの残りが次のリクエストに影響することがあります。
| CVE | PHPによる名称 | 何が問題か |
|---|---|---|
| CVE-2026-109618 | OOM corruption(メモリ不足による破損) | リクエストの内部データを作る途中で、PHPがメモリ不足に陥ります。その後、後片付けの処理が作りかけのデータを有効なものとして扱います。 |
| CVE-2026-109619 | Stale global state(古いグローバル状態) | あるリクエストのデータが、解放済みのメモリを指したまま残ります。同じワーカー上の次のリクエストが、PHPがそれをリセットする前に使ってしまうことがあります。 |
OOMは「out of memory」、つまりメモリ不足の略です。どちらの欠陥にも、プログラマーが解放後使用(use-after-free)バグと呼ぶものが関わっています。これは、プログラムがメモリの一部を返却した後も使い続けてしまうバグです。そのメモリに何が入るかを制御できる攻撃者は、プログラムを思いどおりに操れます。
Recorded Futureによると、これらのバグには、セッションのアップロード進捗データを読み取るコードでの解放後使用が含まれます。これは、ファイルのアップロードを追跡するためのPHPの機能です。Recorded FutureはVirusTotalのデータを引用し、この機能はバージョン5.4.0からPHPにあり、デフォルトで有効になっていると報じています。関連するバグの1つは、ワーカーのメモリを漏えいさせます。Wizによると、これにより他の人のリクエストに含まれるパスワード、ログイントークン、APIキー、証明書が露出するおそれがあります。
PHP2Shellの影響を受けるのは誰か
PHPは、Webリクエストを処理するすべてのインストール環境が影響を受ける可能性があるとしています。名前が挙がっているのはPHP-FPM、mod_phpを使ったApache、php-cgi、FrankenPHP、LiteSpeedで、これらはWebサーバーがPHPを動かす主な方法です。PHPは、Apache Webサーバー自体の中でPHPを動かすmod_phpを、最もリスクが高いと評価しています。mod_phpでは、ログインなしの1回のリクエストで、アプリケーションのコードが動く前に、実証済みのエクスプロイトを作動させられます。
攻撃はどこでも成功するわけではありません。セキュリティ企業のField Effectは、成功するかどうかはPHPのバージョン、OS、Webサーバー、ワーカーの設定、メモリレイアウトによって決まるとしています。同社は、攻撃は「影響を受けるすべての環境で一様に確実に機能するわけではないようだ」と書いています。
それでも研究者たちは、人気のあるアプリを完全に乗っ取れることを示しています。Tenableによると、Califは、WordPress、Drupal、Joomla、Magentoの特定のバージョンで、ログインなしのコード実行を確認しました。Trail of Bitsは、MediaWiki、Symfony、Laravel、phpBBでシェルを取得しました。シェルとは、サーバーをコマンドラインで操作できる状態のことです。
PHPは、PHPだとは思われていない製品の中にも潜んでいます。Field Effectは、影響を受ける製品を持つベンダーとして、Palo Alto Networks、Citrix、F5、HPE、NetApp、QNAP、Trend Microを挙げています。Help Net Securityは10月22日、Palo Altoが同社のPAN-OSとPanoramaソフトウェアのすべてのバージョンが影響を受け、修正版はまだ出ていないと述べたと報じました。
Tenableは、Henk Poley氏によるShodanでの検索結果を引用しています。それによると、PHPを実行していてインターネットに公開されているホストは190万台を超えます。PHPを実行しているだけで、サーバーが脆弱になるわけではありません。
何がいつ起きたか
| 日付(2026年) | 出来事 |
|---|---|
| 8月19日 | WizがAIを活用した研究ツールで最初の欠陥を発見 |
| 8月24日 | WizがPHPのセキュリティチームに欠陥を非公開で報告 |
| 9月21日 | PHPが報告を確認し、修正に着手 |
| 10月17日 | Amazonのおとりサーバーが攻撃の試みを記録 |
| 10月20日 | PHPが翌日に緊急リリースを行うと発表 |
| 10月21日 | PHPが8.5.12、8.4.27、8.3.36、8.2.35を公開する数時間前に、詳細がネット上に流出 |
| 10月23日 | PHPが、別のアップロード進捗の欠陥であるCVE-2026-115560を公表 |
| 10月26日 | Trail of Bitsが動作するエクスプロイトを報告。CISAが両方の欠陥を悪用確認済みとして登録 |
PHP Foundationによると、PHPはリリースを10月22日に予定していましたが、流出を受けて前倒ししました。私たちは事前告知と、続く10月21日のリリースを、それぞれ発生時にお伝えしました。Amazonはその後、同社のハニーポットが公表の4日前に攻撃の試みを捉えていたと発表しました。ハニーポットとは、攻撃者をおびき寄せるために作られたおとりのサーバーです。Amazonは、攻撃者がどうやって事前に詳細を入手したのかは分かっていないとしています。
リリース時点でPHP Foundationは、ネット上に出回っているコードの中に「機能するエクスプロイトは確認されなかった」と述べていました。それは数日のうちに変わりました。Tenableによると、PHP 8.4.26を動かしていたある研究者のハニーポットが10月24日に攻撃を受けました。Trail of Bitsは10月26日までに、PHP 8.2から8.5に対して動作するエクスプロイトを手にしていました。それでもRecorded Futureは、「入手できる報告からは、攻撃の成功や侵害の確認がどこまで及んでいるかの全容は明らかになっていない」と注意を促しています。
10月23日の欠陥は別の問題で、10月21日のリリースでは修正されません。PHPはこれを「セッションのアップロード進捗における、可能性の低いリモートコード実行の経路」と呼んでいます。Field Effectによると、影響を受けるのは、アップロード進捗が有効な状態で、プログラムの実行中にsession_start()を呼び出す前にsession.serialize_handlerを変更するアプリです。
開発者にとっての意味
更新だけが完全な対策です。それ以外はすべて時間稼ぎにすぎません。
- 更新し、すべてのワーカーを再起動する。 修正版は8.5.12、8.4.27、8.3.36、8.2.35です。Tenableは、新しいパッケージを入れても、すでに動いているプロセスにはパッチが当たらないと指摘しています。Califによると、古いコードは再起動するまでメモリに残ります。
- サーバーが探査を受けていた場合は、先にメモリを保存する。 Google CloudがMandiantと共同で作成したガイダンスは、再起動する前にワーカーのメモリを取得するよう勧めています。再起動すると証拠が消えてしまいます。
- 設定の変更は応急処置として扱う。 1つ目の欠陥に対するPHPの暫定的な対策は
memory_limit=-1で、アプリが上書きできないように設定します。2つ目に対してはsession.upload_progress.enabled=0で、PHP 8.5ではさらにfatal_error_backtraces=0も加えます。 - セッションのコードでCVE-2026-115560を確認する。 アプリが
session_start()の前にsession.serialize_handlerを変更している場合は、PHPの次の定例リリースまでアップロード進捗を無効にしてください。 - SimpleXMLのクラッシュに注意する。 Tenableによると、8.4.27と8.5.12にはリグレッション(php-srcのissue #24488)があり、一部のSimpleXMLアプリがクラッシュするおそれがあります。修正はマージされましたが、10月26日時点ではリリースされていません。
- 自社のサーバー以外にも目を向ける。 ファイアウォール、ストレージ機器、セキュリティツールにはPHPが組み込まれていることがあるため、各ベンダーのアドバイザリーを読んでください。ログは10月17日までさかのぼって確認してください。
- PHP 7.4から8.1までを使っているなら、アップグレードを計画する。 これらのブランチには最小限のソースパッチしか提供されず、公式リリースは出ません。ディストリビューションやサポートベンダーに、バックポートについて問い合わせてください。
出典
- PHP2Shell (CVE-2026-109618, CVE-2026-109619): Frequently asked questions about critical PHP remote code execution vulnerabilities - Tenable
- PHP2Shell Exploitation: Two Critical PHP Flaws Explained - Recorded Future
- PHP2Shell: Critical PHP vulnerabilities patched, update now! - Help Net Security
- Another PHP issue identified while vendors report affected products - Field Effect
関連記事

PHP 8.5.12と8.4.27、重大なRCE脆弱性2件を修正
PHPは10月21日に8.5.12、8.4.27、8.3.36、8.2.35を公開し、9.2と評価されたリモートコード実行(RCE)の脆弱性2件を修正しました。PHPは、更新だけが完全な対策だとしています。

PHP、評価9.2の重大な脆弱性2件の緊急修正を予定
PHPは10月21日14:00 UTCに、9.2と評価された重大な脆弱性2件の修正をリリースします。パッチが提供されるのは8.2から8.5のみで、詳細は1日早く流出しました。

Drupal Commerce Coreの脆弱性が悪用中、3.3.13へ今すぐ更新を
攻撃者がDrupal Commerce Core(ドルパル・コマース・コア)の「Highly critical」なアクセスバイパス脆弱性CVE-2026-118539を使い、不正注文を行っています。修正版は3.3.13と8.x-2.41です。