Broken Object Level Authorization (BOLA) | OWASP API1:2023
Ein Leitfaden zu „Broken Object Level Authorization“ (BOLA)
Fehlende Berechtigung auf Objektebene, auch BOLA genannt, tritt auf, wenn ein API-Endpunkt eine Aktion an einem Objekt unter Verwendung einer vom Client bereitgestellten ID ausführt, ohne zu überprüfen, ob der anfragende Benutzer tatsächlich die Berechtigung zum Zugriff auf dieses bestimmte Objekt besitzt.
Objekt-IDs tauchen überall im API-Datenverkehr auf: als Ganzzahlen im URL-Pfad, als UUIDs in einem Abfrage-String oder als Zeichenketten, die in der Nutzlast einer Anfrage verborgen sind. Jeder dieser Parameter ist ein potenzielles BOLA-Ziel. Ein Endpunkt, der der ID vertraut und die Überprüfung der Eigentumsrechte überspringt, ermöglicht es jedem authentifizierten (oder manchmal auch nicht authentifizierten) Benutzer, Datensätze zu lesen, zu ändern oder zu löschen, die jemand anderem gehören.
BOLA unterscheidet sich von der Autorisierung auf der Ebene defekter Funktionen (BFLA). Bei BOLA geht es darum, auf Objekte zuzugreifen, die ein Benutzer nicht sehen sollte. Bei BFLA geht es darum, Funktionen aufzurufen, die ein Benutzer nicht aufrufen können sollte.
Wichtigste Erkenntnisse
- „Broken Object Level Authorization“ (BOLA) steht auf Platz 1 der OWASP API Security Top 10 2023 und ist eine der am weitesten verbreiteten und am leichtesten ausnutzbaren API-Sicherheitslücken.
- Dies tritt auf, wenn ein API-Endpunkt Aktionen an Objekten anhand vom Client übermittelter IDs durchführt, ohne zu überprüfen, ob der anfragende Benutzer die Berechtigung zum Zugriff auf dieses bestimmte Objekt besitzt.
- Angreifer nutzen BOLA aus, indem sie Objekt-IDs manipulieren, bei denen es sich um Ganzzahlen, UUIDs oder Zeichenketten handeln kann, die in URL-Pfaden, Abfrageparametern, Headern oder Request-Payloads vorkommen
- BOLA unterscheidet sich von „Broken Function Level Authorization“ (BFLA): Bei BOLA geht es um den Zugriff auf Objekte, die ein Benutzer nicht sehen sollte, während es bei BFLA um den Zugriff auf API-Funktionen geht, die ein Benutzer nicht aufrufen können sollte.
- Zur Prävention müssen an jedem API-Endpunkt, der eine Objekt-ID empfängt, Berechtigungsprüfungen auf Objektebene durchgeführt und zufällige, unvorhersehbare Werte wie GUIDs anstelle von fortlaufenden Nummern verwendet werden.
Warum ist das gefährlich?
BOLA steht nicht ohne Grund auf Platz eins der OWASP API Security Top 10 2023: Es kommt häufig vor, ist leicht zu finden und leicht auszunutzen. Eine erfolgreiche Ausnutzung führt zu:
- Unbefugte Weitergabe von Daten anderer Nutzer
- Unbefugte Änderung oder Löschung von Datensätzen
- Vollständige Kontoübernahme, wenn das exponierte Objekt den Authentifizierungsstatus steuert
- Massenhafte Datenerfassung durch automatisierte ID-Aufzählung
Das Risiko verstärkt sich noch, wenn Objekt-IDs fortlaufend oder anderweitig vorhersehbar sind, da ein Angreifer sie ohne spezielle Hilfsmittel nacheinander durchgehen kann.
Typische Symptome
BOLA tritt in der Regel auf, wenn:
- Ein Endpunkt wie /api/invoices/1234 gibt jede Rechnung zurück, die dieser ID entspricht, unabhängig davon, wem sie gehört
- Objekt-IDs werden fortlaufend erhöht, wodurch die Aufzählung zum Kinderspiel wird
- Autorisierungsprüfungen finden auf der Authentifizierungsebene statt, nicht jedoch auf der Objektebene.
- Mobile oder Single-Page-Anwendungen übermitteln IDs, denen der Server implizit vertraut
Bei allen BOLA-Anwendungen hat die API zwar bestätigt, wer der Benutzer ist, jedoch nicht, worauf dieser Benutzer zugreifen darf.
BOLA vorbeugen
Die Berechtigungsprüfung auf Objektebene muss bei jeder einzelnen Anfrage erfolgen, nicht nur bei der Anmeldung. Diese Strategien sollten umgesetzt werden, um BOLA zu verhindern.
- Implementieren Sie einen geeigneten Autorisierungsmechanismus, der auf Benutzerrichtlinien und einer Hierarchie basiert, und nutzen Sie diesen Mechanismus, um in jeder Funktion, die Benutzereingaben entgegennimmt, um auf einen Datenbankdatensatz zuzugreifen, die Berechtigungen des angemeldeten Benutzers für den jeweiligen Datensatz zu überprüfen.
- Verwenden Sie zufällige, unvorhersehbare Kennungen wie GUIDs anstelle von fortlaufenden Ganzzahlen.
- Schreiben Sie Tests, die den Autorisierungsmechanismus direkt überprüfen, und führen Sie keine Änderungen ein, die dazu führen, dass diese Tests fehlschlagen.
BOLA ist ein Autorisierungsfehler, der unabhängig von der Authentifizierung auftritt. Die Feststellung der Identität eines Benutzers sagt nichts darüber aus, auf welche Objekte dieser Benutzer Zugriff hat; jede Anfrage auf Objektebene erfordert eine eigene Prüfung.
< Zurück zu Glossar der Begriffe