
WordPress Core の REST Batch API エンドポイントへの未認証アクセスに対する、焦点を絞った一時的な緩和策です。
SkelerSecurity Core Security Plugin は、WordPress が Core REST Batch API ルートへのリクエストを処理する前に認証を要求します:
/wp-json/batch/v1/?rest_route=/batch/v1これは、一般に wp2shell と呼ばれる WordPress REST Batch API の脆弱性チェーンに対する、範囲を限定した多層防御(defense-in-depth)コントロールとして設計されています。このプラグインは、WordPress の rest_pre_dispatch フィルターを使用して、匿名のバッチリクエストを HTTP 401 Unauthorized で拒否する一方、認証済みの WordPress ユーザーおよび REST API ユーザーのアクセスは維持します。
[!IMPORTANT] このプラグインは一時的な緩和策であり、WordPress Core のアップデートの代替ではありません。 最新の WordPress セキュリティリリースを直ちに適用し、アップデートが正常に完了したことを確認してください。
公開レポートでは、REST Batch API のルート不一致(CVE-2026-63030)と関連する SQL インジェクションの問題(CVE-2026-60137)を含む、WordPress Core の重大な脆弱性チェーンが報告されています。影響を受けるエンドポイントには、パーマリンク形式とクエリ文字列形式の両方の REST ルーティングで到達できます。
影響を受けると報告されている Core リリースは次のとおりです:
| ブランチ | 影響を受けるリリース | 修正リリース |
|---|---|---|
| WordPress 6.9 | 6.9.0–6.9.4 | 6.9.5 |
| WordPress 7.0 | 7.0.0–7.0.1 | 7.0.2 |
WordPress 6.8 ブランチも 6.8.6 で関連する堅牢化が行われています。バージョン範囲をアップデート遅延の理由とせず、ご利用の環境で利用可能な最新のサポート対象 WordPress リリースを使用してください。
/batch/v1 REST ルートに対して、有効な認証済み WordPress ユーザーを要求します。/wp-json/batch/v1 と ?rest_route=/batch/v1 の両方を対象とします。401 の標準 REST エラーを返します。rest_pre_dispatch 優先度 -1000)。最強の一時的なカバレッジを得るには、このプラグインを、上記の両方のエンドポイント形式への匿名リクエストをブロックする WAF またはリバースプロキシルールと組み合わせてください。
skelersecurity-core-security ディレクトリを次の場所にコピーします:
wp-content/plugins/
プラグイン → インストール済みプラグイン でプラグインを有効化します。
ツール → SkelerSecurity Core でプラグインのステータスを確認します。
wp plugin activate skelersecurity-core-security
プラグインは有効化後すぐに有効になります。ツール → SkelerSecurity Core にアクセスして管理します:
| 設定 | デフォルト | 説明 |
|---|---|---|
| Batch API 保護 | 有効 | Core REST Batch API ルートに認証を要求します。 |
| 最小監査ログ | 有効 | 匿名の Batch API リクエストがブロックされたときに記録します。 |
| 保持するエントリ数 | 50 |
オプションの監査ログは次のものだけを記録します:
/batch/v1)IP アドレス、クッキー、認証ヘッダー、リクエストボディ、ユーザー名、その他の機密性の高いリクエストデータは、意図的に記録しません。
| リクエストタイプ | 保護が有効な場合の期待結果 |
|---|---|
/wp-json/batch/v1 への匿名リクエスト | HTTP 401 でブロック |
匿名リクエストがブロックされた場合のレスポンスは、次のエラーコードを使用します:
rest_batch_authentication_required
/wp-json/batch/v1rest_route=/batch/v1Batch API は、WordPress の管理ワークフロー、プラグイン、テーマ、モバイルクライアント、または外部インテグレーションで使用される可能性があります。認証済みリクエストは引き続き許可されますが、プラグインを有効化した後、ビジネスに重要な機能をテストしてください。
潜在的な影響には、意図的に未認証リクエストを Core Batch API に送信するインテグレーションが含まれる可能性があります。そのような動作が必要な場合は、リスクを慎重に評価し、エンドポイントを広く公開するのではなく、適切に認証されたインテグレーションを実装してください。
ネットワーク層の緩和策は、両方のルーティング形式をカバーする必要があります。WordPress は rest_route クエリパラメータ経由でもリクエストをルーティングできるため、/wp-json/batch/v1 のみをブロックするのは不十分です。
推奨されるルールロジック:
/wp-json/batch/v1 である匿名リクエストを拒否します(オプションの末尾スラッシュは許可)。rest_route=/batch/v1 を持つ匿名リクエストを拒否します。ご利用の環境でルールをテストしてください。このプラグインは WAF の変更をすぐに展開できない場合に役立ちますが、WordPress Core へのパッチ適用を妨げるものではありません。
セキュリティ脆弱性を公開の GitHub イシューで報告しないでください。
疑わしい脆弱性は、セキュリティ担当者またはリポジトリ所有者に非公開で報告してください。明確な説明、影響を受けるバージョン、再現可能な概念実証、影響評価を含めてください。資格情報、個人データ、破壊的なペイロードは含めないでください。
このプロジェクトは GNU General Public License v2.0 以降 の下でライセンスされています。
| ローカル監査エントリの保持上限。10 から 200 の間で設定可能です。 |
/?rest_route=/batch/v1 への匿名リクエスト | HTTP 401 でブロック |
/batch/v1 への認証済み WordPress/REST リクエスト | 通常の WordPress 認可処理として許可 |
| 他の REST ルートへのリクエスト | このプラグインでは変更されない |