「うちのサーバーの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で、プラグインが分けて動く仕組みです。
ほかのCloudflare関連の記事は、当ブログの技術ネタからどうぞ。

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


コメント