Visual RFC.
ALL RFCs / RFC 9700
Read the RFC ↗
RFC 9700 / THE FOUNDATIONS

The attacker model

08

Attackers can run their own services, control a network, observe OAuth messages, or obtain a token. They can also collaborate.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

DIAGRAM§ 3 ↗
RFC 9700 · § 3EXAMPLE
3 / 3
The attacker modelAttackers can run their own services, control a network, observe OAuth messages, or obtain a token. They can also collaborate. Current state: Leaked messages and tokens extend the threat..The attacker modelAttackerhostile sitenetwork controlresponse readerrequest readertoken theft
03
Leaked messages and tokens extend the threat.

A3 observes responses, A4 observes requests, and A5 obtains tokens. Model the combinations.

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
KEY POINT

Design for the environment you actually have.

  • A1 can operate browsers, clients, authorization servers, resource servers, and lure users to chosen URLs.
  • A2 can observe, modify, spoof, or block network traffic, except where cryptography protects it.
  • A3 reads authorization responses; A4 reads authorization requests; A5 acquires access tokens. These can combine with A1 or A2.
DETAILS

This is a minimum model. Implementers MUST account for other attackers relevant to their deployment. An attacker may also be a legitimate resource owner with their own account.

Read the RFC section ↗

Diagrams simplify the RFC. Read the linked sections for complete requirements.

Privacy
All chapters in this RFC
  1. OAuth overview
  2. Authorization code + PKCE
  3. Retire unsafe grants
  4. Prevent token replay
  5. Limit token privileges
  6. Authenticate the client
  7. Metadata, TLS & CORS
  8. The attacker model
  9. Redirect URI validation
  10. Referer header leakage
  11. Browser history leakage
  12. Authorization server mix-up
  13. Authorization code injection
  14. Access token injection
  15. Cross-site request forgery
  16. PKCE downgrade
  17. Leakage at resource servers
  18. Misuse of stolen tokens
  19. Open redirection
  20. 307 credential forwarding
  21. TLS termination & proxies
  22. Refresh token protection
  23. Client as resource owner
  24. Clickjacking
  25. In-browser messaging
RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗