Sicherheits-Fehlkonfiguration
Eine CORS-Einstellung und jede Site kann das Konto lesen.
Was ist Sicherheits-Fehlkonfiguration?
Der Code ist korrekt und die API ist immer noch unsicher, da eine sicherheitsrelevante Einstellung in einem gefährlichen Zustand belassen wird. Dies ist CORS: Die API spiegelt den Ursprung wider, den ein Aufrufer an Access-Control-Allow-Origin sendet, und setzt Access-Control-Allow-Credentials auf „true“, um Browsern mitzuteilen, dass jede Website ihre Antworten mit dem Sitzungscookie des Besuchers lesen kann. Sie machen eine Belohnungsseite zu einer Waffe, die die Antwort der Konto-API an Ihren Server sendet, und beschränken dann die zulässigen Ursprünge auf eine explizite serverseitige Liste. Die Wiedergabe zeigt, dass CORS vom Browser und nicht vom Server erzwungen wird.
Was Sie lernen in Sicherheits-Fehlkonfiguration
- Eine Sicherheits-Fehlkonfiguration in einer API erkennen: eine sicherheitsrelevante Einstellung, die unsicher bleibt — etwa eine zu großzügige CORS-Richtlinie, ausführliche Fehlermeldungen, Debug-Flags oder eine Standardkonfiguration
- Verstehen, warum ein in Access-Control-Allow-Origin zurückgespiegelter Origin der Anfrage zusammen mit erlaubten Zugangsdaten jeder Website, die ein angemeldeter Nutzer besucht, das Auslesen seines Kontos samt Session-Cookie ermöglicht
- Sehen, wie ein Angreifer die Fehlkonfiguration mit einer einzigen Anfrage nachweist und anschließend eine unauffällige Seite scharfschaltet, sodass ein Opfer nur einen Link öffnen muss, damit sein Konto cross-origin abfließt
- Sie von der fehlerhaften Autorisierung auf Objektebene (fehlende Eigentümerprüfung pro Datensatz) und der übermäßigen Datenoffenlegung (zu viele zurückgegebene Felder) unterscheiden; hier ist der Handler in Ordnung, der Fehler steckt in der Konfiguration
- Den Fix anwenden: die erlaubten Origins auf eine explizite Allowlist auf dem Server begrenzen, einen zurückgespiegelten oder Wildcard-Origin nie mit Zugangsdaten kombinieren und verstehen, dass CORS vom Browser durchgesetzt wird und nicht vom Server
Sicherheits-Fehlkonfiguration — Trainingsschritte
-
Eine browserfreundliche API
Corvexa ist eine App für die persönliche Finanzverwaltung: Man verbindet sein Bankkonto und behält die eigenen Ausgaben im Blick — und die Corvexa-Web-App liest die Kontodaten direkt im Browser aus Corvexas API. Heute hat Bob es auf Corvexa abgesehen. Er will Kontodaten von Kunden, die er abphishen und weiterverkaufen kann. Ein eigenes Wegwerf-Konto bei Corvexa hat er bereits; er beginnt in der öffentlichen Entwicklerdokumentation, um zu sehen, wie weit die API zum Browser hin geöffnet ist.
-
Jede Website ist erlaubt
Eine Karte in der Dokumentation beschreibt, wie die API mit Anfragen von anderen Websites umgeht. Bob liest sie genau.
-
Als Angreifer-Website anfragen
Bob spielt die Anfrage durch, die seine bösartige Seite später stellen wird. Er richtet einen API-Client auf den Konto-Endpunkt und setzt den Origin -Header genau so auf seine eigene Website, wie es auch ein Browser täte. In seinem Wegwerf-Konto bei Corvexa ist er angemeldet, die Anfrage trägt also eine echte Sitzung. Ihn interessiert nicht der Body, sondern das, was die API dem Browser über den erlaubten Umgang mit der Antwort mitteilt.
-
Die API sagt Ja
Sehen Sie sich die Antwort-Header an, die die API zusammen mit dem Konto zurückgeschickt hat.
-
Die Köderseite
Bob builds a harmless-looking page to host on his own site: a Corvexa reward banner. It renders in the browser on the left; its source is open in the editor on the right. On its own it does nothing but show a $50 offer.
-
Die Seite scharfschalten
Jetzt fügt Bob die Payload ein. Für Besucher sieht das Banner exakt gleich aus, doch im Hintergrund ruft die Seite aus deren Browser Corvexas Konto-API auf und schickt alles, was zurückkommt, an seinen eigenen Server. Weil die API seinen Origin mitsamt Zugangsdaten zulässt, erledigt das Cookie des Besuchers den Rest.
-
Wie der Diebstahl abläuft
Für Besucher zeigt die Seite nach wie vor nur die Prämie. Gehen Sie durch, was das eingefügte Skript tut, sobald ein angemeldeter Corvexa-Kunde sie öffnet.
-
Den Köder verschicken
Die Falle steht. Bob braucht nur noch einen angemeldeten Corvexa-Kunden, der sie öffnet — also schickt er einem den Prämienlink per E-Mail, aufgemacht wie eine echte Corvexa-Aktion und abgeschickt von seiner täuschend ähnlichen Domain.
-
Eine Prämie im Posteingang
You use Corvexa yourself, and right now you are signed into your account in your browser. An email lands offering a $50 Corvexa reward. The offer sounds plausible and the branding looks right.
-
Den Link öffnen
Sie klicken auf den Link, um die Prämie einzulösen — so wie es die meisten tun würden. Die Seite öffnet sich in Ihrem Browser, in dem Ihre Corvexa-Sitzung nach wie vor aktiv ist.
Abdeckung der Sicherheits-Frameworks
OWASP API Top 10
- API8:2023 Security Misconfiguration
CWE
- CWE-942 Permissive Cross-domain Policy with Untrusted Domains
- CWE-1188 Initialization of a Resource with an Insecure Default
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security