REST API診断
REST API診断は、WordPress REST API の各エンドポイントのアクセス制御状態を検査し、情報漏洩リスクをスコアリングする機能です。
なぜREST APIの診断が必要なのか
WordPress の REST API はデフォルトで有効化されており、多くのエンドポイントが認証なしでアクセスできます。これにより以下のリスクが生じます。
- ユーザー情報の漏洩:
/wp-json/wp/v2/usersで管理者のユーザー名を取得される - 投稿データの漏洩: 下書き記事や非公開情報がAPIで読めてしまう
- プラグイン情報の露出: インストールされたプラグインのバージョンが特定される
- 攻撃の足がかり: 取得した情報をもとに、ブルートフォース攻撃やゼロデイ攻撃が行われる
/wp-json/wp/v2/users エンドポイントはユーザー名列挙攻撃に悪用されやすく、ブルートフォース攻撃の第一歩となります。
診断項目(18項目)
ユーザー情報系(5項目)
| チェック項目 | リスク内容 | 危険度 |
|---|---|---|
| /wp/v2/users エンドポイント | ユーザー一覧取得可否 | 🔴 高 |
| ?author=N 列挙 | Author IDでのユーザー名特定 | 🔴 高 |
| oEmbed によるユーザー露出 | 著者名がoEmbedレスポンスに含まれるか | 🟠 中 |
| ユーザーメタデータ | ユーザーのカスタムフィールド露出 | 🟡 低 |
| ユーザーロール露出 | ユーザーのロール(権限)情報 | 🟡 低 |
コンテンツ系(5項目)
| チェック項目 | リスク内容 | 危険度 |
|---|---|---|
| /wp/v2/posts 非認証アクセス | 投稿データの詳細取得 | 🟡 低 |
| /wp/v2/pages 非認証アクセス | ページデータの詳細取得 | 🟡 低 |
| /wp/v2/media ファイル一覧 | メディアファイルの一覧取得 | 🟠 中 |
| /wp/v2/comments 全公開 | コメントデータと投稿者メール | 🟠 中 |
| 下書き・非公開投稿の露出 | 未公開コンテンツへのアクセス | 🔴 高 |
システム情報系(4項目)
| チェック項目 | リスク内容 | 危険度 |
|---|---|---|
| REST API ルート一覧 | 利用可能な全エンドポイントの露出 | 🟠 中 |
| /wp/v2/plugins | プラグイン情報の露出 | 🔴 高 |
| /wp/v2/themes | テーマ情報の露出 | 🟠 中 |
| WordPress バージョン露出 | APIレスポンスでのバージョン情報 | 🟠 中 |
XML-RPC系(4項目)
| チェック項目 | リスク内容 | 危険度 |
|---|---|---|
| xmlrpc.php 有効 | XML-RPC経由のブルートフォース | 🔴 高 |
| system.listMethods | 利用可能なXML-RPCメソッド一覧 | 🟠 中 |
| pingback.ping | DDoS増幅攻撃への悪用 | 🔴 高 |
| wp.getUsersBlogs | ユーザー認証テスト可能 | 🟠 中 |
スコア計算方式
各項目は「重み」を持ち、検出された問題の重大度に応じてスコアが減点されます。
- 🔴 高危険度: -10〜-15点
- 🟠 中危険度: -5〜-8点
- 🟡 低危険度: -2〜-3点
| スコア | 評価 |
|---|---|
| 90〜100 | 優秀: ほぼすべてのリスクが対策済み |
| 70〜89 | 良好: 主要なリスクは対策済み |
| 50〜69 | 要改善: いくつかの重要なリスクが残っている |
| 0〜49 | 危険: 早急な対策が必要 |
診断の実行方法
- SentinelSecurity → REST API 診断 を開きます
- 今すぐ診断 ボタンをクリックします
- 各チェック項目の結果がカード形式で表示されます
診断結果の活用
診断結果で指摘された問題は、プロ版の API保護 機能で一括して対策できます。無料版では以下の手動対策が必要です。
応急的な対策(手動)
ユーザー列挙の防止(functions.phpに追加):
// REST APIでのユーザー列挙を無効化
add_filter('rest_endpoints', function($endpoints) {
unset($endpoints['/wp/v2/users']);
return $endpoints;
});
XML-RPCの無効化:
add_filter('xmlrpc_enabled', '__return_false');
プロ版での対策
API保護 機能を有効にすることで、管理画面から必要なエンドポイントだけを選択的にブロックできます。詳しくは「API保護」のドキュメントをご参照ください。