BOLA (Broken Object Level Authorization)
Ein Leitfaden zu „Broken Object Level Authorization“ (BOLA)
Eine „Broken Object Level Authorization“(BOLA) liegt vor, 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 im Abfrage-String oder als Zeichenfolgen, die in der Nutzlast einer Anfrage versteckt 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 „Broken Function Level Authorization“ (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 ist weit verbreitet, 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 betroffene Objekt den Authentifizierungsstatus steuert
- Massenhafte Datenerfassung durch automatisierte ID-Aufzählung
Das Risiko steigt, wenn Objekt-IDs fortlaufend oder auf andere Weise 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 alle Rechnungen zurück, die dieser ID entsprechen, unabhängig davon, wem sie gehören.
- 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-Anwendungs-Clients übermitteln IDs, denen der Server implizit vertraut
Bei allen BOLA-Anwendungen hat die API zwar die Identität des Benutzers bestätigt, jedoch nicht, auf welche Elemente 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 -hierarchien basiert, und nutzen Sie diesen Mechanismus, um in jeder Funktion, die Benutzereingaben entgegennimmt, um auf einen Datenbankeintrag 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 nehmen Sie keine Änderungen vor, 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 zugreifen darf; jede Anfrage auf Objektebene erfordert eine eigene Überprüfung.
< Zurück zu Glossar der Begriffe