10月21日の夜、首相がXで「大至急」と対応を呼びかけ、銀行や鉄道会社、人気サービスが次々にWebサイトを止めました。翌日には、首相自身の公式サイトも一時的に止まっていたことが分かりました。原因は、PHPというソフトウェアに見つかった2件の脆弱性です。

ニュースを見て「うちは関係あるのか」「何をすればいいのか」と感じた方のために、この記事は前提から順に説明します。技術の細部より、判断に必要なことを優先して書きます。

PHPとは何か

PHPは、Webサイトの裏側で動くプログラミング言語です。皆さんがブラウザでページを開くと、サーバー側でプログラムが動いて、ページの中身を組み立てて返します。その「サーバー側で動くプログラム」を書くための言語の一つがPHPで、1995年から使われています。

身近なところでは、世界で最も使われているWebサイト作成ソフトのWordPressがPHPで書かれています。国内のECサイト構築ソフトEC-CUBE、ブログツールのMovable Typeの一部、多くの問い合わせフォームや会員サイト、社内のグループウェアもPHPで動いています。サーバー側の言語が分かるWebサイトのうち、約7割がPHPを使っているという調査もあります。

つまり、自社でPHPという名前を意識したことがなくても、会社のサイトのどこかでPHPが動いている可能性はかなり高い、ということです。

今回の脆弱性「php2shell」とは

PHPの開発チームは10月20日、「重大な脆弱性2件を修正する版を、日本時間21日23時に公開する」と事前に告知しました。公開を前もって予告し、全利用者に準備を求める形は、影響の大きさを示しています。公開前に詳細が外部に漏れ、攻撃の手順を示すコードが出回り、攻撃の試みも観測されていました。

2件には「php2shell」という通称が付いています。1件目(CVE-2026-109618)は、サーバーのメモリが足りなくなったときの処理に欠陥があり、その隙に不正な状態を作れるものです。2件目(CVE-2026-109619)は、一つの要求を処理した後の内部の状態が残り、次の要求に悪用できるものです。どちらも、Webサーバーが一つのプログラムで多くの要求を次々に処理する仕組みの隙間を突いています。

重要なのは2点です。第一に、認証が要りません。ログインもパスワードも不要で、インターネットから細工した要求を送るだけで成立します。第二に、PHPそのものの欠陥です。WordPressやプラグインを最新にしても直りません。直すには、サーバーのPHPを修正版(8.5.12、8.4.27、8.3.36、8.2.35)に上げる必要があります。発見した研究者らによれば、PHP 5.4以降のすべての版が少なくとも一方の影響を受けます。

放っておくと何が起きるのか

この脆弱性が成立すると、攻撃者はサーバー上で自分のプログラムを動かせます。専門用語では「遠隔コード実行」と呼びます。会社の建物にたとえると、鍵のかかった事務所に、窓から入って自由に動き回れる状態です。

そこから起きることは、おおよそ次の順です。

  • 裏口の設置。攻撃者はまず、後からいつでも入れる仕掛け(Webシェル)を置きます。PHPを更新しても、この裏口は残ります
  • サイトの改ざん。偽のページを置く、訪問者を詐欺サイトへ飛ばす、偽の確認画面でコマンドを実行させる罠を仕込む。自社のサイトが、顧客を攻撃する道具になります
  • データの持ち出し。会員情報、注文履歴、問い合わせの内容。ECサイトなら、決済画面に細工をしてカード情報を盗む手口もあります。漏えいすれば報告と通知の義務が生じます
  • 踏み台としての利用。乗っ取ったサーバーから社内の他のシステムへ侵入する、迷惑メールや他社への攻撃の発信元にする、ランサムウェアの足がかりにする

ニュースで企業がサイトを止めたのは、この連鎖を防ぐためです。修正版が出るまでの間、入口そのものを閉じるという判断でした。

誰が対象で、誰が直すのか

対象は「PHPが動いているサーバーを持つ側」です。一般の利用者が自分のパソコンで何かをする必要はありません。総務省も22日朝、一般のインターネット利用者に特段の対応を求めるものではないと説明しています。

会社の立場では、サイトがどこで動いているかで、直す人が変わります。

  • 共用のレンタルサーバー(さくらのレンタルサーバ、エックスサーバー、ロリポップなど)。PHP本体の修正は事業者が行います。利用者は事業者の告知を確認し、管理画面でPHPの版を選べる場合は、修正済みの版に切り替えます
  • VPS、クラウド、自社のサーバー。更新は自社か、保守を委託している会社の仕事です。誰も担当していないサーバーが、最も危険です
  • 制作会社に作ってもらったまま、保守契約がないサイト。誰も更新しません。今日、制作会社に連絡して「PHPの版と更新の予定」を確認する必要があります
  • 古い版で動くサイト。8.1以前には通常の修正が出ません。7.4、8.0、8.1向けには最小限の修正がソースコードの形で公開され、Linuxの配布元が独自の修正版を出す場合もありますが、基本は8.2以上への移行です

自社がどれに当てはまるか分からない場合は、「サイトを作った会社」か「サーバーの請求書を出している会社」に聞くのが近道です。

政府と公的機関は何を伝えたか

今回は、公的機関の発信が普段より多く、速く、強い言葉でした。時系列で整理します。

  • 10月21日(火)日中、IPA。「事前準備のお願い」として、PHPを使っているプログラムの棚卸しと、修正版が出たらすぐ適用できる準備を呼びかけました。製品やネットワーク機器の内部でPHPが使われている場合があることにも触れています
  • 21日夜、国家サイバー統括室(NCO)。注意・警戒情報のXアカウントで、修正版の速やかな適用と、適用が難しい場合はWebサイトの一時停止も有効な対策だと呼びかけました
  • 21日22時前、高市首相。自身のXで、大至急のお願いとして、今夜公開される修正を可及的速やかに適用できるよう準備を求め、難しければサイトの一時停止も有効な策の一つだと投稿しました。首相が個別のソフトウェアの脆弱性について直接呼びかけるのは異例で、「経営層にリスクが伝わる」と評価する声が出ています。修正版はその約1時間後に公開されました
  • 22日朝、総務省。NCOの注意喚起を受け、Webサイトやシステムを運営する事業者に速やかな対策を求める一方、一般の利用者に特段の対応は不要だと補足しました
  • 22日、JPCERT/CC。対象の版、8.1以前の扱い、そして「侵害の痕跡の確認」の手順を示す注意喚起を公開しました(内容は後述)
  • 22日、首相や与野党のサイト。首相の公式サイトは22日午前に対策のため一時休止し、同日中に再開しました。自民党の政調会長が自身のサイトを止めたと投稿し、財務相のサイトが閲覧できない時間帯があり、立憲民主党の公式サイトも緊急メンテナンスで止まったと報じられています。22日午前の時点で、政府に被害の報告はないとされています

「止めることも有効な対策だ」と政府が明言したことには意味があります。サイトを止める判断は、現場の担当者だけでは下しにくいからです。

各社はどう動いたか

  • *海外の基盤事業者。**Cloudflareは、修正版の公開より前の21日昼(日本時間12時すぎ)に、無料プランを含むWAF利用者全員に保護ルールを既定で適用し、実際に攻撃の通信と、ルールをかいくぐろうとする試みを観測したと報告しています。AWSは告知を出し、自社サービス側の対応と、利用者向けのWAFルールを示しました。WordPressの保護を手がけるPatchstackは、21日午後にホスティング事業者から複数の悪用事例の報告を受けたと伝え、オランダの政府向け認証サービスなどが予防的に停止したことも記録しています。
  • *国内の事業者。**ITmediaの報道では、コドモン、BASE、Cygames、ニコニコ、pixiv、静岡銀行、阪急電鉄などが公式サイトやサービスを一時停止しました。レンタルサーバーでは、エックスサーバーが21日16時から公式サイトと管理画面を止め、利用者のサーバーは稼働させたまま、22日6時45分までに8.2〜8.5系の全サーバーへ修正を適用し、昼までに7.4〜8.1系、午後には5.6〜7.3系にも独自の修正を当てたと公表しています。さくらインターネットは21日22時30分から予防的な緊急メンテナンスに入り、レンタルサーバーのPHPに修正を適用し、22日14時時点で被害の報告はないとしています。GMOペパボも緊急メンテナンスを行いました。Six Apartは、Movable Typeのクラウド版は自社で更新し、自前で運用する版の利用者には更新を強く求めています。

共通しているのは、修正版を待たずに入口を閉じ、出たらすぐ当てたことです。これが今回の模範的な動き方でした。

自社がやること

立場別に、今日やることをまとめます。

  • *レンタルサーバーを使っている場合**
  • 事業者の告知を読み、自分のプランのPHPが修正済みかを確認する
  • 管理画面でPHPの版を選べるなら、8.2以上の修正済みの版に切り替える。切り替えでサイトが崩れる場合は、制作会社に相談する
  • WordPressを使っているなら、本体・テーマ・プラグインの更新も合わせて行う(今回の穴は塞がらないが、別の穴を減らせる)
  • *自社やクラウドでサーバーを運用している場合**
  • PHPを今すぐ修正版に更新し、PHPのプロセスを再起動する。OSの配布元(Red Hat、Ubuntuなど)の修正済みパッケージがあればそれを使う
  • すぐに更新できないなら、更新までサイトを止めるか、公開範囲を社内に限定する。WAFの緊急ルールは時間稼ぎにはなるが、修正の代わりにはならない
  • 8.1以前で動くサーバーは、版を上げる計画を今週中に立てる。インターネットで「修正プラグイン」として配られているものは使わない
  • *保守を委託している、または誰が見ているか分からない場合**
  • 今日中に、制作会社や保守会社へ「PHPの版、修正の適用状況、適用予定日時」を文書で問い合わせる。返事がない間は、止めることも選択肢に入れる
  • *侵害の痕跡を確認する(JPCERT/CCの示す観点)**

修正を当てる前にすでに入られていた可能性があるため、次を確認します。異常に長い、または形式のおかしい「PHPSESSID」という名前のCookieが返されていないか。不審なファイル送信形式(multipart)の要求の前後に、メモリ上限のエラーやHTTP 500が繰り返されていないか。PHPの処理プロセスが予期せず終了したり頻繁に再起動したりしていないか。不審なプロセス、外部への通信、見覚えのないファイルがないか。痕跡が見つからなくても攻撃を受けていないとは断定できない、という注意も付いています。疑わしければ初動対応に入り、サーバーが保持している認証情報の入れ替えも検討してください。

経営の目で見ると

今回の出来事から、経営層が持ち帰るべき点は3つあります。

  • *止める判断を、誰ができるのか。**今回、多くの会社が修正版を待たずにサイトを止めました。止めれば売上や問い合わせが止まります。その判断を現場の担当者に負わせず、経営が「この条件なら止めてよい」と事前に決めておくことが要ります。NetScalerの記事で書いたのと同じ論点が、今回はWebサイト全般で問われました。
  • *自社のサイトの「誰が・何で・どこで」を即答できるか。**サイトがどのサーバーで、どの版のPHPで動き、誰が更新するのか。これを調べるのに半日かかる会社は、次の緊急時にも半日遅れます。公開資産の棚卸しは、この問いに即答するための作業です。
  • *更新は定例業務である。**先日の月例更新の記事で書いたとおり、脆弱性の発見は加速しています。今回のような緊急対応は、更新を毎月回している会社にとっては手順の延長で、回していない会社にとっては危機になります。差を生むのは、技術の知識より、更新を業務として組み込んでいるかどうかです。

出典

PHPphp2shell脆弱性対応WordPress初心者向け