flawopen.com/Incidents/Capital One SSRF

Capital One : le SSRF qui a transformé une requête web en identifiants cloud

Critical — 100M+ records CWE-918: Server-Side Request Forgery Disclosed July 2019
En clair (ELI5)

Une société emploie un coursier qui va chercher des plis à n'importe quelle adresse indiquée. Au fond du couloir de l'entreprise, un guichet confidentiel délivre les passe-partout du bâtiment à quiconque s'y présente. Vous demandez au coursier d'aller retirer le pli à ce guichet interne, et il vous rapporte les clés.

Why this incident reshaped cloud defaults

Capital One is the reason SSRF stopped being treated as a second-tier bug class. Before it, SSRF was often triaged as an information-disclosure nuisance. After it, the industry understood that in a cloud environment SSRF is a credential-theft primitive — because the cloud platform itself puts a credential vending machine at a fixed, well-known, unauthenticated address inside every instance.

AWS introduced IMDSv2 in November 2019, requiring a PUT to obtain a session token and defaulting to a low IP hop limit. Both changes specifically break the "one blind GET" pattern this attack relied on. Equivalent hardening exists across other cloud providers.

The lessons that actually transfer

FAQ

Does IMDSv2 make SSRF safe?

No — it removes one very high-value target. SSRF can still reach internal admin interfaces, databases, Kubernetes APIs, and other services that trust the network position of the caller. It remains a serious bug class on its own merits.

Would a WAF have stopped this?

The vulnerable component in this case was a web application firewall, which is a useful reminder that security appliances are applications too. Filtering rules can raise the cost of exploitation but do not address the underlying design, which is that a server will fetch whatever address it is told to.

Related reading

Sources et avis officiels