Broken Object Level Authorization am Rechnungs-Endpoint
- Schweregrad
- Hoch. CVSS 3.1 Base 6.5, eine Stufe höher eingestuft: Jede Kundenrechnung ist lesbar.
- Asset
- api.example.com, GET /v1/invoices/{id}
- Status
- Vom Analysten auf dem Live-System verifiziert
Beleg, Auszug
GET /v1/invoices/1041 HTTP/1.1 Host: api.example.com Authorization: Bearer <token of test account A> HTTP/1.1 200 OK {"invoice":"1041","customer":"test account B","total":"[redacted]"}
Reproduktion
- Als Testkonto A anmelden und den Bearer Token notieren.
- Mit diesem Token eine Rechnung abrufen, die zu Testkonto B gehört.
- Die API liefert die Rechnung statt 403 Forbidden.
Behebung
Die Eigentümerprüfung im Service Layer bei jedem Objektzugriff erzwingen, nicht nur in der Liste. Als zweite Linie nicht fortlaufende IDs verwenden. Pro Endpoint einen Autorisierungstest in die Pipeline aufnehmen.
Retest: offen. Referenz: OWASP API Security Top 10, API1.