PHP2Shell(CVE-2026-109618/CVE-2026-109619)のPoCがGitHubで急増、27件を確認 Amazonは公表4日前からサイバー攻撃の試行を観測

セキュリティニュース

投稿日時: 更新日時:

PHP2Shell(CVE-2026-109618/CVE-2026-109619)のPoCがGitHubで急増、27件を確認 Amazonは公表4日前からサイバー攻撃の試行を観測

PHP本体の重大脆弱性「PHP2Shell(php2shell)」を巡り、概念実証(PoC)コードの公開と悪用を狙う通信が相次いでいます。韓国のセキュリティ企業AhnLabは2026年10月22日、GitHub上の関連リポジトリ100件を調査し、PoCに分類される27件を確認したと公表しました。一方、Amazon Threat Intelligenceは10月21日、PHPの修正版公開より4日前となる10月17日から、自社のハニーポット「MadPot」で脆弱性の悪用を狙った試行を観測したと報告しています。

対象は、認証不要のリモートコード実行(RCE)につながる「CVE-2026-109618」と「CVE-2026-109619」の2件です。今回明らかになったのは、修正版公開前から攻撃の試行が始まっていたことに加え、公開PoCの品質がばらつき、攻撃コードを装った不審なプログラムを取得・実行する危険性も生じている点です。

PHP2ShellのPoC公開・悪用観測のサマリー

  • AhnLabは10月22日、GitHubの「php2shell」検索で取得したフォークを除く上位100件を分析し、99件が今回の脆弱性に関係すると確認しました。
  • 目的別の分類では、防御・診断・緩和・検知に関するリポジトリが46件、攻撃・PoC・再現ラボなどが36件でした。このうちPoCと分類されたものは27件です。
  • AhnLabが把握した最も早いPoCリポジトリの作成は10月20日19時16分(UTC、日本時間21日4時16分)でした。これはリポジトリの作成日時であり、その時点で実用的な攻撃コードが含まれていたことを示すものではありません。
  • Amazonは10月17日にMadPotで攻撃試行を初めて観測し、10月21日2時ごろ(UTC、日本時間11時ごろ)には複数の公開PoCを確認しました。
  • 修正版の公開後も新たなPoCが現れ、Amazonはそれらを用いたセンサーへの攻撃試行を短時間で観測したと説明しています。
  • GitHub上で「RCE成功」を主張するリポジトリもありますが、AhnLabの調査は名前・説明・トピックなどのメタデータに基づき、コード自体の検証は実施していません。
  • 脆弱性の根本対策は、修正済みPHPへの更新です。インターネットに公開していたサーバーでは、少なくとも10月17日以降のログを確認する必要があります。
項目 内容
脆弱性 CVE-2026-109618/CVE-2026-109619(PHP2Shell)
深刻度 いずれもCVSS v4.0 9.2(Critical)
主要調査 AhnLabのGitHub公開状況分析、Amazon Threat IntelligenceのMadPot観測
GitHub上のPoC分類 27件(AhnLabの調査対象・調査時点)
最も早いPoCリポジトリ作成 10月20日19:16 UTC(日本時間10月21日4:16)
Amazonの最も早い悪用試行観測 10月17日
公開PoCの状態 技術検証・不完全な実装・実用性未確認の主張が混在
根本対策 PHP 8.5.12/8.4.27/8.3.36/8.2.35、または正規ベンダーの修正済みパッケージを適用

AhnLabがGitHubを分析 PoC27件を含む関連リポジトリが急増

AhnLabの分析は、10月22日13時30分(日本時間・韓国時間)に収集したリポジトリ一覧を対象としています。フォークを除く上位100件のうち99件がPHP2Shell関連でした。目的別に見ると、防御・評価・緩和・検知が46件、攻撃・PoC・再現ラボなどが36件です。これらは排他的に全100件を分類した内訳ではありません。

GitHubのスター数は調査対象全体で1,394件、そのうちPoCに分類されたリポジトリに1,158件(約83%)が集中していました。上位2件は「ikow/php2shell-poc」の617件と「eness」のPoCリポジトリの333件で、両者が全体の約68%を占めました。スター数は関心の大きさを示す指標であって、脆弱性の悪用成功率やコードの安全性を示すものではありません。これらの数字は調査時点のスナップショットです。

一方、関連リポジトリには説明文がないものや、コードより先にリポジトリ名だけが登録された可能性があるものも含まれます。AhnLabは、人気PoCの説明文と同一の内容を掲載する別リポジトリにも言及し、模倣・再配布されたコードを無条件で信頼しないよう注意を促しています。

AhnLabは公開コードを直接検証していません。このため、以下に整理する個別リポジトリの「実証済み」「RCE可能」といった表現は、原則として各作成者の自己申告であり、AhnLabが成功を確認したことを意味しません。

公開PoCの技術的内容 メモリ破損の再現とRCEの実証は別

PHP2ShellはPHPのリクエスト処理、メモリ管理、異常終了時の後始末に関わる脆弱性です。PHP公式とPHP Foundationの説明では、2件は共通する領域に問題を持ちながら、発生する状態が異なります。

脆弱性 PHP公式が説明する原因 想定される影響
CVE-2026-109618 メモリ不足(Out of Memory:OOM)によってリクエスト処理が中断した際、部分的に初期化された内部データを後続のクリーンアップ処理が有効なものとして扱う メモリ破損、条件が成立した場合の認証不要RCE
CVE-2026-109619 リクエストに属する内部状態がメモリ解放後も残り、同じワーカーが後続リクエストで古い参照を利用する Use-After-Free(解放済みメモリの再参照)、異常終了、情報露出、条件が成立した場合のRCE

一部のPoC公開者は、PHPのsession.upload_progress機能に関連するコードや、php_session_rfc1867_callback()などの内部処理を調査対象として挙げています。これらはファイルアップロードの進捗管理やセッション情報の更新に関わる領域です。外部から送信されるデータがPHPの内部処理へ到達する点に着目した研究ですが、session.upload_progressが有効なだけで、すべての構成でRCEが成立することを意味しません。

技術的には、公開資料に少なくとも次の3段階の違いがあります。

  1. 異常状態の再現:メモリ不足、古い参照、ワーカーのクラッシュなど、脆弱性に関連する状態を確認する段階。
  2. 攻撃に利用可能な性質の確認:Use-After-Freeなどが意図したメモリ状態を生み得るかを検証する段階。再現できても、そのまま任意のコードを実行できるわけではありません。
  3. RCEの実証:対象のPHPバージョン、ビルド、実行方式、アプリケーション構成など、成立条件を満たす環境でコード実行に到達する段階。コード作者による主張と、第三者が独立して検証した結果は分けて扱う必要があります。

また、「セッションファイルへのデータ注入とローカルファイルインクルージョン(LFI)の組み合わせ」のように、PHP2Shell以外のアプリケーション側の問題を前提とする研究もあります。こうした複合的な攻撃経路を、CVE-2026-109618/109619単独の再現結果として扱うことは適切ではありません。

PHP公式はApacheのmod_phpで、アプリケーションコードが実行される前に認証不要で攻撃が成立する例を確認しています。一方、PHP-FPMなどでは実行方式やアプリケーション側の処理経路によって成立条件が異なります。公式に修正版が必要とされる対象はmod_phpに限定されません。PHP-FPM、php-cgi、FrankenPHP、LiteSpeedなどを含むWeb公開PHP環境の確認が必要です。

4件のPoC公開元を比較 コード作者の主張と検証結果に差

J4ck3LSyN:初期段階の公開資料、当初の攻撃経路に訂正

J4ck3LSyNは10月21日00時30分(UTC、日本時間9時30分)ごろ、PHP2Shellの再現に成功したとSNSで主張し、技術解説とPoCを公開しました。ただし、その後の分析では当初提示した攻撃経路に問題があることが指摘され、公開者側も一部の成立性を訂正したと報じられています。公開初期の主張をそのまま「RCE実証済み」と扱うのは適切ではありません。

この事例は、研究者が脆弱性の原因領域に近づいていても、メモリ上の参照や後片付けの挙動に関する前提が一つ異なるだけで、完成した攻撃としては成立しないことを示しています。

ikow/php2shell-poc:複数の検証経路と分離された研究環境

ikow/php2shell-pocのREADMEには、セッション処理、メモリ状態、シリアライザの内部状態を対象にした検証内容と、分離されたラボ環境が記載されています。コードの配置は、PoC、ラボ環境、技術解説資料に分かれており、メモリ破損の確認とアプリケーション固有の別条件が必要な検証が混在しています。

作成者は一部の攻撃経路についてRCE確認済みと主張していますが、環境依存の条件や別の脆弱性を組み合わせた結果と、今回の2件のCVE単独の影響を区別して読む必要があります。

enessのPoC:攻撃の説明と未完成との注記が併存

eness/php2shell-CVE-2026-109618-CVE-2026-109619-PoCは、PHP内部のメモリ状態とセッションアップロード処理を中心に、悪用の仕組みを説明しています。READMEには緩和用の設定例やサーバー別の防御ファイルも含まれています。

一方、PoCの節には「開発・試験中」との記載があり、すべての攻撃経路について完成した実証コードが公開済みと判断できる内容ではありません。説明文の詳細さとコードの実証状況は別に確認すべきです。

wakemeiflose/php2shell:攻撃研究用コードと脆弱な検証環境

wakemeiflose/php2shellは、脆弱なPHP環境を再現するための設定、Webサーバー構成、検証用コードなどを含むリポジトリです。READMEではsession.upload_progressやHTTPリクエスト解析に関連したUse-After-Freeを攻撃経路として説明しています。

ただし、記載された脆弱性の対応関係とPHP公式の説明は完全には一致しない部分があります。作成者による攻撃経路の分類を公式確定事項として転記するのではなく、検証環境の構成と主張されている挙動を区別する必要があります。

Amazonは10月17日から悪用試行を観測 PoC公開前の通信も調査対象

Amazon Threat Intelligenceによると、MadPotでの最も早い悪用試行は10月17日です。送信元は商用の匿名化ネットワークに関連するIPアドレスでした。同社は、公開前に攻撃者が脆弱性の情報をどのように得たのかは分からないとしています。

10月21日2時から8時(UTC、日本時間11時〜17時)には、匿名化基盤が異なる複数の送信元から追加の試行を観測しました。送信内容にも違いがあり、Amazonは複数の主体による活動の可能性を指摘しています。同日の正式公開時刻である14時(UTC、日本時間23時)以降は、追加のPoCが短時間で現れ、センサーへの攻撃に使われました。

ただし、MadPotが観測したのは悪用を狙う通信であり、実際の企業システムで侵入や任意コード実行が成功したことを確認した報告ではありません。Amazon自身も、これらの試行が実環境で成功したかどうかは不明としています。

PHP Foundationの説明では、修正版公開前に脆弱性の実演動画が誤って外部に公開され、複製が拡散しました。さらに修正済みのコンテナイメージの一部が正式発表に先行して配布され、攻撃者が技術情報を分析できる余地が生じました。この経緯は、PoCの流通時刻、コードの作成時刻、悪用試行の観測時刻を別々に記録する必要があることも示しています。

PoCの急増で生じる二つのリスク 悪用の加速と偽コードの流通

公開PoCは防御側による検証にも利用されますが、完成度が高いコードが出回ると、攻撃手法の研究に必要な時間が短くなる可能性があります。一方、未完成のPoCやクラッシュだけを再現するコードが混在している場合、「実証済み」というラベルを根拠に攻撃の成功可能性を過大評価することも避けなければなりません。

もう一つのリスクは、脆弱性検証ツールを装った不審なコードです。AhnLabは、人気の高いリポジトリのコピーや、管理者権限で動作する緊急対策スクリプトなどへの注意を促しています。第三者の実行用スクリプトは、更新・設定変更のつもりで実行すると、別のプログラムを導入してしまう可能性があります。

企業の担当者は、公開PoCの存在だけを理由に未確認コードを業務サーバーや作業用PCで実行せず、検証が必要な場合も出所・更新履歴・依存関係を確認し、外部接続を制限した独立した環境で取り扱う必要があります。

情報システム部門が確認すべき対策と調査範囲

PHP公式が公開した修正版は、8.5.12、8.4.27、8.3.36、8.2.35です。PHP 8.1以前では上流プロジェクトの正式なサポート対象外となっているため、OSディストリビューションや商用サポート提供元による修正バックポートの状況を確認し、サポート対象系列への移行を検討します。WAFの仮想パッチやアップロード機能に関する設定変更は攻撃経路を減らす可能性がありますが、今回の脆弱性を完全に解消するものではありません。

Amazonは、少なくとも10月17日までさかのぼってログを確認するよう推奨しています。Webサーバー、WAF、PHP、ホストの記録を関連付け、通常と異なるファイルアップロード形式のリクエスト、想定外の子プロセスの起動、PHPワーカーの異常終了、Web公開ディレクトリや一時領域の不審なファイル変更などを調査します。PHP_SESSION_UPLOAD_PROGRESSを含むフォーム送信も確認対象として挙げていますが、文字列の存在だけで攻撃成功や侵害を断定してはいけません。

Amazonが公開した送信元IPアドレスには共用の匿名化基盤が含まれており、単純な一括遮断よりも、時刻・リクエスト内容・実際のホスト挙動との照合が求められます。

PHP2Shellの仕組み、影響環境、修正版の確認方法、Cloudflare・Akamaiなどの防御策、WordPressや国内ホスティング事業者の対応は、既存記事「PHP2Shellの重大脆弱性2件と修正版・防御策」で解説しています。また、公開資産ごとのPHP稼働状況を確認し、攻撃観測・外部公開の有無・事業への影響を踏まえて優先順位を付ける方法は「脆弱性管理の進め方」も参考になります。

出典