SAML (Security Assertion Markup Language) ist ein XML-basiertes Protokoll, das für den sicheren Austausch von Authentifizierungs- und Autorisierungsinformationen zwischen verschiedenen Parteien verwendet wird.
Der SAML-Authentifizierungsfluss basiert auf zwei Entitäten:
Service Providers (SP) – Der SP empfängt die Authentifizierung vom IdP und gewährt dem Benutzer die Autorisierung.
Identity Providers (IdP) – Der IdP authentifiziert einen Benutzer und sendet seine Anmeldeinformationen zusammen mit seinen Zugriffsrechten für den Dienst an den SP.
SAML-Anfrage:
ID – Identifikator für eine bestimmte SAML-Anfrage.
Issuer – Der Name des Service Providers (SP).
NameID – Der Benutzername/E-Mail-Adresse oder Telefonnummer, die zur Identifizierung eines Benutzers verwendet wird.
AssertionConsumerServiceURL – Die SAML-
URL-Schnittstelle des SP, wohin der IdP das Authentifizierungstoken sendet.
SAML-Antwort:
Assertion – Ein XML-Dokument mit den Details des Benutzers. Dies enthält den Zeitstempel des Benutzeranmeldevorgangs und die verwendete Authentifizierungsmethode (z. B. 2-Faktor-Authentifizierung, Kerberos usw.).
Signature – Eine Base64-codierte Zeichenfolge, die die Integrität der Assertion schützt.
Schlüsselgenerierung:
Der Identity Provider (IdP) generiert einen privaten Schlüssel und einen öffentlichen Schlüssel. Er signiert die Assertion mit dem privaten Schlüssel. Der öffentliche Schlüssel wird mit dem Service Provider (SP) geteilt, der ihn verwendet, um die SAML-Antwort zu überprüfen und den Benutzer anzumelden.
Von Hackern ausgenutzte SAML-Schwachstellen:
Signatur nicht überprüft – Wenn jemand in der Lage ist, die Benutzer-ID (Benutzername) in der SAML-Antwort zu ändern und sich als jemand anderes anzumelden, aufgrund des Mangels an einem Signaturüberprüfungsprozess.
Signatur nur überprüft, wenn sie vorhanden ist – Wenn jemand den Wert der Benutzer-ID ändert und die Signatur entfernt, bevor die Antwort vom Browser empfangen wird, und dennoch in der Lage ist, sich als Opfer anzumelden.
Kommentareinschleusung – Ein Benutzer kann mit einem XML-Kommentar in der Benutzer-ID registriert werden, z. B.: „email: prerit<!–notprerit–>@test.com“. Beim Verarbeiten der SAML-Antwort ignoriert der SP den Kommentar und meldet uns als Opfer an.
SAML-Replay – Der Angreifer erfasst die SAML-Antwort und verwendet sie mehrmals, um sich als Opfer anzumelden.