Skip to content

Client metadata retrieval can be abused to make server issued requests #30

@matthieusieben

Description

@matthieusieben

This issue was initially reported by @DavidBuchanan314 in bluesky-social/atproto#3396.

In a federated network, in which hosts are known (as are PDS in the atproto network), the fact that OAuth Server will try to GET the client metadata can be used to faking traffic from a bunch of fake IPs, simply by forging authorization requests using the client_id as parameter.

For example, by forging the following requests:

  • https://<pds_1>/oauth/authorize?client_id=https://example.com/page_1&...
  • https://<pds_2>/oauth/authorize?client_id=https://example.com/page_1&...
  • https://<pds_3>/oauth/authorize?client_id=https://example.com/page_1&...

The website at https://example.com/page_1 will see GET traffic from the IPs of all those hosts.

Possible mitigations:

  • Retrieve the metadata document after the user authorized the request (though that could lead to weird UX & DX)
  • Add strong constraint on the URI format (eg. .well-known, "must end with .json", other...)
  • Recommend OAuth servers to remember the origins of previously failed metadata document retrieval, and prevent more call to be made on these origins (redacted: could be abused to cause DoS on legitimate services)
  • Other

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions