PHPの遠隔コード実行の脆弱性PHP2Shell

カテゴリ
脆弱性の悪用
タグ
国外
目次
  1. 脆弱性の内容
    1. 発見と報告の経緯
    2. 公開前の流出と前倒し
    3. 説明の食い違い
  2. 時系列
  3. 対象の製品と版
  4. 悪用の状況
  5. 修正と回避策
    1. 当局の注意喚起
    2. 国内外の予防的な停止
  6. 未公表の事項
  7. 注
  8. 出典
  9. 更新記録
  10. 関連記事

PHPの2026年10月21日のアドバイザリでは、CVE-2026-109618とCVE-2026-109619はWebリクエストを処理するすべてのPHPで認証なしの遠隔コード実行を許しうる⁠[3]。PHP Foundationによると、前日にCVE番号が出回り、PHPは公開を10月22日から10月21日〔注1〕に早めた⁠[17]。10月23日には関連のCVE-2026-115560に、次の定例リリースまでの緩和策を勧めた⁠[16]。

脆弱性の内容

表1:2つのCVEの内容
項目CVE-2026-109618CVE-2026-109619資料
GHSAGHSA-w8hw-w9fx-j79wGHSA-6wmf-4rv5-p3rp⁠[3]
仕組みメモリ不足の処理がリクエストデータの初期化の途中でPHPを中断させ、後処理が不正なデータを有効とみなすことがあるリクエストの内部状態がメモリの解放後も残り、同じワーカーの後のリクエストがリセット前にその状態を使うことがある⁠[3]
CVSS v4.0(PHP)9.29.2⁠[1、4、5]
CVSS 3.1(NVD)9.88.1⁠[47、48]
重大度とCVSS 3.1(Red Hat)Important、8.1同左⁠[20、21]
CWECWE-416、CWE-755、CWE-824、CWE-1325、CWE-1419同左⁠[4、5、50]
確かめられた影響既定設定のmod_phpとpreforkの構成に対する、HTTP経由の認証なしのRCEmod_phpとPHP-FPMに対する認証なしのRCE、ヒープのuse-after-free、メモリの開示⁠[4、5、7]
CVE記録のクレジットCalif.ioの研究者、Wiz(報告者)、OpenAI(発見者)Wiz、Calif.ioの研究者、OpenAI(報告者)⁠[49、50]

PHPはGHSA-w8hw-w9fx-j79wで、メモリ不足のエラーではlongjmp()で処理を抜けると説明した⁠[4]。引き金はマルチパートの解析での3つ(宣言された長さが無いか使えない、部分のヘッダーの数に制限が無い、空のファイルの項目と入れ子の項目名)で、アプリに固有のものもありうる⁠[4]。修正はlongjmp()をやめ、VMの次の安全点での遅延したソフトOOMと、より高い閾値での_exit()によるハードOOMに置き換えた⁠[4]。

PHPのGHSA-6wmf-4rv5-p3rpによると、メモリの枯渇を含む致命的エラーは、global stateのリセットの前に処理を放棄させることがある⁠[5]。悪用には「producer」と「consumer」のリクエストが同じワーカーに届く必要があり、確かめられた経路はPHP 8.5のfatal_error_backtracesとsession upload progressだ⁠[5]。FPMは、nginxなどの前段がPHP_VALUEやPHP_ADMIN_VALUEを送る場合に条件付きで露出する⁠[5]。ChangeLogでは、両方の修正を「Avoid state corruption via bailout」と記している⁠[14]。

Wizは、複数の脆弱性をスクリプトphp2shellにまとめ、WordPress・Drupal・Joomlaの最新のコンテナイメージで認証なしのコード実行を示し、RCEに至らずにプロセスのメモリ(パスワード、トークン、APIキー)を読めることも示した⁠[56]。Wiz Research、OpenAI Codex Security、Califの共同サイトでは、PHP2Shellはこのスクリプトの名前で、研究全体の名前でもある⁠[57]。

発見と報告の経緯

PHP Foundationの記事では、2024年の外部監査(OSTIFが組織しQuarkslabが実施)で報告された問題を直す中で、同財団が契約するコア開発者がCVE-2026-109618のメモリ不足の問題の兆候を見つけた⁠[17]。悪用の経路は見つからず、修正の方針で合意できないまま作業は数か月止まっては再開し、同財団はこの遅れを「構造的な失敗」と認めた⁠[17]。OpenAIもCalifと同じ根本原因を独立に報告し、Califの報告の日から修正はPHP Foundationのセキュリティ担当の最優先の課題になった⁠[17]。Trail of BitsもPHPを監査している⁠[17]。

Califは、2020年の不具合報告と2024年の監査も同じ問題を見つけていたが、悪用が示されず修正されなかったとした⁠[58]。Wizの時系列では、最初の脆弱性の発見は8月19日、PHPが報告を認めたのは9月21日だった⁠[56]。

INTERNET Watchは、OpenAIが「Patch the Planet」の一環でCalifがGPT-5.6 Solを使って脆弱性を特定したと発表したと報じた⁠[79]。OpenAIもブログに協調開示の記事を出した⁠[59]。

公開前の流出と前倒し

PHPは10月20日の予告で、詳細と影響を受ける版・修正版はリリースと同時に出すとし、すべての利用者に準備を求めた⁠[1]。詳細が公になるか悪用の証拠が出れば、早く出す権利を留保した⁠[1]。

PHP Foundationは、協調開示は目標日の2日前まで順調だったとした⁠[17]。出回ったCVE番号には誤ったリリースの時刻と誤ったCVSS 10.0が付いていたが、技術的な詳細は漏れなかった⁠[17]。PHPは事前告知も前倒しし〔注2〕、ディストリビューターがまだ修正をパッケージにしていたため、すぐの公開は避けた⁠[17]。

Huntressは、10月20日朝のHacker Newsの投稿が重大な脆弱性2件の公開が近いと主張し、そのスクリーンショットがSNSに広まったと書いている⁠[65]。watchTowrは、修正の前に概念実証のツール「PHP2Shell」が現れ、少なくとも1社が脆弱性の1つの再現を表明したとした⁠[62]。

PHP Foundationの記事では、概念実証が複数の標的で動く様子を映したCalifの動画は、削除後も複製がSNSで広まって概念実証の開発を早めた⁠[17]。重要インフラ事業者の一部に10月20日23時(協定世界時)ごろから渡した緩和策の助言も、漏れたおそれがある⁠[17]。Chainguardの公開は一方的なエンバーゴ破りだとし、攻撃者が修正をバイナリで調べられるようになったと述べた⁠[17]。

説明の食い違い

CVE-2026-109618のPHP-FPMでの悪用を、PHPはGHSAとoss-securityで、ソースの解析では影響を受けるが完全なエクスプロイトは示されていないとした⁠[4、6]。PHP Foundationと共同サイトは、PHP-FPMでもアプリ層のコード経路でRCEを確かめたと説明した⁠[17、57]。

目次へ

時系列

時系列
日付主体内容資料
2026年7月30日CalifPatch the Planetの一環でPHPの監査を始めた⁠[17]
2026年8月11日Califメモリ不足の問題と同じ根本原因の無条件のRCEをPHPに報告した⁠[17]
2026年8月24日Wiz脆弱性をPHPのセキュリティチームに報告した⁠[17、56]
2026年10月17日-AmazonのハニーポットMadPotの記録に悪用の試みが残った⁠[60]
2026年10月20日PHPセキュリティリリースを予告した(php.announceへの配信は協定世界時19時33分)⁠[1、2]
2026年10月20日watchTowr流出した脆弱性を本物と確かめ、FAQを公開した⁠[61]
2026年10月20日Calif概念実証の動画を誤って公開した(協定世界時20時ごろ)⁠[17]
2026年10月20日CERT-EU注意喚起の初版を出した⁠[52]
2026年10月21日Chainguard修正を含むビルド済みのイメージを公開した(協定世界時7時41分)⁠[17]
2026年10月21日IPA「事前準備のお願い」を掲載した⁠[42]
2026年10月21日PHP修正版とアドバイザリを公開した〔注3〕⁠[3]
2026年10月21日英国NCSC、カナダのCCCS、CISA注意喚起を出した⁠[51、53、54]
2026年10月22日IPA、JPCERT/CC、JVN注意喚起とJVNVU#99905564を公開した⁠[43、44、45]

目次へ

対象の製品と版

PHPは、対象にPHP-FPM、Apacheのmod_php、php-cgi、FrankenPHP、LiteSpeedを含め、リスクはmod_phpで最も高いとした⁠[3]。mod_phpには、認証なしのリクエストがアプリのコードより前に攻撃を起こせるエクスプロイトがある⁠[3]。PHP 8.2は2026年12月31日にサポートを終える⁠[12]。

表2:PHPと関連する製品の版
製品影響を受ける版修正版資料
PHP 8.58.5.12より前8.5.12⁠[4、9]
PHP 8.48.4.27より前8.4.27⁠[4、10]
PHP 8.38.3.36より前8.3.36⁠[4、11]
PHP 8.28.2.35より前8.2.35⁠[4、12、13]
PHP 8.6.0(テスト版)RC4より前のビルド8.6.0 RC4⁠[15]
PHP 7.4・8.0・8.1-PHPのセキュリティチームの最小限のソースのバックポート⁠[3]
Debianのbookworm(php8.2)-8.2.35-1~deb12u1(DLA-4848-1)⁠[22]
Debianのtrixie(php8.4)-8.4.27-1~deb13u1(DSA-6574-1)⁠[22]
PA-Series・VM-SeriesのPAN-OS、Panorama影響を受ける-⁠[24]
RUGGEDCOM APE1808PAN-OSを載せたすべての版-⁠[25]

Wizは、過去10年に出たすべての版が少なくとも1件の影響を受け、5.4まで遡るとした⁠[56]。Califも、最も古い影響の経路は5.4.0まで遡り、経路は版とSAPIで違うが既定の構成で常に悪用できると説明した⁠[58]。watchTowrは、PHP 5も影響を受け、7.3以前には修正が無いとした⁠[61]。

AWSの告知では、AWSのサービスは影響を受けず、PHP 5.4〜8.1には上流の修正が無く、サポートを終えた系列にはCVE-2026-109618の修正が無い⁠[23]。Palo Alto Networksは、自社製品への悪用は把握していないとした⁠[24]。

Google Cloudは、自社は脆弱ではないが、その上で動くPHPの利用者は影響を受けうるとし、Cloud Armorのルールで緩和策を出した⁠[68]。

目次へ

悪用の状況

PHP Foundationの記事では、PHPのセキュリティチームは流出後の概念実証を監視・検査したが、公開時に機能するエクスプロイトは確認していなかった⁠[17]。

Amazonは、公開の4日前の試みは商用の匿名化ネットワークのIPアドレスからで、脅威アクターの活動とみられるとし、調査は少なくとも10月17日から始めるよう求めた⁠[60]。

表3:観測した組織ごとの悪用の状況
観測した組織時点内容資料
Cloudflare2026年10月21日公開日より前から顧客を狙う攻撃通信を観測し、攻撃者はペイロードを変えて防御を避けようとした⁠[69]
Amazon2026年10月21日協定世界時2時ごろから8時に、複数の概念実証と別の匿名化基盤からの試みを確認(成功したかは不明)⁠[60]
watchTowr2026年10月21日ハニーポット網で実環境の悪用を観測⁠[61]
Datadog2026年10月21日積極的な悪用の報告が複数あり、無差別のスキャンも把握⁠[67]
Cisco Talos2026年10月21日公開から数時間で試みを観測し始め、大半はスキャン⁠[70]
Huntress2026年10月21日16時30分(米国東部時間)の更新で、パートナーの環境での悪用は未観測⁠[65]
Tenable2026年10月21日悪用をうたうコードは動作が未検証で、マルウェアを仕込んだものもある⁠[66]
Rapid72026年10月21日〜22日公開の概念実証は特定のOS・版・Webサーバーの組み合わせでしかRCEを示さず、実環境の悪用は未観測(試みの報告は複数)⁠[64]
Sophos2026年10月22日〜23日悪用の成功の報告を訂正し、スキャンと少数の失敗した試みだけとした⁠[71]
Sansec2026年10月22日攻撃には標的の知識と条件が要り、公開のエクスプロイトは既定のPHPでは動かず、大規模な悪用は当初の予想より起きにくい⁠[72]

Unit 42は、侵入後の活動にエージェント型AIの攻撃基盤を使う攻撃者を観測したと述べた⁠[63]。欧州の政府機関を狙った事例では、最初の悪用から2時間以内にパスワードハッシュと多要素認証の秘密情報に到達した⁠[63]。

ITmedia NEWSの記事では、CloudflareのCEOがXに投稿した悪用の試みの数は、公表後45分で数万件、2時間以内に数十万件、その後数百万件で、公表前の10時間は数千件だった⁠[77]。

当局では、カナダのCCCSが積極的な悪用は確認されていないとし⁠[54]、シンガポールのCSAは広範な悪用の試みを引き続き把握しているとした⁠[55]。10月22日の段階でCISAは両方をKEVに加えていないと、watchTowrは書いた⁠[61]。

JPCERT/CCと共同サイトは、侵害調査の手がかりに、異常なPHPSESSIDのCookie、不審なmultipart/form-dataのリクエストと前後のメモリ上限のエラーやHTTP 500、ワーカーの異常終了や頻繁な再起動を挙げた⁠[44、57]。痕跡が無くても影響が無いとは言えない⁠[44、57]。CrowdStrikeは、攻撃の応答はHTTP 200で、サーバー側の痕跡はエラーログのメモリ上限の致命的エラー1件だけだとした⁠[73]。

目次へ

修正と回避策

PHPはアドバイザリで、すべての利用者に直ちに更新するよう強く勧めた⁠[3]。すぐに更新できない場合の措置は特定の攻撃経路への露出を減らすが環境を安全にはせず、完全な解決は更新だけだとした⁠[3]。

  1. ディストリビューションとLTSベンダーの更新パッケージを確かめる(両者は事前にパッチを受け取った)⁠[3]。
  2. PHP 8.1以前は、ベンダーにバックポートを問い合わせるか、サポート中の版に上げる(PHPプロジェクトの更新は無い)⁠[3]。
  3. CVE-2026-109618には、memory_limit=-1をアプリが上書きできない形で設定する(下層の割り当ての失敗は、なお脆弱な経路に至りうる)⁠[3]。
  4. 同じくpost_max_sizeを、アップロードが要らなければ8M、要るなら32Mにする(upload_max_filesizeはそれより小さく)⁠[3]。
  5. 同じくリクエストの大きさ・項目の数・マルチパートの部分の数・ヘッダーの数・入れ子の深さをWebサーバーやプロキシで制限し、RLIMIT_AS・RLIMIT_DATAでなくコンテナやcgroupの制限を使う⁠[3]。
  6. CVE-2026-109619には、session.upload_progress.enabled=0を設定して全ワーカーを再起動する(ini_set()やFPMの.user.iniには頼らない。ほかの派生は防がない)⁠[3]。
  7. PHP 8.5では、fatal_error_backtraces=0にしてワーカーを再起動する(確認済みのfatal backtraceの経路だけを防ぐ)⁠[3]。
  8. 初期化の前に診断を出すリクエスト単位の不正・非推奨の設定を除き、攻撃者が到達できる致命的エラーと実行時間切れを直す(診断を隠しても効かない)⁠[3]。

GHSA-6wmf-4rv5-p3rpでは、性能が許せばpm.max_requests=1も検討するよう挙げた⁠[5]。GMO Flatt Securityは記事の追記で、session.upload_progress.enabledを0にする策は完全ではないとした⁠[74]。8.5.12の修正が不完全かもしれないとの指摘には、PHPのセキュリティチームのメンバーが10月22日、RCEと無関係の影響の小さい問題だと答えた⁠[8]。

10月23日の情報提供では、CVE-2026-115560が起きるのは、設定でsession.serialize_handlerをphp_binaryかphp_serializeにし、実行時にini_set()でphpに切り替えてsession_start()を呼び、session upload progressが有効な場合だけだ⁠[16]。CVE-2026-109619の緩和策を適用済みなら、追加の対応は要らない⁠[16]。

PHPは公開当日の協定世界時14時18分、rpms.remirepo.netの利用者に配布元のパッケージかソースからのビルドへの切り替えを求める項目をアドバイザリから削った⁠[19]。

当局の注意喚起

IPAは事前準備のお願いで、修正版の公開を2026年10月21日23時(日本時間)の予定とし、前倒しの可能性も示した⁠[42]。IPA自身は悪用を確かめていない⁠[42]。サポート終了の古いPHPを使うWebサイトも見受けられるとして、PHPの利用状況の棚卸しと準備を求めた⁠[42]。

10月22日の注意喚起でIPAは、修正が難しければサポートの状況を確かめて暫定対策やアクセス制限を取り、被害と業務への影響を踏まえて外部からのアクセスの遮断やサービスの一時停止の要否を判断するよう求めた⁠[43]。公開の終了やシステムの廃止の検討も、その手順に含まれる⁠[43]。JPCERT/CCは、PHPの実行プロセスの権限で任意のコードを実行される可能性があるとして、対策の適用と侵害の有無の調査を求めた⁠[44]。

高市早苗首相は10月21日にXへ投稿した⁠[46]。Impress WatchとINTERNET Watchの記事では、投稿は21時55分で、PHPの使用を確かめ、23時に公開される修正パッチを可及的速やかに適用できるよう準備を求めた⁠[78、79]。国家サイバー統括室(注意・警戒情報)もXで、首相と同じく、修正パッチの速やかな適用が難しければウェブサイト等を一時的に止めることも「リスクを低減させるための有効策の一つ」とした⁠[78、79]。

ITmedia NEWSは、首相が10月22日にもXで、状況によってはサイトの一時停止も重要だと述べ、個人の公式サイトも止めてその日の午後までに再開したと説明したと報じた⁠[76]。

ニッキンは、片山さつき金融担当相が10月23日の閣議後会見で、複数の金融機関の予防的なシステムの停止を、能動的な停止などの短期的な対応を要請してきた結果だとし、さらに必要な対応を求めたと報じた⁠[82]。

国外では、CERT-EUが、更新が難しければインターネットに面したアプリを公衆網から切り離す検討を求め⁠[52]、英国NCSCは、緩和策を適用できなければシステムをオフラインにする検討を勧めた⁠[53]。Security NEXTは、CISAが修正をただちに適用するよう強く勧め、難しければシステムをオフラインにするよう推奨したと報じた⁠[80]。

国内外の予防的な停止

表4:予防的な停止を告知した国内の組織
区分組織公表日公表内容資料
省庁財務省2026年10月21日PHPで動くWebコンテンツなど、ホームページの一部を一時停止⁠[36]
省庁文部科学省-ホームページの一部のコンテンツ・サービスを一時停止⁠[37]
自治体大阪市2026年10月23日、10月24日ウェブサイト等の一部を止めてパッチを適用し、ホームページの一部サービスは10月22日12時5分から24日15時15分まで緊急メンテナンス⁠[39、40]
大学東京外国語大学2026年10月21日10月21日22時30分からWebサイトの一部を止めるか制限する可能性を告知し、部局・教員個人のサイトは停止・制限を続けた⁠[38]
公益財団法人北九州産業学術推進機構2026年10月23日ホームページを予防的に止め、修正版への更新の後に再開⁠[41]
ホスティングエックスサーバー2026年10月22日10月21日16時から各種サービスサイト・管理画面等を止め、10月22日から順次再開⁠[26]
ホスティングさくらインターネット2026年10月22日10月21日22時30分から会員関連機能などを緊急メンテナンスし、10月23日に終了⁠[27、28]
ホスティングheteml(GMOペパボ)2026年10月22日サービスサイトと一部サーバーの顧客サイトの表示を止めた(脆弱性を狙ったとみられるアクセスも確認)⁠[29]
ホスティングCPI2026年10月22日サービスサイト・管理画面などを止め、10月22日にPHP 8.2・8.3・8.4にパッチを適用⁠[30]
ホスティングKAGOYA2026年10月23日レンタルサーバープランを修正版に更新し、ほかのプランには公開停止やアクセス制限の検討を求めた⁠[31]
ホスティングIDCフロンティア2026年10月21日Zenlogicホスティングを10月21日22時から更新し、PHP 7.4、8.1〜8.5のサーバーは10月22日8時に再開⁠[32]
Webサービスコドモン2026年10月23日修正版の公開前でも攻撃が成り立つおそれから10月21日に全対象サービスを止め、10月22日3時22分に職員用管理画面などを再開⁠[33]
企業セガ2026年10月22日「セガ製品情報サイト」を10月21日22時55分から23日11時30分まで緊急メンテナンス⁠[34]
企業建設システム(KENTEM)2026年10月23日10月21日22時から一部の製品・サービスとコーポレートサイトを止め、順次再開⁠[35]

ITmedia NEWS・Impress Watch・ニッキンによると、BASE・Cygames・ニコニコ・pixiv・静岡銀行・阪急電鉄なども公式サイトやWebサービスを一時的に止め⁠[75]、DMM.comや、グランブルーファンタジー・「ウマ娘 プリティーダービー」など多くのゲームも止まり、一部の自治体もシステムの一時停止を予告し⁠[78]、10月22日にはネットバンキングなどの一部を止める銀行・信用金庫が相次いだ⁠[81]。銀行界では大半に影響し、三菱UFJ銀行はインターネットサービスの一部取引を止め、その日の20時にも再開していなかった⁠[81]。

Unit 42によると、少なくとも1つの欧州の政府がWebサイトを予防のため止めた⁠[63]。

目次へ

未公表の事項

  • CVE番号を流出させた主体と経路
  • 公開の4日前の悪用の試みの主体と、情報の入手経路(Amazonは、どう情報を得たかは分からないとした⁠[60])
  • CVE-2026-115560の影響を受ける版、修正を含むリリース、深刻度(PHPは完全なアドバイザリを次のリリースで出すとした⁠[16])
  • 悪用の成功による侵害の件数
  • KAGOYAのマネージド専用・共用・WordPress専用サーバープランの恒久対応の方針(KAGOYAは調整中とした⁠[31])

注

  • 〔注1〕PHP Foundationによると、時刻はどちらも協定世界時14時だった⁠[17]。Huntressが引いたwatchTowrの投稿は、当初の予定を「Thursday at 11am ET」と書いた⁠[65]。
  • 〔注2〕php.netの事前告知の記事の表示は協定世界時20時32分で⁠[1]、PHP Foundationは19時30分に出したとした⁠[17]。
  • 〔注3〕公開の時刻を、CERT-EUは協定世界時13時30分とした⁠[52]。php.netへの8.4.27の告知の追加の通知は13時33分⁠[18]、php.announceでの8.2.35の告知は14時だった⁠[13]。

出典

当事者

関係組織

公的機関

調査・観測

報道機関

更新記録

  • 2026年10月25日16時58分:公開した。
  • 2026年10月25日17時58分:表1でCVE-2026-109619のCWEを「-」から5つのCWEに、Red Hatの重大度を「Criticalより下」からImportantに改め、両件にRed HatのCVSS 3.1の値を加え、表3のUnit 42の行を「悪用の状況」の文に移した。
  • 2026年10月25日20時50分:日付の表記を月日の形に改めた。
  • 2026年10月26日8時32分:「国内外の予防的な停止」で、ITmedia NEWS・Impress Watch・ニッキンをそれぞれ主語にした3つの段落を、3つの記事に帰属させた1つの文と、三菱UFJ銀行の文の1つの段落にまとめた。
  • 2026年10月26日17時37分:リードの公開日の変更の文で変更後の日付に月を付け、第1文の帰属の句を「アドバイザリでは」に改めた。

目次へ