業界ニュース・Googleアップデート

PHPに認証不要のコード実行を許す重大な脆弱性2件、修正版が公開――首相は「サイト一時停止も有効」【2026年10月】

PHPに認証不要のコード実行を許す重大な脆弱性2件、修正版が公開――首相は「サイト一時停止も有効」【2026年10月】

PHPに、認証なしでリモートコード実行を許すおそれのある重大な脆弱性2件(CVE-2026-109618・CVE-2026-109619)が見つかり、2026年10月21日に修正版(8.5.12・8.4.27・8.3.36・8.2.35)が公開されました。PHP公式・IPA・首相の呼びかけ・エックスサーバーの対応を、一次情報で整理します。

何が起きたか:認証不要でコードを実行されるおそれのある2件の脆弱性

2026年10月21日、PHP開発チームはセキュリティアドバイザリを公開し、リモートコード実行(RCE)につながり得る重大な脆弱性2件を修正したと発表しました。PHP公式サイトのアドバイザリは、認証なしでのリモートコード実行が起こり得ると説明し、すべてのPHPユーザーに「直ちに更新すること」を強く求めています。

修正版は PHP 8.5.12、8.4.27、8.3.36、8.2.35 です。PHPのニュース欄によると、事前予告(10月20日)の時点で、公開予定は協定世界時の21日14:00、日本時間では21日23:00でした。2件とも、事前予告ではCVSS v4.0で9.2と評価されています。

国内の報道では、この脆弱性が「ウェブサイトの7割で使われるPHP」に関わるとして大きく取り上げられました。ここでの「7割」は報道の見出し・本文に基づく数字で、本記事では独自に検証していません。

10月21日の動き(日本時間)の時系列図。PHP公式の事前予告、エックスサーバーの管理画面停止、各サービスの緊急メンテ、首相と国家サイバー統括室のX投稿、修正版の公開予定を並べている
図1: 10月21日の動き(日本時間)

2件の脆弱性の中身(PHP公式アドバイザリより)

CVE 種類 PHP公式の説明
CVE-2026-109618(GHSA-w8hw-w9fx-j79w) メモリ不足(OOM)処理に起因するRCE メモリ不足の処理がリクエストの内部データを初期化している途中でPHPを中断させ、後続の後始末処理が不正なデータを正しいものとして扱ってしまう可能性がある
CVE-2026-109619(GHSA-6wmf-4rv5-p3rp) 古いグローバル状態の残存によるRCE リクエストが持つ内部状態が、元になったメモリが解放された後も残り、同じワーカーで処理される次のリクエストが、通常の初期化の前にその状態を使ってしまう可能性がある
CVE-2026-109618(メモリ不足処理)とCVE-2026-109619(古い内部状態の残存)が、それぞれリモートコード実行につながる流れの図解
図2: 2件の脆弱性が、リモートコード実行につながる流れ(PHP公式アドバイザリの説明をもとに作図)

影響を受けるのは、PHP-FPM、Apache の mod_php、php-cgi、FrankenPHP、LiteSpeed など、Webリクエストを処理するPHP環境全般です。アドバイザリによれば、とくにリスクが高いのは mod_php で、アプリケーションのコードが動く前に、認証のないリクエストだけで攻撃を引き起こせる実証済みの攻撃手法があるとされています。

IPAの注意喚起は、CVE番号をCERT-EUの注意喚起に基づいて記載しており、同注意喚起ではPHP 5以降が影響を受けるとされています(IPAのページに修正版の番号や深刻度の記載はありません)。バージョン範囲を判断するときは、PHP公式のアドバイザリとお使いの提供元の情報を確認してください。

更新できない古いPHPはどうなるか

PHP公式は、PHP 8.1以前はPHPプロジェクトからの更新を受けられないと明記しています。一部のベンダーはバックポートを提供しているため、提供元への確認かバージョンアップが必要です。公式は、PHP 7.4、8.0、8.1向けに最小限のソースのバックポートも公開しています。また、PHP 8.2は2026年12月31日にサポート終了となります。

IPAも、サポートが終了した古いPHPを使い続けているサイトやサービスを、優先して対応するよう呼びかけています。攻撃者が短時間で攻撃を仕掛けるおそれがあるためです。

修正版を適用できない間の緩和策(PHP公式)

PHP公式は、更新の代わりにはならない暫定策として、次の設定を挙げています。アプリケーション側で上書きできない形(FPMのプール設定やApacheの設定など)で行うことが前提です。

  • CVE-2026-109618向け:memory_limit を -1 に、post_max_size を 8M(ファイルのアップロードが必要なら 32M)に、upload_max_filesize を 4M に設定する。リクエストサイズ、入力フィールド数、マルチパートの部品数、ヘッダー数、ネストの深さの上限をWebサーバーやプロキシで強制する。RLIMIT_AS や RLIMIT_DATA は、脆弱なメモリ確保の失敗を誘発し得るため使わない
  • CVE-2026-109619向け:session.upload_progress.enabled を 0 に(PHP 8.5 では fatal_error_backtraces も 0 に)。php.ini、FPMプール、またはリクエスト解析前に効くサーバー設定に書き、ワーカーをすべて再起動する。ini_set() や FPM の .user.ini には頼らない

公式はこれらを、特定の経路への露出を減らすだけで、環境が安全になるわけではないと位置づけています。修正版への更新が第一です。

政府・IPA・首相の動き

IPA(情報処理推進機構)は10月21日に注意喚起を掲載しました。その時点では、この脆弱性を悪用した攻撃は確認していないものの、今後悪用されるおそれがあるとして予防的に発信する、という位置づけです。推奨する対応は、PHPを使っているプログラムや製品の棚卸し、製品に組み込まれたPHPの確認、修正プログラムをすぐ適用できる準備です。

高市早苗首相は、10月21日の21時55分ごろ(日本時間)、自身のXに投稿しました。投稿は「皆様に、今夜に対応して頂きたい大至急のお願いです」で始まり、公開しているウェブサイトでPHPを使っているか確認すること、同日午後11時(日本時間)に公開される修正パッチを、可及的速やかに適用できるよう準備することを求めています。あわせて、修正パッチの適用が難しい場合は、ウェブサイトなどを一時的に停止させることも、リスクを低減させるための有効策の一つと考えられる、としています。投稿の全文は次のとおりです(Xの公式埋め込み)。

投稿は、国家サイバー統括室のXアカウント(@cyber_forecast)も参考にするよう案内しています。同アカウントは、21日の21時44分ごろ(日本時間)に、修正パッチを適用できない場合は「ウェブサイト等を一時的に停止させることも、リスクを低減させるための有効策の一つ」とする旨を投稿しています。また、22時57分ごろ(日本時間)には、PHPの更新プログラムが公開されたと伝え、可及的速やかに適用するよう呼びかけました。

国内サービスで相次いだ緊急メンテナンス

Impress Watchの報道によると、21日午後から夜にかけて、国内の多くのサービスが緊急メンテナンスや一時停止に入りました。記事には、BASE(ネットショップ)、コドモン(保育園などの施設向けサービス)が21日午後からメンテナンスに入ったこと、Pixiv、DMM.com、niconicoが緊急メンテナンスを実施したこと、さくらインターネットが一部サービスで緊急メンテナンスを実施したこと、多数のゲームが一時停止したことが挙げられています。多くのサービスは20時すぎから止まったとされています。

修正パッチは、予定どおり日本時間21日23時ごろに公開されたと記事に追記されています。時刻の細かい点は報道によって表現が異なるため、正確な公開時刻はPHP公式の発表を確認してください。

エックスサーバーの対応

エックスサーバー株式会社は、21日16:00から、サービスサイトとアカウント管理画面、サーバーパネル、WEBメール、ファイルマネージャ、各種API、新規申し込み、お問い合わせフォームなどを一時停止しました。再開の見込みは、21日深夜から22日未明とされていました(対応状況により前後)。同社は、この停止が自社サービスへの不正アクセスによるものではないと明記しています。

契約中のサーバーについては、Webサイトの表示やメールの送受信は通常どおり使えるとしています。サーバー側でも、修正版の公開前の緩和策を含む安全対策を順次適用中で、修正版の公開後は、同社が提供する各PHPバージョンに公式の修正版や独自の修正を順次適用する予定です。利用状況によっては、管理画面の再開後に利用者へ追加の対策をお願いする場合があり、その際は改めて案内するとしています(上記は2026年10月21日21:15更新の告知による)。

当サイトでの対応:サイトを閉じ、静的HTMLで配信

Scale Basicsの対応の図。WordPressとPHPで配信する構成から、PHPを動かさず静的HTMLだけを配信する構成へ切り替え、止めた機能を示している
図4: 当サイトの対応(WordPress配信から静的HTML配信へ)

当サイト(Scale Basics)は、エックスサーバー上のWordPressで運営しており、サーバーのPHPは 8.3.35 でした。10月22日未明の時点で、修正版の 8.3.36 には上がっていませんでした。サーバーパネルは停止中で、PHPのバージョンを自分で切り替えることもできませんでした。

そこで次の順で対応しました。

  1. まず .htaccess で全ページを503(メンテナンス中)の静的ページに差し替え、WordPressとPHPを通らない形で外部からのアクセスを止めました。WordPressのメンテナンスモード用プラグインは、PHPの上で動くため、PHP本体の脆弱性は防げないと考えたためです
  2. その後、全526ページを静的HTMLとして保存し、PHPの実行を禁止したうえで、静的HTMLだけを配信する構成に切り替えました。画像・CSS・JSを含め、全ページと参照ファイルが正常に読み込めることを機械的に確認しています
  3. 代わりに、資料請求フォーム、お問い合わせ、サイト内検索、「この記事をAIに聞く」などPHPを必要とする機能は、いったん外しました。WordPressの管理画面と記事投稿も、サーバー側の修正が済むまで使えません

共有サーバーでは、php.ini をFTPで編集しても実際の設定には反映されませんでした。一方、.user.ini は反映されました。ただし、PHP公式が示した2つ目の緩和策は、.user.ini には頼らない前提です。このため、設定による緩和には頼らず、「PHPを動かさない」ことで守る方針にしました。

運営者・開発者が今やること

PHPのバージョン別に、まず何をするかを示した図。8.2〜8.5は修正版へ更新、8.1以前は最優先で対応、すぐ更新できない場合は暫定策か一時停止・静的化
図3: PHPのバージョン別の最初の一手
  1. PHPのバージョンを確認する。WordPressなら、管理画面の「ツール」→「サイトヘルス」→「情報」→「サーバー」で確認できます
  2. 8.5、8.4、8.3、8.2 を使っているなら、修正版への更新をレンタルサーバー事業者が済ませたか確認する。済んでいなければ、自分で切り替えられるかを事業者の案内で確認する
  3. 8.1以前を使っているなら、最優先で対応する。公式の更新は出ないので、バージョンアップか、ベンダーのバックポートの有無の確認が必要
  4. すぐ更新できないときは、PHP公式の暫定策を検討するか、IPAと首相の呼びかけにあるとおり、サイトの一時停止や静的化を選ぶ
  5. 更新後、サイトの表示やプラグインの動作を確認する。PHPを上げると、古いプラグインが動かなくなることがある

本記事は2026年10月22日時点の情報です。状況は変わる可能性があります。最新の情報は、下記の一次情報で確認してください。

参考にした一次情報・報道

SEO基礎おじ
執筆・監修

SEO基礎おじ

フリーランスのWeb制作者/SEO実務者(実務歴3年以上)。HTML・CSS・JavaScript・WordPressを自分で実装する立場から、テクニカルSEO・構造化データ・GA4/Search Consoleの計測設計までを一人で担当しています。当サイトを実験台にして、施策の効果は自分で取った実測データで検証してから記事にしています。「SEO基礎おじ」は筆名です。

監修者プロフィールを見る →