Übermäßige Datenoffenlegung
Der Bildschirm verbirgt die Felder. Die API-Antwort funktioniert nicht.
Was ist Übermäßige Datenoffenlegung?
Ein Endpunkt serialisiert einen gesamten gespeicherten Datensatz und vertraut darauf, dass die Client-App nur die sicheren Felder anzeigt. Anrufer lesen die Rohantwort, nicht die gerenderte Schnittstelle. Sie öffnen eine Profilkarte mit einem Namen und einer Stadt, erfassen den Anruf dahinter, suchen in der Nutzlast nach E-Mail, Telefonnummer, Geburtsdatum und Wohnkoordinaten und wiederholen dies dann mit einem Discovery-Feed für Tausende von Menschen. Bei dem Fix handelt es sich um eine explizite serverseitige Zulassungslistenprojektion. Der gepatchte Endpunkt antwortet immer noch mit 200, nur mit weniger Feldern.
Was Sie lernen in Übermäßige Datenoffenlegung
- Übermäßige Datenoffenlegung erkennen: Ein Endpunkt gibt mehr Felder zurück, als der Client braucht, weil er das gesamte Objekt serialisiert und auf das Filtern im Client vertraut — die rohe Antwort gibt damit sensible Felder preis, die auf dem Bildschirm nie auftauchen
- Verstehen, dass der Client keine Sicherheitsgrenze ist: Aufrufer lesen die rohe Antwort und nicht die gerenderte Oberfläche; jedes Feld in der Payload ist damit offengelegt, ganz gleich, was die App anzeigt
- Diese Schwachstelle von der fehlerhaften Autorisierung auf Objektebene (über die ID an das Objekt eines anderen Nutzers kommen) und von der fehlerhaften Autorisierung auf Funktionsebene (eine Funktion oberhalb der eigenen Rolle ausführen) unterscheiden; hier darf der Aufrufer die Ressource lesen, und der Fehler liegt in der Menge der zurückgegebenen Felder
- Die Lösung anwenden: Antworten aus einer expliziten serverseitigen Allowlist bzw. Projektion öffentlicher Felder aufbauen, einen gespeicherten Datensatz nie im Ganzen serialisieren und gemeinsam genutzte Serializer einmal kürzen, um jede Route zu schließen, die sie verwendet
- Erkennen, dass übermäßige Datenoffenlegung kein Fehler in der Zugriffskontrolle ist: Der reparierte Endpunkt antwortet weiterhin mit 200 und gibt nur weniger Felder zurück — die Anfrage zu blockieren würde eine öffentliche Funktion zu Unrecht zerstören
- Jeden Endpunkt prüfen, der ein vollständiges Modell serialisiert — besonders Listen und Entdecken-Feeds, in denen ein einziger zu freigiebiger Serializer zum Massen-Datenexport wird
Übermäßige Datenoffenlegung — Trainingsschritte
-
Eine öffentliche Läuferseite
Heute hat Bob es auf Trailkin abgesehen, eine Lauf-App mit sozialem Netzwerk: Er will die personenbezogenen Daten der Mitglieder in großem Stil abgreifen. Angemeldet hat er sich als ganz normales Mitglied, mit einer Wegwerf-Identität. Trailkin-Profile sind bewusst öffentlich: Jeder kann jeden Läufer nachschlagen. Bob öffnet die Seite einer Zielperson; zu sehen sind die öffentliche Karte des Läufers und ein Feed mit anderen Läufern aus der Umgebung.
-
Auf dem Bildschirm nur die unbedenklichen Felder
Die Profilkarte ist bewusst sparsam gehalten. Sie ist genau das, was alle sehen sollen, und sie enthält nichts, womit ein Angreifer diese Person aufspüren oder sich für sie ausgeben könnte.
-
Läufer in der Nähe
Unter der Karte zeigt dieselbe Seite Trailkins Entdecken-Feed: andere Mitglieder, die in der Nähe laufen. Wie beim Profil steht auch hier auf jeder Karte nur Öffentliches.
-
Die Anfragen beobachten
Karte und Feed stammen jeweils aus Daten, die die App über die API geholt hat. Bob öffnet die Netzwerkanalyse des Browsers und lädt die Seite einmal neu — damit schneidet er beide Aufrufe mit, mit denen die App die Seite aufbaut.
-
Zwei Aufrufe — und alles, was die Karte verschwiegen hat
Die Netzwerkanalyse hat das Neuladen mitgeschnitten. Beide Aufrufe der Seite stehen in der Anfrageliste, und Bob öffnet die Antwort zum ersten davon, dem Profil-Aufruf.
-
Den Nearby-Aufruf öffnen
Ein Profil ist ein Opfer. Der Aufruf des Feeds steht direkt daneben in der Liste. Bob klickt ihn an, um zu lesen, was die Anfrage „Läufer in der Nähe“ zurückgegeben hat.
-
Das Datenleck in großem Stil
Die Nearby-Antwort ist dasselbe Datenleck, vervielfacht über den gesamten Feed.
-
Wissenscheck
Sie haben gerade gesehen, wie ein einfaches Mitgliedskonto private Angaben ausliest, die die App nie anzeigt. Prägen Sie sich ein, warum das funktioniert.
-
Der Alarm trifft ein
Sie verantworten Trailkins Athletenprofil-Service. Über Nacht ist dem Monitoring ein einzelnes Mitgliedskonto aufgefallen, das über die öffentlichen Profil- und Nearby-Endpunkte vollständige Datensätze von Tausenden Nutzern abgerufen hat. Security hat Ihnen die Details per E-Mail geschickt.
-
Den Profil-Router öffnen
Öffnen Sie den Athleten-Router und sehen Sie sich an, wie er aus einem gespeicherten Datensatz eine Antwort macht.
Abdeckung der Sicherheits-Frameworks
OWASP API Top 10
- API3:2019 Excessive Data Exposure
CWE
- CWE-213 Exposure of Sensitive Information Due to Incompatible Policies
- CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
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