Mangelhaftes API-Inventar
Die alte API-Version, die Sie vergessen haben, antwortet immer noch.
Was ist Mangelhaftes API-Inventar?
Eine Sicherheitskontrolle deckt nur die Endpunkte ab, von denen Sie wissen, dass sie ausgeführt werden. Alte API-Versionen, undokumentierte Endpunkte und vergessene Hosts bleiben außerhalb dieses Bildes im Einsatz und stellen weiterhin den ungeschützten Code bereit, den sie immer bereitgestellt haben. Sie erhalten eine 401 aus der aktuellen Version, ändern ein URL-Segment von v2 zu v1 und erhalten 200 mit dem Namen, der E-Mail-Adresse und der Privatadresse eines Kunden. Anschließend werden die Konto-IDs in eine Massenliste übertragen. Durch den Fix wird die alte Version eingestellt, sodass jeder Pfad darunter den Wert 410 Gone zurückgibt. Eine veraltete Version in den Dokumenten bedeutet keine Einstellung.
Was Sie lernen in Mangelhaftes API-Inventar
- Ein mangelhaftes API-Inventar erkennen: alte, undokumentierte oder nicht produktive API-Versionen und Hosts, die weiterlaufen und erreichbar bleiben — außerhalb der Schutzmaßnahmen, die die aktuelle Version erzwingt
- Verstehen, dass eine neue Schutzmaßnahme (ein Auth-Gateway, eine Prüfung) nur die Versionen abdeckt, die dahinter eingehängt sind — eine ältere Version, die in der Produktion bleibt, liefert daher jedem den Code aus der Zeit davor aus
- Nachvollziehen, wie ein einziges geändertes URL-Segment von der aktuellen auf eine als veraltet gekennzeichnete Version einen vergessenen Build erreicht und wie aus einem Endpunkt ohne Authentifizierung durch simples Durchzählen eine Datenoffenlegung im großen Stil wird
- Diese Schwachstelle von der fehlerhaften Autorisierung auf Objektebene (fehlende Eigentümerprüfung pro Datensatz innerhalb eines authentifizierten Endpunkts) und von der übermäßigen Datenoffenlegung (zu viele zurückgegebene Felder) unterscheiden; hier läuft die gesamte Version ohne Authentifizierung, weil sie nie abgeschaltet wurde
- Die Lösung anwenden: nicht mehr unterstützte Versionen abschalten, sodass sie 410 Gone zurückgeben und aus der Produktion verschwinden, und ein Inventar über jede ausgerollte Version, jede Umgebung und jeden Host führen, damit nichts unbeobachtet läuft
Mangelhaftes API-Inventar — Trainingsschritte
-
Eine alte Version, immer noch gelistet
Emberline ist eine App für Solaranlagen und Energie zu Hause: Kunden verbinden ihre Module und ihren Speicher, und die App liest ihr Konto über Emberlines API aus. Heute hat Bob es auf Emberline abgesehen. Er hat weder ein Konto noch ein Token; er will schlicht eine Liste der Kunden samt Wohnadressen, um sie weiterzuverkaufen. Er beginnt bei der öffentlichen Entwicklerdokumentation von Emberline, um die API kennenzulernen.
-
Veraltet, aber nicht verschwunden
Die Dokumentation beschreibt zwei API-Versionen. Bob liest nach, wie beide gekennzeichnet sind — und eine Kennzeichnung sticht ihm ins Auge.
-
Die aktuelle Version anfragen
Zuerst ruft Bob die aktuelle Version genau so auf, wie es die Dokumentation beschreibt: Er fragt ein einzelnes Konto über dessen ID ab und nimmt dafür die Beispiel-ID aus der Referenz. Ein Token hat er nicht — das ist also der Fall ohne Authentifizierung. Wenn das Gateway seine Arbeit macht, muss es ihn abweisen.
-
Das Gateway weist ab
Die aktuelle Version hat genau das getan, was sie soll.
-
Ein Segment ändern
Bob schickt dieselbe Anfrage, weiterhin ohne Token, und ändert nur eine einzige Sache: die Version in der URL, von v2 auf v1 , den als veraltet gekennzeichneten Build. Alles andere bleibt gleich. Ist die alte Version wirklich verschwunden, muss diese Anfrage ins Leere laufen.
-
Die vergessene Version antwortet
Dieselbe Anfrage, die das Gateway eben abgewiesen hat, kommt jetzt mit Daten zurück.
-
Die Konten durchzählen
Ein einzelner Datensatz ist ein Warnsignal. Weil v1 überhaupt kein Token verlangt, hält Bob nichts davon ab, die Konto-IDs durchzuzählen. Er lässt die Version auf v1 stehen und ändert die ID auf den nächsten Kunden.
-
Jeder Kunde, in großem Stil
Noch eine ID, noch ein echter Kunde.
-
Wissenscheck
Sie haben gerade gesehen, wie ein Angreifer ganz ohne Konto Kundendatensätze liest, indem er die Version in der URL austauscht. Prägen Sie sich ein, warum das funktioniert.
-
Der Alarm trifft ein
Sie verantworten Emberlines API-Gateway sowie den Lebenszyklus jeder API-Version dahinter. Über Nacht hat das Monitoring Tausende Lesezugriffe ohne Authentifizierung auf den alten Konten-Endpunkt /v1 gemeldet — alle von einer einzigen Adresse, die die Konto-IDs der Reihe nach durchgezählt hat. Security Operations hat Ihnen eine E-Mail geschickt.
Abdeckung der Sicherheits-Frameworks
OWASP API Top 10
- API9:2023 Improper Inventory Management
CWE
- CWE-1059 Insufficient Technical Documentation
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