WordPressからEmDash移行①|PHP2Shellの脆弱性問題から考える、次の一手

WordPressからEmDash移行①|PHP2Shellで考える、次の一手 EmDash

「うちのサーバーのPHP、バージョンいくつだっけ?」。この質問に、すぐ答えられる人は、意外と多くありません。WordPressのサイトを動かしているのはPHPなのに、管理画面で触るのはWordPressだけ。PHPは、その下で黙って動いています。その土台で見つかった重大な脆弱性が、PHP2Shellです。

そんなPHP自体に、重大な脆弱性「PHP2Shell」が見つかりました。このシリーズ「WordPressからEmDash移行」は、WordPressからCloudflareのCMS「EmDash」への引っ越しを、全8回で考えます。第1回の今回は、PHP2Shellで何が起きたのかを整理して、「これを機に、移るかどうか」を判断する軸をそろえます。

PHP2Shellの結論:まずPHPを更新する。そのうえで、移行も選択肢に入れる

先に結論です。

順番 やること 中身
1 PHPのバージョンを確かめる 今動いているPHPが、修正版より前でないか
2 更新する 修正版(8.5.12、8.4.27、8.3.36、8.2.35)へ。難しければ暫定策と、公開範囲の見直し
3 次を考える PHPやサーバーの更新を、この先も自分で追い続けるか。EmDashへの移行も選択肢

移行は、更新の「代わり」ではありません。今のサイトを守る更新が先で、引っ越しの話は、そのあとです。

PHP2Shellとは:PHPの2つの欠陥を悪用する、リモートコード実行

PHP2Shellは、プログラミング言語PHPの、2つの欠陥に付けられた通称です。次のように整理されています。

項目 内容
CVE CVE-2026-109618、CVE-2026-109619
深刻度 PHPのセキュリティチームは、どちらもCVSS v4.0で9.2と評価
CVE-2026-109618 リクエストの後始末のとき、メモリ不足(OOM)によって壊れたデータが有効なものとして扱われる
CVE-2026-109619 前のリクエストが持っていた古い状態を、同じワーカーの次のリクエストが使ってしまう
攻撃の条件 PHPによると、認証なしの遠隔からコードを実行できうる
修正版 PHP 8.5.12、8.4.27、8.3.36、8.2.35(2026年10月21日に公開。日本時間では22日)

PHPのリクエストの処理を、ごはんにたとえるなら「お皿洗い」のようなものです。メモリが足りなくなって、洗い物が途中で止まったとき、洗いかけの食器を、きれいな食器として棚に戻してしまう。それを次のお客さんが使ってしまう、という状況に近いです。

PHP2Shellの影響範囲:Webを動かすPHPのほぼすべて

NCSC-NLがまとめた情報では、Webのリクエストを処理するPHPは、すべて危険にさらされるとされています。

  • 対象の動かし方:PHP-FPM、Apacheのmod_php、php-cgi、FrankenPHP、LiteSpeed
  • 特にリスクが高いのは、mod_phpです。認証されていないリクエストが、アプリケーションのコードが動く前に、攻撃を成立させられるためです
  • 修正版が出ていない古い系統もあります。PHP 8.1以前は、PHPプロジェクトの正式サポートの対象外です(7.4、8.0、8.1向けには、最小限のソースのバックポートが公開されています)

Tenableの解説によると、研究者のCalifは、WordPress、Drupal、Joomla、Magentoの特定のバージョンで、認証前のリモートコード実行を確認したとしています。WordPressのバージョンを最新にしていても、土台のPHPが古ければ、影響を受けうるわけです。

PHP2Shellの悪用状況:試みは観測されている

悪用の状況は、情報源によって表現が分かれています。確かめられる範囲では、次のとおりです。

  • Amazon Threat Intelligenceは、公開の4日前にあたる10月17日に、ハニーポット(おとり用のサーバー)で悪用の試みを観測したとしています。ただし、実際の環境で成功したかどうかは不明です
  • Cloudflareは、既知の攻撃経路向けのWAFルールを、無料プランを含む全顧客に提供しています。ただし、Cloudflare自身が暫定的な対策としており、Cloudflareを経由するトラフィックしか守れません
  • 公開されているPoC(実証コード)と称するものが出回っていますが、PHP Foundationによると、リリース時点で動くものは確認されていません。未検証のコードには、マルウェアが含まれることもあるため、試さないのが安全です

つまり、「まだ被害が出ていないから大丈夫」とは言えず、「すでに大規模に悪用された」と決めつけることも、できない状態です。だからこそ、更新を早く済ませることが、いちばんの対策になります。

出典: – php2shell(NCSC-NL) – php2shell FAQ(Tenable) – PHP公式のChangeLog

PHP2Shellへの対応:今日できる確認と更新

まず、動いているPHPのバージョンを確かめます。サーバーにログインできるなら、次のコマンドです。

# サーバーのコマンドライン用PHPのバージョン
php -v

# Web用のPHP(FPMなど)は、別のバージョンのこともあります
php-fpm -v

レンタルサーバーなど、コマンドが使えない環境では、WordPressの管理画面の「ツール → サイトヘルス → 情報 → サーバー」に、PHPのバージョンが表示されます。レンタルサーバーの管理画面で、PHPのバージョンを切り替えられる場合は、修正版へ切り替えます。

すぐに更新できない場合の暫定策として、PHPのセキュリティアドバイザリには、次の設定が挙げられています。ただし、攻撃の入口を減らすだけで、完全な対策ではありません。

対象 暫定策
CVE-2026-109618向け memory_limit=-1を設定し、アプリケーションから上書きできないようにする
CVE-2026-109619向け session.upload_progress.enabled=0を設定する。PHP 8.5ではfatal_error_backtraces=0も設定する
設定変更のあと すべてのPHPのワーカーを再起動する

また、CERT-EUは、すぐに更新できない組織に対して、修正が適用され検証されるまで、インターネットに公開しているアプリケーションを、公衆ネットワークから隔離することの検討を勧めています。

あるある:PHPのバージョンを、見ないふりしてしまう

ここで、よくある話を1つ。WordPressの更新は、管理画面に通知が出るので、気づけます。でもPHPのバージョンは、通知が出ないので、何年も前のまま、ということが起こりえます。

ごはんにたとえるなら、料理は毎日見ているのに、冷蔵庫の中の奥のほうは、見ないふりしている状態です。奥にあるものほど、期限が切れていても気づけません。PHPのバージョンも、定期的に見る習慣が必要です。

移行の判断軸:更新を追う層が、いくつあるか

WordPressのサイトは、いくつかの層でできています。更新を追う必要があるのは、それぞれの層です。

層 更新の担当 PHP2Shellの関わり
PHP サーバーの管理者(自分、またはレンタルサーバー) 今回の脆弱性の本体
WordPress本体 自分(自動更新を含む) PHPの上で動く
テーマ・プラグイン 自分 PHPの上で動く

一方、EmDashは、PHPではなく、Astroの上で動くTypeScriptのCMSです。Cloudflare Workersで動かすなら、サーバーのPHPを自分で更新する作業は、そもそもありません。今回のPHP2Shellの土台とは、別の土台にいる、ということです。

ただし、EmDashにも、別の脆弱性が見つかる可能性はあります。どんな仕組みでも、更新を続ける必要はあります。そのうえで、「更新を追う層が少ないほうが、守りやすい」というのが、移行を考える1つの理由です。

軸 続ける場合 移る場合
更新を追う層 PHP・WordPress・テーマ・プラグイン EmDash本体・追加機能など(PHPはなし)
今回のような脆弱性 PHPの更新を、自分で追う PHPは使わない土台(第2回)
引っ越しの手間 かからない テーマ・プラグインの作り直しなどが必要(第6・7回)

どちらが正解、という話ではありません。自分のサイトの規模、更新を続けられる体制、プラグインの数で、答えが変わります。このブログも、WordPressで動いています。だからこそ、更新を続けながら、次の選択肢の中身を、実際に確かめてみたいと考えました。

今回のまとめと次回予告

項目 内容
PHP2Shell PHPの2つの欠陥。認証なしのリモートコード実行になりうる(CVSS 9.2)
修正版 PHP 8.5.12、8.4.27、8.3.36、8.2.35
影響 Webを動かすPHPのほぼすべて。WordPressなどのCMSも、土台のPHPしだいで影響を受ける
確認 PHPのバージョン、レンタルサーバーの設定、暫定策
判断軸 更新を追う層の数、更新を続けられる体制、引っ越しの手間

次回は、移行先の候補になるEmDashの正体を整理します。Astroの上に作られたCMSで、プラグインが分けて動く仕組みです。

→ 第2回:EmDashとは何か

ほかのCloudflare関連の記事は、当ブログの技術ネタからどうぞ。

PHP2Shellの要点を1枚にまとめた図

ITもごはんも、腹八分目が長続きのコツ!

コメント