Skip to content

[WP Audit] REST API の _embed=author パラメータによる著者プロフィール情報漏洩リスク #44

Description

@claude

概要

本プラグインは /wp/v2/users エンドポイントおよび /wp/v2/users/{id} への個別アクセスを制限している(v1.1.1・v1.1.5)。しかし WordPress REST API の _embed パラメータを使い /wp/v2/posts?_embed=author または /wp/v2/posts/{id}?_embed を呼び出すと、レスポンスの _embedded.author[] に著者の表示名・スラッグ・アバター URL・プロフィールリンクが埋め込まれて返却される。このベクターに対する保護がプラグインの changelog や description に一切言及されておらず、著者情報隠蔽が不完全になっている可能性が高い。

Evidence

  • プラグイン v1.1.5 changelog: 「Hide single REST API for single user get wp/v2/users/1」→ ユーザー直接取得は保護済み
  • WordPress REST API 仕様: GET /wp/v2/posts?_embed=author は認証不要で _embedded.author[0].nameslugavatar_urls を返す
  • プラグインの description: 「Hide user list in REST API from user without permission」と記載されているが _embed 経由のフォールスルーに言及なし
  • active_installs 500 件のうち、セキュリティ・プライバシー目的でインストールしているユーザーが主要ターゲットであり、影響範囲が大きい
  • 競合 Edit Author Slug(100,000 installs)や WP Meta and Date Remover(90,000 installs)はこのベクターに言及しておらず、先行対応で差別化可能

推奨アクション

  • rest_prepare_post フィルターを追加し、_links および _embeddedauthor フィールドを権限に応じて除去・匿名化する
  • rest_request_before_callbacks または rest_post_dispatch フックで _embed=author リクエストの権限チェックを実装する
  • 手動検証コマンド(例: curl "https://example.com/wp-json/wp/v2/posts?_embed=author")をREADMEに追記し、修正後に著者情報が返らないことを確認する
  • PHPUnit テストに /wp/v2/posts?_embed=author レスポンスの著者フィールド匿名化を検証するケースを追加する

Generated by wp-plugin-audit on 2026-06-01

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions