Zum Inhalt springen
Testversion

Fehlerhafte Authentifizierung in APIs | OWASP API2:2023 erklärt

Ein Leitfaden zu fehlerhafter Authentifizierung

Eine fehlerhafte Authentifizierung liegt vor, wenn Authentifizierungsmechanismen falsch implementiert sind, sodass Angreifer Token kompromittieren oder Implementierungsfehler ausnutzen können, um vorübergehend oder dauerhaft die Identität eines anderen Benutzers anzunehmen. 

Die Authentifizierung ist die Grundlage für jede andere API-Kontrolle beruht. Wenn sich ein Angreifer als legitimer Benutzer ausgibt, werden nachfolgende Autorisierungsprüfungen bedeutungslos, da das System glaubt, der Angreifer sei der, für den er sich ausgibt. 

Die Schwachstellen, die dieses Risiko verursachen, sind meist nichts Außergewöhnliches: fehlende Ratenbegrenzung, unzureichende Token-Validierung, nachlässiger Umgang mit Anmeldedaten. 

Wichtigste Erkenntnisse

  • „Broken Authentication“ belegt Platz 2 der OWASP API Security Top 10 2023 und kann es Angreifern ermöglichen, die vollständige Kontrolle über die Konten anderer Benutzer zu erlangen und in deren Namen Aktionen durchzuführen.
  • APIs sind anfällig, wenn sie Brute-Force- oder Credential-Stuffing-Angriffe zulassen, ohne dass eine Ratenbegrenzung, eine Kontosperrung oder CAPTCHA-Mechanismen vorhanden sind.
  • Zu den häufigen Implementierungsfehlern zählen die Akzeptanz von nicht signierten oder nur schwach signierten JWT-Token, die Nichtüberprüfung des Ablaufdatums von Token, das Senden von Authentifizierungstoken in URLs sowie die Speicherung von Passwörtern in schwacher Verschlüsselung oder im Klartext.
  • Das Batching von GraphQL-Abfragen ist ein spezifischer Angriffsvektor, der dazu genutzt werden kann, die Begrenzung der Anfragedatenrate pro Anfrage zu umgehen, wodurch schnelle Brute-Force-Angriffe auf Authentifizierungs-Endpunkte ermöglicht werden.
  • Zur Prävention ist es erforderlich, eine Multi-Faktor-Authentifizierung durchzusetzen, bei sensiblen Vorgängen eine erneute Authentifizierung zu verlangen, strenge Maßnahmen gegen Brute-Force-Angriffe zu ergreifen und etablierte Standards einzuhalten, anstatt eigene Authentifizierungsmechanismen zu entwickeln.

Warum ist das gefährlich?

Mangelhafte Authentifizierungsmechanismen verschaffen einem Angreifer die vollständige Kontrolle über das Konto eines anderen Benutzers. Zu den Folgen gehören: 

  • Vollständige Kontoübernahme und Identitätsbetrug 
  • Umgehung aller dieser Identität zugeordneten nachgelagerten Autorisierungsprüfungen 
  • Offenlegung von Daten oder Funktionen, auf die das kompromittierte Konto Zugriff hat 
  • Es gibt keine Möglichkeit, die Handlungen des Angreifers von denen des legitimen Benutzers zu unterscheiden, da das System der kompromittierten Identität voll und ganz vertraut. 
  • Eine Übernahme eines Administratorkontos, die sich auf das gesamte System auswirkt 

Typische Symptome

Eine fehlerhafte Authentifizierung tritt häufig auf, wenn APIs: 

  • „Credential Stuffing“ zulassen, wodurch Brute-Force-Angriffe mit Listen gültiger Benutzernamen- und Passwortpaare möglich sind 
  • Wiederholte Anmeldeversuche für ein einzelnes Konto ohne CAPTCHA oder Sperrung zulassen 
  • Authentifizierungstoken oder Passwörter als Teil einer URL senden, wodurch sie in Protokollen und im Browserverlauf gespeichert werden 
  • Accept unsigned or weakly signed JWTs, including tokens using {“alg”:”none”} 
  • Die Überprüfung des JWT-Ablaufdatums ist fehlgeschlagen 
  • GraphQL-Abfragen bündeln, um mehrere Anmeldeversuche in einer einzigen Anfrage zusammenzufassen und so die Ratenbeschränkungen pro Anfrage zu umgehen 
  • Einem Benutzer die Möglichkeit geben, seine E-Mail-Adresse oder sein Passwort zu ändern, ohne zuvor sein aktuelles Passwort bestätigen zu müssen, wodurch die Möglichkeit einer Kontoübernahme entsteht 

Wenn eine oder mehrere dieser Bedingungen vorliegen, kann das System die Identität des Anfragenden nicht zuverlässig bestätigen. 

Prinzipien der Prävention

Die Authentifizierung muss die Identität eines Benutzers genau bestätigen, da sonst jede darauf aufbauende nachgelagerte Kontrolle fehlschlägt. 

  • Erfassen Sie jeden Ablauf, bei dem eine Authentifizierung gegenüber der API erfolgt, einschließlich mobiler, Web- und One-Click-Deep-Links, damit keiner übersehen wird 
  • Machen Sie sich mit Ihren Authentifizierungsmechanismen gründlich vertraut; OAuth ist keine Authentifizierung, ebenso wenig wie API-Schlüssel. 
  • Erfinden Sie das Rad bei der Authentifizierung, der Token-Generierung oder der Speicherung von Passwörtern nicht neu; nutzen Sie etablierte Standards. 
  • Endpunkte für die Wiederherstellung von Anmeldedaten und für den Fall, dass das Passwort vergessen wurde, sollten mit denselben Schutzmaßnahmen ausgestattet werden wie Anmeldeendpunkte 
  • Vor sensiblen Änderungen, wie beispielsweise der Aktualisierung einer E-Mail-Adresse oder einer 2FA-Telefonnummer, eine erneute Authentifizierung verlangen 
  • Führen Sie, wo immer möglich, eine Multi-Faktor-Authentifizierung ein 
  • Implementieren Sie Mechanismen zum Schutz vor Brute-Force-Angriffen, wie beispielsweise eine strengere Begrenzung der API-Rate als standardmäßig vorgesehen, um Credential-Stuffing- und Wörterbuchangriffe abzuwehren. 
  • Führen Sie eine Kontosperrung und CAPTCHA-Schutzmaßnahmen gegen gezielte Brute-Force-Angriffe ein, zusammen mit Überprüfungen auf schwache Passwörter. 
  • Verwenden Sie API-Schlüssel ausschließlich zur Authentifizierung von API-Clients, niemals zur Authentifizierung einzelner Benutzer. 

Erfinden Sie die Authentifizierung nicht neu. Die Standards existieren, weil die Fehlerquellen genau bekannt sind. Der Aufbau maßgeschneiderter Systeme auf dieser Grundlage führt dazu, dass dieselben Schwachstellen erneut auftreten.

< Zurück zu Glossar der Begriffe