「うちのサイトはEmDashで作ってもらったけど、今回のPHPの件は大丈夫?」。2026年10月21日にPHPの緊急アップデートが出てから、こう聞かれる場面が増えています。結論から言うと、EmDashで動くサイトは今回の脆弱性CVE-2026-109618とCVE-2026-109619の対象外です。PHPそのものが動いていないからです。ただし同じドメインやサーバーに、PHPで動く旧サイトやメールフォームが残っている場合は、その部分が対象になります。また「PHPが無いから何もしなくていい」わけではありません。この記事では、綴の自サイト tsudzuri.com で実際に確かめた手順と、PHPの代わりに残る更新の仕事を整理します。

EmDashのサイトに今回のPHP脆弱性は届かない

EmDashのサイトは、リクエストを受け取る場所にPHPがいません。だから今回の2件の脆弱性は届きません。ポイントは2つです。

  • 今回の脆弱性は「PHPの処理系」の中にある
  • EmDashはPHPを使わず、TypeScriptで書かれたAstroのアプリとして動く

何が起きたかの全体像はPHPに緊急の脆弱性2件(2026年10月)WordPressサイトで今日やることにまとめています。ここでは「EmDashならどうか」だけを扱います。

今回の脆弱性はPHPの処理系の中にある

PHP開発チームのセキュリティアドバイザリによると、修正版は8.5.12・8.4.27・8.3.36・8.2.35です。対象はWebリクエストを処理するすべてのPHPで、例としてPHP-FPM・Apacheのmod_php・php-cgi・FrankenPHP・LiteSpeedが挙がっています。どれも「WebリクエストをPHPに渡して処理させる仕組み」です。8.1以前には通常の修正版が出ないため、8.2以上への切り替えが必要です。

つまり問題はWordPressやプラグインのコードではなく、その下で動くPHP本体にあります。PHPの処理系を通らないサイトには、今回の2件が入り込む入口がありません。

EmDashはPHPを使わないCMS

EmDashの公式ドキュメント「Why EmDash」には、EmDashはPHPもWordPressのテーマやプラグインも動かさない、と明記されています。管理画面もサイトも、Astroというフレームワークの中で動くTypeScriptのアプリです。

Cloudflare Workersに置いた場合、リクエストを受けるのはCloudflareの実行環境(V8というJavaScriptエンジンを使った workerd)です。PHP-FPMやmod_phpに当たるものは、構成のどこにも出てきません。

自サイトで確かめた4つのこと

tsudzuri.com はEmDashで動いています(2026年10月22日に0.32.0から1.3.1へ更新)。「PHPが無い」を言葉だけで終わらせないよう、同じ日に次の4点を自分で確かめました。手順は自分のサイトにもそのまま使えます。

自分のサイトにPHPがあるかを確かめる4手順の図。package.json、デプロイ設定、本番の応答ヘッダー、.phpファイルの数を順に見る
上から順に見れば、PHPが動いているかを自分で判断できます。

package.jsonとデプロイ設定を見る

package.jsonの依存に並ぶのは、emdash・astro・@astrojs/cloudflare・react などnpmのパッケージだけです。PHPの処理系は1つも入っていません。

デプロイ設定の wrangler.jsonc には、Workersの入口になる src/worker.ts と、データベースのD1、画像置き場のR2、キャッシュ用のKVが書かれています。サーバーを1台借りてPHPを入れる、という手順はどこにもありません。

本番の応答ヘッダーと.phpファイルを見る

本番のトップページにcurlでアクセスし、応答ヘッダーを確かめました。返ってきたのは server: cloudflare で、PHPの存在を示す X-Powered-By は出ていません。WordPressのログイン画面にあたる wp-login.php は404でした。

tsudzuri.comの応答ヘッダーをcurlで確かめた実行結果。server: cloudflareでX-Powered-Byは無く、wp-login.phpは404、.phpファイルは0件
実行結果(2026年10月22日)。server: cloudflare の行と、wp-login.php の404を見てください。

リポジトリ全体を node_modules まで含めて数えても、拡張子が.phpのファイルは0件でした。

ヘッダーだけで判断しなかったのには理由があります。X-Powered-ByはPHPの設定で隠せるので、出ていないことだけではPHPが無い証拠になりません。依存とデプロイ設定、ファイルの中身まで見て、初めて言い切れます。

PHPが無くても残る更新は4つある

PHPの更新が要らない代わりに、別の更新が残ります。「PHPが無い」は今回の2件に無関係という意味で、更新ゼロという意味ではありません。残るのは次の4つです。

  • npmの依存パッケージ
  • EmDash本体
  • プラグイン
  • 管理画面のログイン

npmの依存パッケージ

EmDashのサイトは数百のnpmパッケージの上に乗っています。WordPressでいえば本体やプラグイン、それらに同梱されたライブラリの更新に当たるのが、ここの更新です。

この記事を書くにあたり、2026年10月22日に自サイトで npm audit を実行しました。指摘は29件(脆弱なパッケージの数)で、critical 2件とhigh 20件を含んでいました。件数は実行した時点のもので、脆弱性のデータベースが更新されると同じ状態でも変わります。その日のうちに依存を更新してastroを7.2.0から7.4.2へ上げ、critical 2件を含む28件が消えました。

残った1件は、devalueというパッケージのhighでした。@astrojs/react の6系が古いdevalueを指定していたためで、同じ日に @astrojs/react を7系へ上げるメジャー更新をして解消しました。今は npm audit の指摘は0件です。指摘の読み方はnpm audit の公式ドキュメントが基準です。

依存を更新した後のnpm outdated、npm audit、npm ls devalueの実行結果。emdashは0.32.0で最新は1.3.1、npm auditの指摘はdevalueの1件
1回目の依存更新の直後に撮った実行結果(2026年10月22日、EmDash本体の更新前)。この時点では npm audit に devalue の1件が残り、EmDash本体は0.32.0のままでした。

処理系の更新はCloudflareに移ります。ライブラリの更新はここに残るわけです。

EmDash本体

自サイトのEmDashは、2026年10月22日に0.32.0から1.3.1(npmの最新)へ上げました。

公式のUpdate EmDashによると、更新ツール upgrade-emdash は0.35.0以降が前提です。0.32だった自サイトは、まず手で0.35.0に上げてから、残りを更新ツールに任せました。emdash と @emdash-cms/cloudflare は同じ番号で一緒に上げる決まりです。

プラグイン

EmDashのプラグインには、隔離された別の実行環境で動くサンドボックス型と、サイトと同じプロセスで動くネイティブ型があります。サンドボックス型は、隔離の仕組み(CloudflareのWorker Loaderなど)が使えない環境では読み込まれません。ネイティブ型はサイトと同じ権限を持ちます。だから入れるなら中身を読んで信頼できるものに限ります。

自サイトで動いているのは field-kit の1件だけで、ネイティブ型として組み込んでいます。2種類の違いはEmDashのプラグインは2種類——サンドボックス型とネイティブ型で任せ方が違うに書きました。公式のChoosing a plugin formatも判断の基準になります。

EmDash 0.32の管理画面のプラグイン一覧(ローカル環境)。field-kitの1件だけが有効になっている
EmDash本体を更新する前に撮ったローカル環境の管理画面。入っているプラグインは field-kit の1件で、左下に v0.32.0 と出ています。

管理画面のログイン

EmDashの管理画面は、既定でパスキー(指紋や顔認証、端末のPINでサインインする仕組み)を使います。パスワードが存在しないので、使い回しや総当たりの心配は小さくなるわけです。ただしメールのログインリンクや、GitHubやGoogleのアカウント連携を有効にした場合は、そのメールやアカウントの守りもログインの入口になります。詳しくは公式のAuthenticationにあります。

それでも、誰にどの権限を渡すか、退職者のアカウントを消すかは運用の仕事で、CMSが変わってもここは人が決めるしかありません。

EmDash 0.32の管理画面のセキュリティ設定(ローカル環境)。パスキーの登録と追加ができる
EmDash本体を更新する前に撮ったローカル環境の管理画面。ログインはパスワードではなくパスキーで管理します。

構成で変わるのは更新の量より「誰が受け持つか」

構成を変えると、更新の総量よりも「誰が受け持つか」が変わります。WordPressを一般的なレンタルサーバーで動かす場合と、自サイトのEmDash構成を並べると次のとおりです。

項目

WordPress(レンタルサーバー)

EmDash(綴の構成)

OS・Webサーバー

サーバー会社

Cloudflare

言語の処理系

PHP(サーバー会社か管理者。契約による)

Workersの実行環境(Cloudflare)

CMS本体

WordPress(サイトの管理者)

EmDash(制作側がnpmで更新)

拡張機能

プラグイン・テーマ(サイトの管理者)

プラグイン(制作側)

ライブラリ

プラグインに同梱(プラグイン作者が更新)

npmの依存(制作側)

ログイン

パスワード。2段階認証やパスキーはプラグインで追加(運用側)

パスキーが既定(運用側)

拡張機能の数・情報量

非常に多い

まだ少ない

対応できる人の数

多い

少ない

違いが大きいのは上の2行です。Workersの実行環境はCloudflareが更新します。CloudflareのSecurity modelによると、V8に修正が出てから本番に届くまで24時間未満という運用です。今回のPHPのように「処理系の修正を待って、反映を確かめる」作業が、制作側から外れます。

サーバー保守がどこまで消えるかはサーバー保守を抱えたくない制作会社へ。Cloudflare前提の構成で消える作業・残る作業で詳しく書いています。

移行を考えるべき条件、まだ考えなくてよい条件

今回の件だけを理由に、急いでWordPressから移る必要はありません。まずPHPを更新するのが先です。そのうえで、移行を考えるかどうかは次の条件で分けられます。

移行を考えるべき条件

  • PHPやWordPressの更新を、誰がいつやるか決まっていない
  • サーバーの契約が古く、PHPのバージョンを自分で上げられない
  • 使っているプラグインの多くが、すでに更新されていない
  • サイトの中身が記事やお知らせ中心で、会員機能や決済が無い

まだ考えなくてよい条件

  • 保守契約があり、今回もすぐにPHPが更新された
  • 会員管理やネットショップなど、WordPressのプラグインに深く頼る機能がある
  • 社内に更新を回せる担当者がいて、手順が回っている

構成の考え方はWordPressを続けるか移るかの判断、実際の引っ越し手順はWordPressからEmDashへの移行にまとめています。

よくある質問

EmDashならセキュリティ対策は何もしなくていいですか

いいえ。今回のPHPの脆弱性には無関係ですが、npmの依存パッケージやEmDash本体の更新、プラグインの見極め、アカウントの管理は残ります。更新の担当者と頻度を決めておく必要がある点は、WordPressと変わりません。

WordPressのサイトでも、Cloudflareを前に置けば今回の件は防げますか

防げるとは言えません。php.netの発表では、完全な解決策はPHPの更新だけです。Cloudflareを前に置いても、後ろのサーバーでPHPが動いている限り、PHPの更新は必要です。

自分のサイトがPHPで動いているか、どう確かめればいいですか

この記事の4手順が使えます。WordPress本体はPHPで動くので、公開側を静的に書き出す構成でも、管理画面のあるサーバーではPHPが動いています。迷ったら、サーバーの管理画面でPHPのバージョン表示があるかを見るのが早い確かめ方です。

まとめ

綴では、WordPressからEmDashへの引っ越しと、EmDash以外も含めたPHPに依存しないCMSへの移行をお手伝いしています。今回の件で「次の更新を誰がやるのか」が気になった方は、WordPress移行のご相談についてをご覧ください。今の構成と更新の担当を一緒に整理するところから始められるので、まずはお問い合わせからご連絡ください。

本記事は2026年10月時点の情報です。