EmDash – プラグインのセキュリティ問題を解決したWordPressの精神的後継
(blog.cloudflare.com)- Cloudflareが開発したEmDashは、WordPressの構造的な限界を克服するため、TypeScriptとサーバーレスアーキテクチャで新たに設計されたオープンソースCMS
- 各プラグインを分離されたサンドボックス環境で実行し、WordPressサイトのセキュリティ問題の96%を占めていたプラグイン脆弱性を根本的に遮断
- x402決済標準を内蔵し、コンテンツ単位の**オンデマンド課金(pay-per-use)**をサポート、AIベースのWebトラフィック時代に適した収益化構造を提供
- Cloudflare Workersベースのサーバーレス構造により、リクエスト時に自動でスケールアップ・ダウンし、コスト削減と高性能処理を同時に実現
- AIエージェント管理、Passkey認証、Astroテーマ構造などのモダンな機能を統合し、WordPressの精神を継承しつつ完全に新しく再構成されたCMS
EmDash 概要
- EmDash は、WordPressの構造的な限界を解決するため新たに設計されたオープンソースCMSで、完全なTypeScriptベースとサーバーレスアーキテクチャを採用
- WordPressの中核機能とは互換性があるが既存コードは使用しておらず、MITライセンスで配布可能
- Cloudflare WorkersのDynamic Workerを利用し、各プラグインを独立した**分離環境(isolate)**で実行
- Astroフレームワークを基盤に、コンテンツ中心のWebサイトに最適化されたパフォーマンスを提供
- EmDashはGitHubで公開されており、CloudflareアカウントまたはNode.jsサーバー上に直接デプロイ可能
- プラグインセキュリティ、市場依存の解消、AIベース管理、x402決済対応など、WordPressが解決できなかった問題を根本から改善
WordPressの成果と限界
- WordPressはインターネットの40%以上を支え、出版の民主化を牽引した代表的なオープンソース成功例
- しかし24年が経過した現在、ホスティング環境と開発パラダイムは大きく変化
- 初期にはVPSのレンタルが必要だったが、現在では世界中の分散ネットワークにJavaScriptバンドルをアップロードするだけでデプロイ可能
- EmDashはWordPressの精神を受け継ぎながら、現代的なWebインフラとセキュリティ要件に合わせて再構成された形
WordPressプラグインのセキュリティ問題を解決
- WordPressサイトの**セキュリティ問題の96%**はプラグインに起因
- プラグインはPHPスクリプトとしてデータベースやファイルシステムへ直接アクセス
- インストール時にほぼすべての権限が付与され、分離や権限制限がない
- EmDashは各プラグインをDynamic Workerベースのサンドボックス環境で実行
- プラグインは明示的な宣言(manifest)を通じて必要なcapabilitiesのみを要求
- 例:
read:content,email:sendなど必要な権限だけを付与 - ネットワークアクセスも明示されたホストに限定
- インストール前にプラグインが要求する権限を明確に確認でき、OAuthに似た透明な権限付与構造を提供
- 管理者は権限要求を基準にインストールポリシーの自動化が可能
プラグインセキュリティとマーケットプレイス依存の解消
- WordPress.orgはプラグインのセキュリティ問題のため手動レビュー手順を運用しており、待機キューは800件以上
- GPLライセンスの制約により、コード再利用と商用化が制限
- EmDashは2つの構造的改善を通じて市場ロックインを解消
- プラグインライセンスの自由化: EmDashとはコード共有がないため、開発者は望むライセンスを選択可能
- セキュアなサンドボックス実行: サイトはプラグインコードを直接見る必要がなくても信頼可能
- プラグインは明示されたcapabilityのみを実行するため、セキュリティリスクを細かく評価可能
- この構造は中央集権的なマーケットプレイスへの依存低減につながる
- 信頼できるセキュリティモデルが確立されれば、開発者と利用者は自由にエコシステムを拡張できる
x402決済標準を内蔵 — コンテンツアクセスの有料化
- EmDashはx402標準を標準サポートし、HTTP 402 Payment Requiredレスポンスによるオンデマンド課金が可能
- ユーザーはサブスクリプションなしで**コンテンツ単位の課金(pay-per-use)**が可能
- サイト運営者はウォレットアドレスと価格設定だけで収益化が可能
- これはAIエージェントベースのWebトラフィック時代に合わせた新しいビジネスモデルを提供
- すべてのEmDashサイトはAI時代に適した内蔵収益構造を備える
サーバーレス基盤の拡張性とコスト削減
- WordPressはサーバープロビジョニングが必要なため、遊休リソースのコストが発生
- EmDashはCloudflare workerdベースのv8 isolateアーキテクチャを活用
- リクエスト時に即座にインスタンスを生成し、リクエストがなければ自動でscale-to-zero
- CPU使用時間に対してのみ課金
- Cloudflare for Platformsを通じて数百万インスタンスへの自動スケールが可能
- 低コスト・高性能な構造により、大規模トラフィック処理と無料ティア提供に有利
Astroベースのモダンなテーマ構造
- EmDashテーマはAstroプロジェクトとして構成され、以下の要素を含む
- Pages: コンテンツレンダリング用ルート
- Layouts: 共通HTML構造
- Components: 再利用可能なUI要素
- Styles: CSSまたはTailwind設定
- Seedファイル: CMSが生成するコンテンツタイプの定義
- AstroはLLMの学習データに含まれる人気フレームワークで、開発者に扱いやすい
- WordPressテーマの
functions.phpベース構造と異なり、EmDashテーマはデータベースにアクセス不可のためセキュリティを強化
AIネイティブCMS — MCP、CLI、Agent Skills
- EmDashはAIエージェントが直接管理可能なCMSとして設計
- 反復的なコンテンツ移行やフィールド変換作業を自動化
-
Agent Skills
- EmDashインスタンスはAgent Skillsを内蔵し、プラグイン構造・フック・テーマ移植方法などをAIに提供
- AIがEmDashコードベースを理解し、自動カスタマイズが可能
-
EmDash CLI
- CLIを通じてコンテンツ検索、メディアアップロード、スキーマ生成などの管理機能を実行
- ローカルおよびリモートのインスタンスをどちらも制御可能
-
内蔵MCPサーバー
- 各インスタンスは独自のModel Context Protocolサーバーを提供
- 管理UIで可能なすべての操作をリモートで実行可能
パスキー認証とロール管理
- EmDashはPasskey認証をデフォルトで使用
- パスワード漏えいやブルートフォース攻撃を防止
- 標準で**ロールベースアクセス制御(RBAC)**をサポート
- 管理者、編集者、投稿者、寄稿者などロールごとに権限を区分
- 認証はプラグイン方式で拡張可能で、SSOおよびIdPメタデータ連携をサポート
WordPressサイトの移行
- 既存のWordPressサイトはWXRファイルのエクスポートまたはEmDash Exporterプラグインを通じて移行可能
- ExporterプラグインはWordPress Application Passwordで保護された専用エンドポイントを生成
- コンテンツとメディアを自動でEmDashライブラリへ移行
- EmDashはスキーマベースのコンテンツ構造をサポート
- WordPressのCustom Post TypeをEmDashの独立コレクションへ変換
- Block Kit Agent Skillを通じてカスタムブロックをAIで生成可能
体験と参加
- EmDashは現在v0.1.0プレビューバージョンとしてGitHubリポジトリからダウンロード可能
- EmDash Playground で管理UIを直接体験可能
- ローカルインストールコマンド:
npm create emdash@latest - Cloudflareダッシュボードからもデプロイ可能
- WordPressコミュニティ、ホスティングプラットフォーム、プラグイン・テーマ開発者からのフィードバックと貢献を歓迎
6件のコメント
私は個人ブログでWordPressを使っていたのですが、そのセキュリティ問題のせいで見切りをつけて静的サイトに移行した者です。
しばらく個人ブログをそのまま放置していたら、本当に妙なスパムが入り込んできて、ブログをスパムだらけにしていきました。タグを使って、自分のローカルには存在しないページをGoogleに登録するという奇妙な手口を使っていたんです。削除するのに今でも苦労しています……
私もウェブマスターツールで変なURLが検出されて不思議に思った記憶がありますが
「タグを使って自分のローカルにないページをGoogleに登録する奇妙な方法」というのは、どんな仕組みなのでしょうか??
これを遮断する方法はありますか?
スパムっぽい文言を検索した検索結果URLを、他人のブログ記事に被リンクとして登録するタイプのスパムもありますね。
結局、どんなものでも手作業で消すしかないんですよね…。
通常は、ファイルアップロード関連の脆弱性があるプラグイン/テーマなどを悪用して侵入する手口です。
こうして侵入されると、本来のブログ運営者に気づかれないまま、tag/category などに内容を埋め込まれます。
実際にはブログのページ上ではまったく見えないので気づけないのですが、この URL が Googlebot にだけ見えるようにレンダリングする方式が使われます。(BabaYaga のようなものです。)
このように一度侵入されると、実際にはそのアドレスへの流入をすべて 410 Gone にする以外に方法がないんですよね。サーバー側では不要なアドレスはすべて 410 として返すようにしておいて、特定の流入パターンについては Search Console で手動で 6 か月間削除依頼を出し続ける必要があります。たとえば
/tagで始まるものを全部消す、といった対応です。私は 1 か月間ずっと削除申請をしていますが、まだ全部は消えていません。Google のインデックス処理がきちんと動いてほしいのですが、時間がかかりますね。
ああ、そうなんですね。教えてくださってありがとうございます。いろいろと気を配らないといけませんね
Hacker Newsのコメント
WordPressを10年以上扱ってきたが、このプロジェクトは TypeScript と Workerプラグイン の2点を完璧に押さえていると思う
最近WPのセキュリティ問題をかなり考えていたが、悪意あるプラグインがDBや環境変数にアクセスしたり、XSSを引き起こしたりできる。しかし、適切に設計されたプラグインシステムならこれを緩和できる
個人的に HotsauceCMS を開発中。NodeJSやDenoのWorkerプラグインを選択的に使い、ファーストパーティプラグインは高速なインプロセス実行、サードパーティはワーカーで分離実行できるようにしている
依存関係は4つだけで、推移的依存関係は0。Dependabotの警告や npmサプライチェーン攻撃 にうんざりしたからだ
Drizzleベースのスキーマファースト構造で、DB構造を完全に制御でき、ファイルアップロードのような機能もスキーマヒントで定義する
DB非依存なので、Postgres、MySQL、SQLiteなどDrizzleがサポートするすべてのDBで動作する
フロントエンドは自由に選べ、個人的にはReactなしのJSXを好んでいる
フィードバック歓迎。何か見落としている点があるか、方向性が合っているか気になる。EmDashの今後の展開にも期待している
EmDashはWordPressの精神的後継だというが、自分はCMSが向かうべき方向はその逆だと思う
むしろ単純化して 静的ファイルベースのWebサイト に戻るべきだ。キャッシュもしやすく、高速で、管理も簡単だ
もちろんCloudflareとしては、自社の Workers製品 を売るためにこうした構造を選んだのだろう。本当に根本的なセキュリティ問題を解決したのかはまだ疑問だ
Cloudflareは間違った方向からアプローチしていると思う
WordPressが成功した理由は 導入のしやすさとネットワーク効果 にある。セキュリティ以上に、すでにWPに慣れた開発者が多いからだ
EmDashが成功するには、WixやSquarespaceより 簡単で、速く、柔軟 でなければならない。そうでなければネットワーク効果を生み出しにくい
WordPress開発者として最大の苦痛は プラグインアーキテクチャ だった。
WPではプラグインを画像と同じ
wp-contentフォルダに入れるため、CI/CDが悪夢になる。EmDashはプラグインがTSモジュールなので、はるかにすっきりしているCloudflareの x402決済標準 の概念は興味深い
エージェントが自動で少額決済を送り、コンテンツへのアクセス権を得る仕組みだが、少し怖くもあり未来的でもある
冗談半分で、アクセスごとに10セント要求する HTTP 402ハニーポット を作れば、昔の「1ピクセル1ドル」アイデアの再来かもしれない
WordPressの価値はコードではなく エコシステムとサポート体制 にある
コード品質は今ひとつだが、あらゆるSaaSがWPコネクタを提供している。
EmDashが成功するには、非開発者でもFiverrで簡単にカスタマイズを依頼できる必要がある。それは技術ではなく 労働市場の問題 だ
Cloudflare製のWordPress後継という点は魅力的だが、Dynamic Workers ベースのプラグイン分離はCloudflareランタイムでしか動かない
他のホストでは単なるTS製CMSに過ぎず、アーキテクチャ依存性 が問題だ
なぜ今なお JavaScript でAIプロジェクトを作るのか疑問だ
今ではGoのような コンパイル言語 でも素早くアプリを作れる。より小さく、速く、デプロイも簡単だ
JSはインタプリタ型なので遅く複雑だ。昔は即時実行が利点だったが、今ではコンパイルも速い
EmDashがWordPressのコードを使っていないため MITライセンス で配布される点は興味深い
ただ、最近登場した Cleanroom as a Service の Malus を思い出す。タイミングが妙に重なる