PHP2Shell、修正から1日|「被害は確認されていない」をどう読むか?サービスは戻っても残る3つの宿題

[最終更新]

Googleで優先するソースとして追加するボタン

10月21日の午後から夜にかけて、ネットショップの開設サービスや保育園の写真の販売サービス、銀行の申し込みや予約の窓口、人気のゲームまで、ふだん使っているサービスが次々と止まりました。PHPの重大な脆弱性「PHP2Shell」に備えた、予防のための停止です。一夜明けて、多くのサービスが戻ってきています。ただ、修正版を入れたことと、安全になったことは同じではありません。多くの企業が告知に添えた「不正アクセスは確認されていない」という一文は、何を意味し、何を意味しないのでしょうか。公開までの経緯を追った前編に続き、本稿では公開からの一日を読み解きます。


目次▼この一日で分かったこと:「試み」「侵害」「被害公表」を分ける▼「被害は確認されていない」をどう読むか▼修正しても戻らないもの:メモリからの漏えい▼再開のあとに残るもの:修正が届かないサイト▼いま、それぞれができること
関連記事 / 編集部後記 / 参考リンク / 用語解説 / 参考記事


PHPの開発チームは10月21日、2件の脆弱性(CVE-2026-109618、CVE-2026-109619)を修正したPHP 8.5.12、8.4.27、8.3.36、8.2.35を公開した。Cloudflareは、悪用を狙う通信が公表から2時間以内に数十万件、22日午前には数百万件に達したと報告した。Amazonは公表4日前の10月17日におとりサーバーで悪用の試みを確認し、実際のシステムで成功したかは不明としつつ、広く悪用されているとみる。国内では22日、バルテックが「PHPの脆弱性を標的としたサイバー攻撃」により顧客情報の流出とみなされる事実を確認したと公表した。22日の公表文はCVE番号を示していない。木原官房長官は同日、政府機関や重要インフラ事業者から被害の報告はないと述べた。

From: 文献リンクSecurity advisory: Critical remote code execution vulnerabilities, update now

【編集部解説】

本稿は、10月22日夕方までに公表された情報をもとにしています。

前編では、PHP2Shellが見つかってから修正版が出るまでの2か月あまりを追い、そのなかで「攻撃の試み」と「侵入の成功」は別の段階だと書きました。公開から一日がたった今、この区別がいちばん大事になっています。ここでは、この一日で分かったことを確かさの度合いで分けたうえで、「被害は確認されていない」という言葉の読み方、修正しても戻らないもの、そして再開のあとに残るものを順に見ていきます。

この一日で分かったこと:「試み」「侵害」「被害公表」を分ける

まず、同じ「攻撃」という言葉でくくられがちな情報を、3つの段階に分けて並べます。

段階この一日の情報
攻撃の試み(観測されている)Cloudflareの観測で、公表前の10時間に数千件、公表後45分で数万件、2時間以内に数十万件、22日午前には数百万件。Amazonは10月17日におとりサーバーで試みを確認し、21日未明(UTC)の試みは複数の攻撃者によるものとみている
侵害の成功(確認されていない)Amazonは、観測した試みが実際のシステムで成功したかは分からないとしている。米CISAは21日の勧告の公表時点で悪用を観測していないとした。Rescanaの整理によると、Patchstackは侵害の確かな証拠はまだないとし、CISAの「悪用が確認された脆弱性」のカタログ(KEV)にも、日本時間22日14時24分の時点で2件とも載っていない
被害の公表(22日夕方までに国内で1件)バルテックが「PHPの脆弱性を標的としたサイバー攻撃」を原因として公表。22日の公表文はCVE番号を示しておらず、PHP2Shellによるものかは特定されていない

バルテックは、法人向けの勤怠管理や経費精算、POSシステムなど24のサービスを止め、復旧は最短で10月26日中としています。影響の範囲は、公表の時点で調査中でした。

もう1件、EC構築サービスのフューチャーショップも、21日10時14分ごろに一部のサーバーへの不正アクセスを確認したと公表しています。22日朝の第二報では、個人情報が参照されたり持ち出されたりした痕跡は、現時点で見つかっていないとしています。同社は別途、PHPの脆弱性への対応のため、22日昼の時点で全サービスを止めていましたが、不正アクセスとPHPの関係には触れていません。検知の時刻が修正版の公開より前だったからといって、両者を結びつける根拠にはなりません。

木原官房長官は22日の会見で、政府機関や重要インフラ事業者から被害の報告は受けていないと説明しました。一方で、すべての観測者が同じものを見ているわけではありません。セキュリティ企業のHuntressは、米東部時間21日午後4時30分の時点で、顧客のシステムでは悪用を観測していないとしています。観測の結果は、それぞれが何を見張っているかによって変わります。

「被害は確認されていない」をどう読むか

21日の午後から22日にかけて、多くのサービスが予防のために止まりました。国内各社の告知を整理したSITE PICKの一覧を見ると、その多くが「不正アクセスや情報漏えいは確認されていない」という一文を添えています。利用者としては、戻ってきたサービスをそのまま使ってよいのか、と考えるところです。逆に、メンテナンス画面が出ていたからといって侵入されたとは限らず、修正の作業中である可能性が高いと、セキュリティ企業のMalwarebytesは説明しています。止まったことも、戻ったことも、それだけでは安全かどうかを示しません。

まず押さえておきたいのは、今回の攻撃が痕跡を残しにくいことです。CrowdStrikeによると、攻撃が成功しても作業プロセスは落ちず、通常の応答(HTTP 200)が返り、アプリケーションのログには何も残りません。サーバー側に残る痕跡は、Webサーバーのエラーログに出るメモリ上限の致命的エラー1行だけだといいます。この種のエラーはふだんノイズとして見過ごされがちだと、The Hacker Newsは伝えています。発見者の一社であるWizも、アプリケーションのログにはほとんど手がかりが残らないおそれがあると指摘しています。

もう1つは、調べ始める日付です。Amazonは、侵害の調査を公表日からではなく、悪用が最初に確認された日から始めるべきだとし、PHP2Shellについては少なくとも10月17日までさかのぼるよう勧めています。21日の予防停止は、修正版が出るまでの数時間を守るためのものでした。編集部の見方では、その前の4日間は、停止によっては守られていません。

こう考えると、「確認されていない」は「なかった」と同じではありません。その時点で、その会社が見たログの範囲では見つからなかった、という意味です。各社の発表を疑う理由はありません。ただ、調査が進めば内容が変わりうる、途中経過の報告として読むのが実態に近いと考えます。

修正しても戻らないもの:メモリからの漏えい

PHP2Shellには、コードを実行されること以外にもう1つの危険があります。Wizによると、PHPの作業プロセスのメモリには、ほかのリクエストやサーバー自体に属するパスワード、認証トークン、APIキー、証明書が含まれている可能性があり、攻撃者はコードの実行に至らなくても、それを読み取れるおそれがあります。JFrogは、これを2014年の「Heartbleed」に似たメモリの漏えいと表現しています。

コードを実行された場合は、さらに直接的です。CrowdStrikeは、侵入された後に設定ファイルからデータベースやAPIの認証情報が抜き取られうることに触れています。

ここからは編集部の考察です。修正版を入れれば、穴はふさがります。しかし、穴が開いていた間に読み取られた情報は、修正しても戻ってきません。漏れたかもしれないパスワードやAPIキーは、入れ替えない限り使われ続けます。

なお、PHPの開発元が勧めているのは修正版の適用です。Wiz、Amazon、CrowdStrike、CISA、IPAのいずれも、認証情報の入れ替えを対策としては挙げていません。2014年のHeartbleedのときには、多くの企業が脆弱性を公表したうえで、利用者にパスワードの変更を勧めました。一方、セキュリティ企業のRescanaは独自の助言として、修正前に攻撃にさらされていた取引先に、認証情報やAPIキーを入れ替える予定があるかを確かめるよう勧めています。入れ替えるかどうかは、ログで何が分かるか、何がメモリを通っていたかによって、運営者ごとに判断が分かれるところです。

再開のあとに残るもの:修正が届かないサイト

サービスが再開しても、問題が片づいたとは限りません。

PHPの開発元が修正版を出したのは、サポート中の8.2〜8.5系だけです。セキュリティ企業CybelAngelは、10月20日時点のShodanの集計(Malloryが公開)をもとに、インターネットから見えるPHPのホストを約224万台と数えています。そのうちバージョンが分かる約150万台の59%にあたる88万3717台が、開発元の修正版が出ない5系・7系・8.0〜8.1系で動いていました(7.4・8.0・8.1には、技術者向けの最小限のソース修正だけが公開されています)。約74万台はバージョンを公開していないため、実際はもっと多い可能性があります。逆に、Linuxの配布元が修正を独自に取り込んでいる場合もあり、すべてが危険なわけではありません。

対応を諦める例も出ています。Game*Sparkによると、長く運営されてきたゲーム2作品が相次いでサービスの終了を決めました。『ワールドクエスト』は、古い仕組みの上で動いていて十分な対策が取れないとして21日限りで終了し、JAGSの『僕の魔界を救って!』も、脆弱性への対応が難しくなったとして22日に終了を発表しました。INTERNET Watchは、手入れが十分でないサイトでは、告知もないまま未対応のケースがありうると指摘しています。IPAも22日の注意喚起で、対策を続ける体制が整わない場合は、公開の終了やシステムの廃止も含めて検討するよう求めています。

PHPは、Webサイトだけでなく製品の内側にも入っています。CISAは、PHPはほかのソフトウェアの部品になっていることが多く、使われていても外からは見えないことがあると注意を促しています。セキュリティ対策Labの報道によると、Palo Alto Networksは、同社のファイアウォールのOS「PAN-OS」の各系列と管理製品「Panorama」の管理画面が影響を受けると公表しました。同社は悪用を把握していないとしていますが、22日の時点で修正版は示されておらず、それまでは管理画面に接続できる元を信頼できる内部のアドレスに絞るよう勧めています。こうした製品は、PHPを自分で更新しても直らず、製品の提供元の更新を待つことになります。

時間の物差しを、少し長くとる必要もあります。2024年6月に公開されたPHPの脆弱性(CVE-2024-4577)は、innovaTopiaが2025年3月に伝えた時点でも、暗号資産の採掘プログラムを仕込む攻撃などに活発に使われていました。GreyNoiseは2025年1月だけで1,089の発信元を観測しています。Cisco Talosは、2025年1月から日本の組織を狙う攻撃が続いていると報告し、侵入後には認証情報の抜き取りやイベントログの消去まで行われていたとしています。公開から半年以上たってからの話です。被害が表に出るのは、数週間後、数か月後のことがあります。

いま、それぞれができること

サーバーやサイトを管理している人は、修正版への更新と、ApacheやPHP-FPMなど作業プロセスの再起動を済ませたうえで、少なくとも10月17日以降のWebサーバーのログと、想定外のプロセスの実行やファイルの変更を確かめます。Wizは、手がかりとして、ふだんと違うファイル送信のリクエストのあとに続くメモリ上限のエラーや、HTTP 500の繰り返し、異常に大きい・崩れたセッションのクッキーなどを挙げています。CrowdStrikeは、エラーログの該当行に「in Unknown on line 0」という表記が付くことを見分けの手がかりにしています。

CISAは、PHPの作業プロセスがシェルを起動したりツールをダウンロードしたりしていないかを監視するよう求めています。すぐに更新できない場合や8.1以前を使っている場合は、修正するまでオフラインにするのがCISAの勧告です。そのうえで、サーバーに置いているAPIキーやパスワードを入れ替えるかを判断します(入れ替えは編集部の考察で、公式の推奨ではありません)。

サイトの制作や保守を外部に任せている会社は、どの版のPHPで動いているか、いつ更新したか、10月17日以降のログを確かめたか、8.1以前で動いていないかを、委託先に確認しておくと安心です。

サービスを使うだけの人が、自分のスマートフォンやパソコンで更新するものはありません。使っているサービスからパスワード変更の案内が届いたら従い、同じパスワードをほかで使い回している場合はそちらも変えます。サービスを装ったメールやSMSにも注意が要ります。自分が使っているサービスが被害を公表していないかは、innovaTopiaの「サイバー攻撃速報一覧」で確かめられます。情報が漏れたかもしれないときの対処は、漏れた情報別の手引きにまとめています。

【解説】PHP2Shell、AIが見つけたPHPの重大脆弱性 CVE番号の流出で公開を前倒し
前編。発見から修正版の公開まで2か月あまりの経緯と、協調開示が公開予定日の2日前から崩れた理由を読み解いた。

サイバー攻撃速報一覧【1日3回更新】自分は該当するか?確かめ方と対処法つき
被害を公表した組織と、自分が該当するかの確かめ方を、1日3回更新でまとめている。

情報が漏れたかもしれないときの手引き|漏れた情報別にできること
メールアドレス、パスワード、カード、口座など、漏れた情報別に利用者ができることをまとめた。

PHP-CGI脆弱性:日本企業を標的とするサーバー攻撃、Cisco Talosが報告 – CVE-2024-4577の詳細と対策
前回のPHPの脆弱性は、公開から半年以上たってから日本の組織を狙う攻撃に使われていた。

MongoBleed(CVE-2025-14847)PoC公開で警戒高まる─多数の公開MongoDBに影響、旧版に修正なし
メモリの漏えいと、修正の届かない旧版という組み合わせは、MongoBleedでも問題になった。

【編集部後記】

止まっていたサービスが戻ってくると、私たちはつい「終わった」と感じます。けれど公開からの一日を追ってみると、終わったのは修正の作業で、確かめる作業はむしろこれから始まるのだと分かりました。「被害はなかった」と言えるのは、誰が、いつなのでしょうか。数か月後に振り返ったとき、21日の夜に各社が下した判断はどう見えるのか。私たちも、戻ってきたサービスのその後を、これからも追っていきます。

  1. PHP: News Archive – 2026(外部)
    PHP公式のお知らせ一覧。10月21日のセキュリティ勧告と、4つの修正版の公開告知を掲載。
  2. PHP: Supported Versions(外部)
    PHPの各版のサポート期限の一覧。8.2のセキュリティ修正は2026年12月31日まで。
  3. Amazon Threat Intelligence identifies PHP2Shell exploitation prior to public disclosure in MadPot(外部)
    AWSのブログ。公表4日前の悪用の試みと、10月17日からの侵害調査を勧める推奨事項を掲載。
  4. PHP2Shell: AI uncovers critical RCE vulnerabilities affecting 70% of the Internet(外部)
    発見者の一社Wizの解説。メモリから読み取られうる情報と、侵害の兆候として見るべき点を説明。
  5. Critical Vulnerabilities in PHP Require Immediate Patching(外部)
    米CISAの勧告。即時の更新、更新できない場合や8.1以前のオフライン化、不審な動きの監視を求める。
  6. CrowdStrike Protects Customers from Threats Delivered via PHP2Shell(外部)
    CrowdStrikeの解説。攻撃が成功してもログに痕跡がほとんど残らないことと、見分けの手がかり。
  7. PHP2Shell: All You Need to Know About CVE-2026-109618 and CVE-2026-109619(外部)
    JFrog Security Researchの解説。2件の仕組みと修正内容、出回った偽の攻撃コードへの注意。
  8. JVNVU#99905564 PHPにおける複数の任意のコードが実行可能な脆弱性(外部)
    国内の脆弱性情報ポータルJVNの掲載ページ。2件の脆弱性の概要と対策を日本語で確認できる。
  9. PHPにおける複数の脆弱性(CVE-2026-109618、CVE-2026-109619)に関する注意喚起(外部)
    JPCERT/CCが10月22日に公開した、PHPの2件の脆弱性に関する注意喚起。
  10. 【事前準備のお願い】PHPのセキュリティリリース公開予定について(外部)
    IPAの10月21日の注意喚起。PHPを使う環境や、PHPを内部に含む製品の棚卸しを呼びかけた。
  11. PHPの脆弱性対策について(CVE-2026-109618、CVE-2026-109619:PHP2shell)(外部)
    IPAの10月22日の注意喚起。更新と、できない場合の遮断・一時停止、8.1以前の移行を求める。
  12. 不正アクセスによるお客様情報流出の可能性および一部サービス停止のお知らせ(外部)
    バルテックの公表。原因を「PHPの脆弱性を標的としたサイバー攻撃」とし、停止中のサービスを記載。
  13. サービス稼働状況|futureshop(外部)
    フューチャーショップのサービス稼働状況。PHPの脆弱性への対応やサーバーの状況を案内。
  14. Sponsor|The PHP Foundation(外部)
    PHPの開発を支えるPHP Foundationへの寄付・スポンサーの窓口。個人でも任意の額で支援できる。

【用語解説】

PHP2Shell
PHPの処理系そのものにある2件の脆弱性(CVE-2026-109618、CVE-2026-109619)の通称。2026年10月21日に修正版が公開された。認証なしで遠隔からコードを実行されるおそれと、メモリ上の情報を読み取られるおそれがある。

攻撃の試みと侵害
攻撃の試みは、脆弱性を狙う通信が届いた段階。侵害は、攻撃が成功してシステムに入り込まれた段階。試みの件数が多くても、侵害が起きたとは限らず、試みが観測されていなくても、侵害がなかったとは限らない。

侵害調査
システムが攻撃を受けて入り込まれたかどうかを、ログやファイル、動いているプログラムなどから確かめる作業。いつまでさかのぼって調べるかで、見つかるものが変わる。

おとりサーバー(ハニーポット)
攻撃者をわざと呼び込み、攻撃の手口や発信元を観測するために置くサーバー。Amazonが運用するおとりサーバーの網がMadPot。

KEV(Known Exploited Vulnerabilities)カタログ
米国のサイバーセキュリティ・社会基盤安全保障庁(CISA)が公開する、実際に悪用が確認された脆弱性の一覧。米国の連邦機関が修正の優先順位を決める際の判断材料の一つにもなっている。

メモリの漏えい
サーバーのメモリに一時的に置かれている情報が、外から読み取られてしまうこと。PHP2Shellでは、ほかの利用者のリクエストに含まれるパスワードやAPIキーなどが対象になりうる。

Heartbleed
2014年に見つかった暗号ライブラリOpenSSLの脆弱性。サーバーのメモリの一部を外から読み取れる欠陥で、メモリの漏えいの代表例として語られる。

作業プロセス(ワーカー)
Webサーバーで、届いたリクエストを一つずつ処理するプログラムの実体。PHP2Shellの2件目は、同じ作業プロセスが前のリクエストの痕跡を次のリクエストで使ってしまう問題。

サポート終了とバックポート
サポート終了は、開発元が修正版の提供をやめた状態。PHPでは8.1以前が該当する。バックポートは、新しい版の修正を古い版に移植すること。Linuxの配布元などが独自に行う場合がある。

Shodan
インターネットにつながった機器やサーバーを調べて一覧にする検索サービス。ソフトウェアの種類や版の分布を数える調査によく使われる。

【参考記事】

  1. Someone Tried to Exploit PHP2Shell 4 Days Before the Vulnerabilities Were Publicly Disclosed — The Hacker News(外部)
    The Hacker News。各社の観測をまとめた記事。攻撃の痕跡がノイズとして見過ごされがちという指摘を参照。
  2. 多くのサイトが予防的に公開停止、高市総理が対応呼びかけ―「PHPの深刻な脆弱性」対応で何が起きた? — INTERNET Watch(外部)
    INTERNET Watch(山田貞幸記者)。予防的な公開停止を整理した記事。未対応のサイトが残りうる指摘を参照。
  3. 「PHP」重大脆弱性問題で長年運営ゲーム2作品が相次いでサービス終了…緊急メンテでは済まなかった老舗ゲーム — Game*Spark(外部)
    Game*Spark。脆弱性への対応を断念して終了したゲーム2作品を伝えた記事。終了の理由と時期を参照。
  4. Palo Alto NetworksのPAN-OS・PanoramaもPHP重大脆弱性「php2shell」の影響対象に、管理画面へのアクセス制限を推奨 — セキュリティ対策Lab(外部)
    セキュリティ対策Lab(三村氏)。Palo Alto Networks製品への影響を整理。組み込み製品の例として参照。
  5. 2.24M Internet-Facing PHP Hosts, 59% on Versions With No Fix Coming: What We Know About php2shell — CybelAngel(外部)
    CybelAngel。Shodanの集計でPHPのホスト数と版の分布を示した記事。修正が届かない台数と母数を参照。
  6. Two Critical PHP Vulnerabilities Fixed in PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35: Patch and Restart Now — Rescana(外部)
    Rescana。各社の観測と勧告を時系列で更新する記事。侵害の確認状況と認証情報の入れ替えの助言を参照。
  7. PHPの脆弱性(PHP2Shell)最新情報|修正版・対策と各社の対応 — SITE PICK(外部)
    SITE PICK。国内のサービスの停止・再開の告知を一覧にした記事。「確認されていない」告知の広がりを参照。

おすすめ記事