趙健の技術ノート

PHP2Shell が PHP の重大な脆弱性を悪用、各国が警報!WordPress コーポレートサイトの代替案:無料・保守不要・高速・安全

技術 約8797文字 · 22分で読める - 回閲覧

2026年10月21日、PHP は緊急のセキュリティアップデートを公開し、重大な脆弱性 CVE-2026-109618 と CVE-2026-109619 を修正しました。攻撃者はログインせずに、リクエストを1つ送るだけでサーバー上で任意のコードを実行できます。

脆弱性を発見した Wiz Research は、この2件を組み合わせた攻撃スクリプト PHP2Shell を作成し、最新版の WordPress、Drupal、Joomla でログイン不要のリモートコード実行を実証しました(Wiz)。

WordPress は PHP で動いています。今回の脆弱性は PHP 本体にあるため、WordPress やプラグインを最新版にしていても防げません。WordPress で作ったコーポレートサイトはすべて対応が必要です。

PHP の重大な脆弱性 CVE-2026-109618・CVE-2026-109619 と攻撃ツール PHP2Shell、CVSS 9.2

PHP の脆弱性 CVE-2026-109618・CVE-2026-109619 の概要

PHP 公式のセキュリティ告知より:

項目内容
CVE 番号CVE-2026-109618、CVE-2026-109619
公式名称RCE via OOM corruption、RCE via stale global state
深刻度CVSS 4.0 で 9.2
影響認証不要のリモートコード実行(RCE)
対象Web リクエストを処理するすべての PHP:PHP-FPM、Apache mod_php、php-cgi、FrankenPHP、LiteSpeed
最も危険Apache mod_php。サイトのコードが動く前に攻撃が成立する
修正版PHP 8.5.12、8.4.27、8.3.36、8.2.35
公式の修正なしPHP 8.1 以前
  • CVE-2026-109618:メモリ不足(OOM)の処理中に、リクエストのデータが半分しか初期化されていない状態で PHP が中断されることがあり、その後の後処理で不正なデータを正しいものとして扱ってしまう。
  • CVE-2026-109619:リクエスト終了後、メモリが解放されても一部の内部状態が残り、同じワーカープロセスが次のリクエストを処理するときに、初期化前の古い状態を使ってしまうことがある。

各国が警報、サイトの緊急停止が相次ぐ

以下の時刻はすべて2026年10月21日です。

EU の CERT-EU(NL Times)、英国 NCSC(Patchstack)、オランダ NCSC(Sansec)、日本の国家サイバー統括室と IPA(Impress Watch)が相次いで警報を出し、早急なパッチ適用を求めました。EU、英国、日本は、パッチをすぐ適用できない場合はサイトを止めることも勧めています。

攻撃はすでに始まっている

WordPress セキュリティ企業 Patchstack のリアルタイム記録:

  • UTC 07:34:複数のホスティング事業者から攻撃被害の報告。
  • UTC 07:43:Cloudflare の CTO が初期の攻撃を確認したと発表し、WAF ルールを導入。
  • UTC 13:52:PHP が修正版を公開。
  • UTC 13:57:Patchstack が観測しているのはまだ偵察的な攻撃のみ。修正内容が公開されれば増えると予測。

Wiz Research の攻撃ツール PHP2Shell が WordPress を攻撃し、自動でターゲットを特定してコマンドを実行する様子

オランダの国家サイバーセキュリティセンター(NCSC)は、この時点で実際の攻撃は確認していないとしています。前例として、2024年6月に PHP の脆弱性 CVE-2024-4577 が公開されたときは、Akamai が24時間以内に攻撃の試みを観測しました(The Hacker News)。

オランダ・フィンランドでは政府サイトを停止

  • オランダ下院(Tweede Kamer)のサイトが一時停止。サッカークラブ Fortuna Sittard、警察労組 ACP、オランダ王立薬剤師会 KNMP、公共交通事業者 EBS のサイト、オランダの大学・研究機関が共同で使う IT ネットワークの一部も停止しました(NL Times)。
  • オランダ NCSC 自身のサイト、テックサイト Tweakers、セキュリティニュースサイト Security.NL も停止(Sansec)。
  • オランダ政府の認証システム DigiD と行政ポータル MijnOverheid がサービスを停止(Patchstack)。
  • フィンランド政府の IT センター Valtori が、フィンランド国土測量局やヘルシンキ見本市センターなど国の機関の公開サイトを順次停止(Pasquale Pillitteri)。

日本:高市首相が深夜に呼びかけ、pixiv や DMM が緊急メンテナンス

日本時間21時55分、高市早苗首相が X に投稿しました(Impress Watch より):

皆様に、今夜に対応して頂きたい大至急のお願いです。(中略)公開しているウェブサイトでPHPを使用しているか確認し、今夜、10月21日午後11時(日本時間)に公開される修正パッチについて、可及的速やかに適用できるよう準備をお願いします。修正パッチを速やかに適用することが困難な場合は、例えばウェブサイト等を一時的に停止させることも、リスクを低減させるための有効策の一つと考えられます。

国家サイバー統括室と IPA も注意喚起を出し、一部の自治体はシステムの一時停止を予告しました。同じ記事で挙げられたサービス:

  • ネットショップ作成サービス BASE、保育施設向けサービス「コドモン」が21日午後からメンテナンス。
  • pixiv、DMM.com、niconico、さくらインターネットの一部サービスが緊急メンテナンス。20時すぎから多くのサービスが一時停止。
  • 「グランブルーファンタジー」「ウマ娘 プリティーダービー」など多くのゲームもサービスを一時停止。

WordPress のメンテナンスモードでは防げない

Sansec はこう指摘しています:WordPress や Magento に付いているメンテナンスモードは役に立ちません。アプリがメンテナンスの設定を確認する前に、PHP がリクエストを処理してしまうからです。有効なのは PHP-FPM を止めて、Web サーバーから静的なメンテナンスページを返すことです。

つまりその夜、WordPress のサイトにできることは2つだけでした。誰かがサーバーにログインして PHP を更新するか、サイトごと止めるか。管理する人がいないサイトは、そのまま公開し続けるしかありません。

WordPress のコーポレートサイトが一番危ない理由

PHP 本体の脆弱性は、WordPress のプラグインでは防げない。 mod_php ではサイトのコードが動く前に攻撃が成立するため、セキュリティプラグインも、画像認証も、管理画面の URL 変更も効きません。Sansec によれば、直す方法はサーバーの PHP を更新することだけ。サーバーを自分で管理していなければ、レンタルサーバー会社の対応を待つしかありません。

サポートの切れた PHP を使うサーバーが今も大量にある。 セキュリティ企業 Mallory が10月20日に Shodan で調べたところ、インターネットに公開されている約88.4万台のホストが、レスポンスヘッダーで PHP 8.1 以前のバージョンを示していました。バージョンを示していたホスト(約150万台)の59%にあたります(ヘッダーによる集計で、すべてが影響を受けるとは限りません。The Hacker News より)。これらのバージョンには公式の修正がなく、事業者にバックポートを頼むか PHP を上げるしかありません。古いテーマやプラグインは、PHP を上げると動かなくなることがよくあります。

毎年お金がかかり続ける。 レンタルサーバー代、保守契約、有料プラグインの年間ライセンス、そして被害にあえば復旧費用。会社概要、事業内容、実績、お知らせ、採用情報を載せるだけのサイトのために、PHP と MySQL を動かし続け、10月21日のような夜にはサーバーの前で待機する人も必要になります。

私の提案:Astro + Cloudflare / GitHub / Vercel / Netlify

私は2年前から、お客様に WordPress や PHP の環境をおすすめするのをやめ、すべてのお客様のサイトを Astro と Cloudflare、GitHub、Vercel、Netlify の組み合わせに移行しました。これらの無料プランで企業サイトには十分で、サーバー代は1円もかかりません。以前の WordPress サイトより速く、安全で、手間もかかりません。

今回の PHP の脆弱性でも、これらのお客様のサイトは何の対応も必要なく、その夜も普段どおり表示されていました。私のブログ zhaojian.net も同じ構成で、12言語に対応しています。

仕組みはシンプルです:

  • Astro がビルド時にすべてのページを生成し、公開されるのは HTML、CSS、JS、画像だけ。
  • ソースコードは GitHub で管理し、文章の修正やお知らせの追加はコミットするだけ。
  • Cloudflare Pages / Vercel / Netlify がコミットを受けて自動でビルド・公開。数分で反映され、ページは世界中の CDN から配信されます。

より安全:サーバー上に PHP もデータベースも管理画面もないため、PHP2Shell のような攻撃ツールには攻撃する対象がありません。今後 PHP や WordPress、プラグインに脆弱性が見つかっても、サイトには関係ありません。

より速い:ページはできあがったファイルなので、訪問者に一番近い CDN から直接届きます。日本、中国、欧米のどこからでも速く表示されます。

無料・保守不要:レンタルサーバーの更新費用はかからず、残るのはドメイン代だけ。ログインするサーバーも、アップデートするソフトもありません。

WordPress と Astro の静的サイトの比較

WordPress のサイトAstro の静的サイト
動いているプログラムPHP + MySQL + テーマ + プラグインなし(静的ファイルのみ)
今回の PHP の脆弱性影響あり。夜中に更新するかサイト停止影響なし
サーバー代レンタルサーバーを毎年更新無料
保守WordPress、プラグイン、PHP を定期的に更新不要
表示速度サーバー性能とキャッシュ設定次第CDN から直接配信
更新方法管理画面にログインして編集コミットすれば自動でビルド・公開
多言語対応多言語プラグインに依存ビルド時に各言語のページを生成

ネットショップ、会員ログイン、予約システムのようにリアルタイムでデータを読み書きする機能は、別途検討が必要です。お問い合わせフォーム、お知らせ、実績、採用情報、多言語対応といった企業サイトでよく使う機能は、静的サイトと外部のフォームサービスで実現できます。

WordPress から Astro への移行手順

  1. ページの洗い出し:すべてのページ、投稿、画像、フォームを一覧にする。
  2. コンテンツの書き出し:投稿と固定ページを Markdown に変換し、画像もまとめてダウンロード。
  3. URL を維持:できるだけ元の URL を使い、変わる場合は 301 リダイレクトを設定して検索順位の低下を防ぐ。
  4. デザイン:そのまま再現するか、この機会に新しいデザインにしてスマホにも対応させる。
  5. 機能の置き換え:フォームは外部のフォームサービスに、アクセス解析はサーバー不要のものに切り替える。
  6. ドメインの切り替え:問題がないことを確認してからドメインを新しいサービスに向け、旧サーバーは契約満了で解約。

よくある質問

WordPress のサイトは PHP2Shell で攻撃される?

されます。脆弱性は PHP 本体にあるため、サーバーの PHP が 8.5.12、8.4.27、8.3.36、8.2.35、またはレンタルサーバー会社が修正済みのバージョンでなければ影響を受けます。WordPress のバージョンは関係ありません。

WordPress のメンテナンスモードにすれば防げる?

防げません。メンテナンスモードが効く前に PHP がリクエストを処理してしまいます。PHP を更新するか、PHP-FPM を止めて静的なメンテナンスページに切り替えてください。

PHP 8.1 以前のバージョンはどうすればいい?

PHP 公式の更新はもうありません。レンタルサーバー会社にバックポートを依頼するか、PHP 8.2 以降に上げてください。テーマやプラグインが対応していない場合は、静的サイトへの移行も検討してください。

静的サイトは本当に無料?

Cloudflare Pages、Vercel、Netlify、GitHub Pages の無料プランで企業サイトには十分です。必要なのはドメイン代だけです。

WordPress のサイトを乗り換えたい方はご相談ください

こんな方はお気軽にどうぞ:

  • WordPress で作った企業サイトがあり、10月21日の夜、止めるべきか、誰にパッチを頼めばいいか分からなかった。
  • サーバーの PHP が 8.1 以前のまま。
  • 毎年レンタルサーバー代と保守費用を払っている。
  • サイトを作った制作会社や担当者と連絡が取れず、誰も管理していない。
  • 日本語・英語・中国語などの多言語サイトが必要。

WordPress のコーポレートサイトを Astro の静的サイトに移行します:より速く、より安全に。レンタルサーバーの更新費用は不要、コミットするだけで自動公開、保守を誰かに頼む必要もありません。

プロフィールページの WeChat(757118)または X(@zhaoJianNet)から、現在のサイトの URL とご要望をお送りください。具体的な移行プランをご提案します。

参考

共有:

コメント