PHP2Shellとは? PHPの重大な脆弱性2件、修正バージョンと対応の優先順位
PHP2Shell(CVE-2026-109618・109619)の影響バージョン、修正版、10月17日からの悪用試行、更新の優先順位を整理します。
PHP2Shellとは? PHPの重大な脆弱性2件、修正バージョンと対応の優先順位
PHP2Shellは、PHP本体に見つかった2件の脆弱性 CVE-2026-109618 と CVE-2026-109619 の通称です。PHPチームはどちらもCVSS v4.0で9.2(Critical)と評価し、条件が揃えば、認証なしの攻撃者がサーバー上でコードを実行できる可能性があるとしています。完全な対策は 8.5.12、8.4.27、8.3.36、8.2.35 のいずれかへの更新だけで、2026年10月21日に公開されました(PHPの告知)。PHP 8.1以前には公式リリースがありません。PHPのセキュリティチームは7.4、8.0、8.1向けに最小限のソースバックポートを公開しており、ベンダーによってはバックポート済みのパッケージを提供しています。もう一つの道は、サポート中のブランチへの移行です。
急ぐ理由はタイミングです。Amazon Threat Intelligenceは、パッチ公開の4日前の 10月17日 に、自社のハニーポットでPHP2Shellの悪用試行を確認しました。Amazonは、それらの試行が実環境で成功し得たかは不明だとしており、本記事で確認した情報源に、侵害を確認したという報告はありません。
要点
| |
|---|
| 通称 | PHP2Shell |
| CVE | CVE-2026-109618(メモリ不足時のメモリ破壊によるRCE)、CVE-2026-109619(後続リクエストに残る古い状態によるRCE) |
| スコア | 2件ともCVSS v4.0で9.2 Critical(PR:Nはログイン不要、AC:H/AT:Pは攻撃の複雑さが高く、対象側に特定の条件が必要という意味) |
| 攻撃者にできること | ログインなしでのコード実行。権限はPHPを動かすWebワーカーのもの |
| パッチ公開 | 2026年10月21日 14:00 UTC |
| 修正バージョン | 8.5.12、8.4.27、8.3.36、8.2.35(8.1以前は公式リリースなし) |
| 影響を受ける構成 | Webリクエストを処理するすべてのPHP(mod_php、PHP-FPM、php-cgi、FrankenPHP、LiteSpeed)。PHPはmod_phpを最も危険と評価 |
WordPressやLaravelの問題ですか
いいえ、PHP本体の問題です。分析したセキュリティ企業Sansecは、PHPエンジン内のバグなので、アプリ側のコードに問題がなくても影響を受けると述べています。WordPressでもLaravelでも自社開発でも、アプリを更新するだけでは、その下で動く未修正のPHPは直りません。
攻撃が成立する条件
AWSとPHPプロジェクトによれば、弱点はアプリのコードが動き出す前に、PHPが multipart/form-data のリクエストを解析する部分にあります。つまり、ファイルアップロード機能があるかどうかは境目になりません。2件のCVEでは成立条件が異なります。
- CVE-2026-109618では、mod_phpが最も高リスクで、コード実行も検証されています。 PHPのアドバイザリーによれば、認証なしのリクエストでアプリのコードが動く前に引き起こせ、既定の制限値とpreforkワーカーのApache mod_phpでコード実行が検証済みです。PHP-FPMについては、このCVEに関する記述が分かれています。アドバイザリーは完全なエクスプロイトは未実証としつつ影響を受け得るとし、PHP Foundationの投稿はアプリ側のコード経由でのコード実行を確認したとしています。FPMを安全と見なさないでください。
- CVE-2026-109619には、同じワーカー上の2つのリクエストが必要です。 古い状態を残す側(producer)と、通常の初期化の前にそれを使う側(consumer)です。確認済みのproducerの例は、既定で有効で
PHP_SESSION_UPLOAD_PROGRESS フォームフィールドから引き起こされるセッションのアップロード進捗機能と、PHP 8.5で有効にした場合の fatal_error_backtraces です。これは例であり、トリガーの全リストではありません。
悪用の難しさには見解の相違があります。Sansecは10月22日、試した公開PoCは既定のPHP環境では動かず、多くはアプリ側のローカルファイルインクルージョンの欠陥を必要としたと報告しました。だからといって待ってよいわけではなく、PHPは更新するよう明言しています。
影響を受けるバージョン
| PHPブランチ | 状況 | 対応 |
|---|
| 8.5.x | 8.5.12で修正 | 8.5.12以降へ更新 |
| 8.4.x | 8.4.27で修正 | 8.4.27以降へ更新 |
| 8.3.x | 8.3.36で修正 | 8.3.36以降へ更新 |
| 8.2.x | 8.2.35で修正。ブランチは2026年12月31日で終了 | 8.2.35へ更新し、ブランチ移行を計画 |
| 8.1以前 | 公式リリースなし | ベンダーのバックポート済みパッケージ、またはPHPの最小限のソースバックポート(7.4、8.0、8.1のみ)。それより古いものは、検証済みのベンダー修正か移行 |
修正版を適用した後は、watchTowrが勧めるとおり、すべてのPHPワーカーを再起動してください。これは、後述する設定変更後の再起動とは別に必要です。
表からは読み取れない点が2つあります。
- CVEの記録に載っているのは8.2〜8.5だけですが、8.1以前が安全という意味ではなく、公式リリースが出ないだけです。Tenableは報告者(Calif)の解説を引用し、問題のコードはPHP 5.4.0まで遡ると述べています。これは第三者の分析で、PHPの公式見解ではありません。
- バージョン番号ではなく、パッケージの修正状況を確認してください。 ディストリビューションやLTSベンダーには事前にパッチが渡されており、古いバージョン番号のまま修正だけを取り込んだ(バックポートした)パッケージがあり得ます。逆に、Sansecによれば公式Dockerイメージ
php には8.1以前の修正版がありません。
その前提として、PHPがどこで動いているかを把握する必要があります。ホストごと・パッケージごとのインベントリにサポート終了(EOL)の情報を重ねれば、どのホストにどのバージョンのPHPがあり、どれがサポート終了済み(8.1以前)または終了間近(8.2は2026年12月31日)かが分かります。zcrXでは、ホストに置いたAgentが、CVEアドバイザリーと照合したホスト・パッケージ単位の検出結果を、CISA KEVとEPSSの情報とともに報告し、ソフトウェア製品ごとのライフサイクルとEOLを追跡します。zcrXがPHP2Shellを検知する、またはこの2件のCVEを表示するとは、本記事では述べていません。
すでに悪用されているのか
Amazon、PHPチーム、研究者の報告による時系列です(UTC)。
- 10月17日 AmazonのハニーポットMadPotで、商用の匿名化ネットワーク上のIPからの最初の試行を確認。
- 10月20日 CVE番号が誤ったスコア10.0とともに流出。PHPはリリースを22日から21日へ前倒しし、報告者の1人が動作するPoCの動画を誤って公開。
- 10月21日 02:00〜08:00 Amazonが複数のPoCのうち最初のものを確認し、別の匿名化基盤からの試行も観測。
- 10月21日 14:00 パッチ公開。PHPチームはこの時点で動作するエクスプロイトは見つかっていないとしていますが、数時間のうちにPoCは増えました。
Amazonは「広範な悪用試行」を確認しつつ、実環境で成功し得たかは不明としています。カナダのサイバーセキュリティセンター(10月21日)は悪用を確認しておらず、watchTowrによれば10月22日時点でどちらのCVEもCISAのKEVカタログに未登録で、Dataminrが観測したのはスキャンと動作しないエクスプロイトだけです。確認した情報源に、侵害を確認したという報告はありません。
Amazonはまた、公開日ではなく10月17日から調査を始めるよう勧めています。数日ごとにログを消していると、その期間を確認できなくなるおそれがあります。ログを十分な期間残すことはzcrLogの中心的な役割で、保存期間は90日から2年まで設定できます。ただし、保存しているだけでPHP2Shellの証拠になるわけではありません。標準的なアクセスログは通常リクエストの本文を記録しないため、確認できる範囲は収集していた項目次第です。また、本記事はzcrLogがApacheやPHP-FPMのログを収集するとは述べていません。
何から優先して更新するか
カナダのサイバーセキュリティセンター、NCSC、watchTowrは、インターネットに公開されたシステムから着手するよう一致して述べています。以下はそれにPHP自身のリスク評価を重ねた順序で、公式のものではありません。
- インターネットに公開され、Apacheとmod_phpで動くサーバー。PHPが最も危険とする構成です。
- リクエスト本文やファイルアップロードを受け付けるその他の公開サイト(PHP-FPM、FrankenPHP、LiteSpeedなど)。
- PHPを同梱する製品、アプライアンス、コンテナ(カナダのセンターとNCSCも注意喚起)。ベンダーに更新版の有無を確認します。
- PHP 8.1以前で動くもの。 公式リリースはないため、ベンダーのバックポート済みパッケージか、PHPのソースバックポート(7.4、8.0、8.1のみ)を使います。それより古いものは、検証済みのベンダー修正か移行です。間に合わない場合、NCSCはシステムの遮断を検討するよう述べています。
- インターネットに公開されていない社内システム。 後回しでも、忘れないでください。
このチェックリストで、ホストごとのバージョン一覧がまだないと分かった場合は、料金ページで役立つソフトウェアをご確認ください(パッチ適用自体は購入を待たずに進めてください)。
Amazonは経営層に対し、インターネットに公開されたシステムの重大な脆弱性については、パッチ適用を日や週ではなく時間単位で測るよう勧めています。すぐに更新できない場合も、PHPは設定だけで安全になる方法はないとしています。session.upload_progress.enabled=0 と、PHP 8.5では fatal_error_backtraces=0 を、php.ini、FPMプール、またはサーバー設定で指定し(ini_set() や .user.ini ではなく)、すべてのPHPワーカーを再起動しても、リスクが部分的に下がるだけです。fatal_error_backtraces=0 で塞がるのは、確認済みのfatal backtraceの経路だけです。
「WAFがあるから大丈夫」とは言えない
まだ言えません。WAFは入ってくるリクエストをフィルタするだけで、脆弱なPHPはそのまま残るからです。AWSの手引きは、この点を明確に記しています。マネージドルール PHP2Shell_BODY(AWSManagedRulesPHPRuleSet バージョン2.3)の対象はCVE-2026-109619で、CVE-2026-109618にはCore rule setの SizeRestrictions_BODY を推奨しています。同じ投稿によれば、一部の条件はサーバー設定の中にあってAWS WAFの対象外で、AWS WAFはmultipart本文の内部を解析せず、アップロードがあるアプリではリスクを下げても穴は塞がりません。AWS自身が、PHPのアップグレードが唯一の完全な対策だと結論づけています。Sansecも、攻撃はアプリのコードや自社製品のSansec Shieldより前、PHPの内部で起きると述べています。また、WAFを迂回したリクエストは、そのWAFでは選別されません(TenableはCloudflareのルールについてこの点を指摘しています)。
zcrWAFは、WebサイトとAPIへのトラフィックをオリジンに届く前に選別し、Allow・Block・Challengeのカスタムルールを設定でき、セキュリティログも保持します。zcrWAFがPHP2Shellを検知またはブロックするとは、本記事では述べていません。どのWAFもパッチの代わりにはなりませんが、公開サイトの手前に何も置いていない場合は、更新と並行して検討する価値があります。zcrWAFはCloud/SaaS、Virtual Appliance、ICT Hardware Applianceの構成で、見積りは案件ごとです。製品画面はデモページにあります。基本はWAFとは?とOWASP Top 10とWAFをご覧ください。
この記事で分からないこと
自社のサイトがすでに侵害されているかは分かりません。それには実際のサーバーのログ、ファイル、プロセスの確認が必要です。出回っているPoCが自社の設定で動くかどうかも、本記事では判断できません。これとは別に、侵害されたサイトの件数を公表している情報源は、確認した範囲ではありません。内容は2026年10月23日時点のものですので、判断の前にphp.netを再確認してください。
PHP2Shellシリーズ
本記事は概要編です。作業ごとの詳細は次の記事をご覧ください。
- すべてのサイト、コンテナ、ホストが実際に動かしているPHPのバージョンを確認する
- PHP2Shellのパッチ適用前にWAFができること、できないこと
- WebサーバーとPHP-FPMのログから攻撃の痕跡を探す
- PHPサイトはすでに侵害されているかもしれない: Webシェル、封じ込め、証拠保全
ソフトウェアについてのご相談やパートナーのご紹介は、お問い合わせまたは以下の窓口からzcrまでご連絡ください。実際の診断、パッチ適用、インシデント対応はパートナーを通じて提供しています。
出典
関連記事
背景となる関連ガイドです。
関連製品
導入範囲とパートナーに確認すべき前提条件は、zcrWAF、zcrX、zcrLogで確認できます。公開価格は料金ページにあります。