REST API診断
REST API診断は、WordPress REST API の各エンドポイントのアクセス制御状態を検査し、情報漏洩リスクをスコアリングする機能です。
なぜREST APIの診断が必要なのか
WordPress の REST API はデフォルトで有効化されており、多くのエンドポイントが認証なしでアクセスできます。これにより以下のリスクが生じます。
- ユーザー情報の漏洩:
/wp-json/wp/v2/usersで管理者のユーザー名を取得される - 投稿データの漏洩: 下書き記事や非公開情報がAPIで読めてしまう
- プラグイン情報の露出: インストールされたプラグインのバージョンが特定される
- 攻撃の足がかり: 取得した情報をもとに、ブルートフォース攻撃やゼロデイ攻撃が行われる
/wp-json/wp/v2/users エンドポイントはユーザー名列挙攻撃に悪用されやすく、ブルートフォース攻撃の第一歩となります。
診断項目(28項目)
ユーザー・認証(5項目)
| チェック項目 | リスク内容 | 危険度 |
|---|---|---|
| /wp/v2/users エンドポイント | ユーザー一覧取得可否 | 🔴 高 |
| ?author=N 列挙 | Author IDでのユーザー名特定 | 🔴 高 |
| /wp/v2/users/me | 認証なしでの自分の情報露出 | 🟠 中 |
| /wp/v2/settings | 認証なしでのサイト設定取得 | 🔴 高 |
| センシティブエンドポイントの匿名アクセス | 制限エンドポイントの認証要件確認 | 🔴 高 |
コンテンツ(5項目)
| チェック項目 | リスク内容 | 危険度 |
|---|---|---|
| /wp/v2/media アップロード | 認証なしのメディアアップロード | 🔴 高 |
| /wp/v2/comments 匿名投稿 | 認証なしのコメント投稿 | 🟠 中 |
| 下書き・非公開投稿の露出 | 未公開コンテンツへのアクセス | 🔴 高 |
| リビジョン露出 | 投稿の改訂履歴取得 | 🟡 低 |
| 検索エンドポイント | 検索経由の情報収集 | 🟡 低 |
システム・インフラ(11項目)
| チェック項目 | リスク内容 | 危険度 |
|---|---|---|
| REST API ステータス | REST APIの有効状態 | 🟠 中 |
| REST API ルート一覧 | 全エンドポイントの露出 | 🟠 中 |
| テーマ・プラグイン情報露出 | REST API経由のプラグイン・テーマ情報 | 🔴 高 |
| WordPress バージョン露出 | APIレスポンスでのバージョン情報 | 🟠 中 |
| oEmbed 露出 | oEmbed経由の情報漏洩 | 🟠 中 |
| CORS 設定 | クロスオリジンリクエストの許可状態 | 🟠 中 |
| レート制限 | REST APIのレート制限設定有無 | 🟠 中 |
| HTTP ベーシック認証 | API上のベーシック認証露出 | 🟡 低 |
| アプリケーションパスワード | アプリケーションパスワード認証 | 🟠 中 |
| REST プレフィックス | デフォルトの /wp-json の使用 | 🟡 低 |
| JWT 認証 | JWTトークンの取り扱い | 🟡 低 |
コンテンツタイプ・タクソノミー(3項目)
| チェック項目 | リスク内容 | 危険度 |
|---|---|---|
| 投稿タイプの露出 | カスタム投稿タイプの情報 | 🟡 低 |
| タクソノミーの露出 | タクソノミー構造の情報 | 🟡 低 |
| メディアメタデータ露出 | EXIFとファイルメタデータ | 🟡 低 |
APIセキュリティ(4項目)
| チェック項目 | リスク内容 | 危険度 |
|---|---|---|
| ネームスペース露出 | APIネームスペースの列挙 | 🟡 低 |
| カスタムエンドポイントのセキュリティ | プラグイン追加エンドポイントの権限確認 | 🟠 中 |
| APIフィルターセキュリティ | フック・フィルターの悪用可能性 | 🟡 低 |
| ノンス検証 | APIエンドポイントのCSRF保護 | 🟠 中 |
XML-RPC(1項目)
| チェック項目 | リスク内容 | 危険度 |
|---|---|---|
| xmlrpc.php 有効 | XML-RPC経由のブルートフォース・DDoS悪用 | 🔴 高 |
スコア計算方式
各項目は「重み」を持ち、検出された問題の重大度に応じてスコアが減点されます。
- 🔴 高危険度: -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保護」のドキュメントをご参照ください。