Sicherheit

SAML-Angriffslabor

Akzeptiert Ihre Anwendung, was sie ablehnen sollte? ID-Kit spielt den IdP und sendet präparierte Antworten: Sie prüfen, dass jede Falle abgelehnt wird.

So funktioniert es

  1. Erstellen Sie einen Test-Identitätsprovider und verknüpfen Sie ihn mit Ihrer Anwendung.
  2. Starten Sie eine Anmeldung. Wählen Sie im Schritt „Wen möchten Sie simulieren?“ ein Szenario unten aus.
  3. Ihre Anwendung muss wie beschrieben reagieren. Wenn sie eine Falle akzeptiert, ist das eine Schwachstelle, die behoben werden muss.

Klassische Angriffe

„Signature-Wrapping“-Angriff

Ihre Anwendung muss ablehnen oder nur die signierte Assertion lesen. Wenn sie „admin@evil.example“ anmeldet, ist sie verwundbar.

XML-Kommentar-Injektion in die NameID

Ihre Anwendung muss die VOLLSTÄNDIGE NameID (alice@example.test.evil.example) lesen oder ablehnen. Versteht sie „alice@example.test“, ist sie für den 2018-Angriff verwundbar: Ein Angreifer könnte jemand anderen imitieren.

Keine Signatur

Ihre Anwendung muss ablehnen: Nichts beweist, dass die Antwort vom IdP stammt.

Inhalt nach der Signierung geändert

Ihre Anwendung muss ablehnen: Die Identität wurde nach der Signierung geändert.

Mit einem anderen Schlüssel signiert

Ihre Anwendung muss ablehnen: Die Signatur stammt nicht vom vertrauenswürdigen Zertifikat.

Zwei Assertions mit derselben ID

Ihre Anwendung muss ablehnen: Die ID einer Assertion muss eindeutig sein, sonst kann die Signatur gekapert werden.

Zwei Audience-Beschränkungen, eine davon falsch

Ihre Anwendung muss ablehnen: Alle AudienceRestrictions müssen erfüllt sein (ein logisches UND).

Feindliche Attribute (HTML, Anführungszeichen, Unicode)

Ihre Anwendung muss diese Werte anzeigen, ohne sie auszuführen: kein Skript, kein interpretiertes HTML, kein Absturz bei Anführungszeichen oder Emojis.

Einmal verwendbare Assertion (OneTimeUse)

Ihre Anwendung muss eine zweite Übermittlung derselben Assertion ablehnen (Replay). Versuchen Sie, dieselbe Antwort zweimal zu senden.

InResponseTo fehlt

Bei einer von Ihrer Anwendung gestarteten Anmeldung muss sie eine Antwort ablehnen, die auf keine Anfrage antwortet (es sei denn, sie akzeptiert vom IdP gestartete Anmeldungen).

Inhalt der Antwort

Abgelaufene Assertion

Ihre Anwendung muss ablehnen: Der Gültigkeitszeitraum ist bereits vorbei.

Noch nicht gültige Assertion

Ihre Anwendung muss ablehnen: Der Gültigkeitszeitraum hat noch nicht begonnen (nützlich, um die Uhrentoleranz zu testen).

IdP-Uhr 5 Min. vor

Eine Anwendung mit 2 Min. Uhrentoleranz lehnt ab; ab 5 Min. akzeptiert sie. So finden Sie ihre Toleranz heraus.

IdP-Uhr 5 Min. nach

Die Assertion ist vor 5 Minuten abgelaufen: abgelehnt, wenn die Toleranz unter 5 Min. liegt.

Sitzung bereits abgelaufen (SessionNotOnOrAfter)

Ihre Anwendung muss die IdP-Sitzung als beendet betrachten: Sie darf keine längere Sitzung als diese öffnen.

Falsche Audience

Ihre Anwendung muss ablehnen: Die Assertion ist für eine andere Anwendung bestimmt.

Keine Audience-Einschränkung

Ihre strenge Anwendung muss ablehnen: Nichts sagt, für welche Anwendung die Assertion bestimmt ist.

Falscher Empfänger (Recipient)

Ihre Anwendung muss ablehnen: Die Bestätigung nennt eine andere ACS-Adresse.

Falsches Ziel (Destination)

Ihre Anwendung muss ablehnen: Die Antwort ist an eine andere URL adressiert.

Antwort auf eine andere Anfrage (InResponseTo)

Ihre Anwendung muss ablehnen: Diese Antwort passt zu keiner ihrer Anfragen.

Falscher Aussteller (Issuer)

Ihre Anwendung muss ablehnen: Die Antwort gibt vor, von einem anderen IdP als dem konfigurierten zu stammen.

Bezeichner (NameID) fehlt

Ihre Anwendung muss ablehnen oder einen klaren Fehler anzeigen: Sie weiß nicht, wer sich anmeldet.

Kein Attribut gesendet

Die Anmeldung kann gelingen, aber die Anwendung muss einen fehlenden Namen, eine fehlende E-Mail oder fehlende Gruppen ohne Absturz und ohne Standardrechte behandeln.

Schwächere Authentifizierungsstufe als angefordert

Wenn Ihre Anwendung starke Authentifizierung verlangt hat (RequestedAuthnContext), muss sie ablehnen: Der IdP gibt nur ein einfaches Passwort an.

Rotation: Der IdP hat das Zertifikat gewechselt

Hat die Anwendung BEIDE Zertifikate (alt + neu, Option „nächstes Zertifikat veröffentlichen“), akzeptiert sie; hat sie nur das alte behalten, lehnt sie ab. Zeigt, ob eine Zertifikatsrotation einen Ausfall verursacht.

Für ein anderes Zertifikat verschlüsselte Assertion

Ihre Anwendung muss ablehnen: Sie kann die Assertion nicht entschlüsseln und muss das klar sagen (ohne abzustürzen).

Ablehnungen des IdP

Anmeldung vom IdP abgelehnt

Ihre Anwendung muss einen klaren Fehler anzeigen und niemanden anmelden.

Ablehnung: NoPassive (stille Anmeldung unmöglich)

Ihre Anwendung muss, wenn sie IsPassive angefordert hat, auf einen normalen Anmeldebildschirm umleiten, statt einen rohen Fehler anzuzeigen.

Ablehnung: RequestDenied

Ihre Anwendung muss einen klaren Fehler anzeigen (der IdP weigert sich, die Anfrage zu verarbeiten), ohne abzustürzen oder in eine Schleife zu geraten.

Fehler des Anfragenden: InvalidNameIDPolicy

Ihre Anwendung muss melden, dass ihre Anfrage (NameID-Format) vom IdP nicht akzeptiert wird.

Ablehnung: VersionMismatch

Ihre Anwendung muss einen sauberen Protokollfehler anzeigen, ohne abzustürzen.

Senden Sie dort niemals echte Geheimnisse: Es sind fiktive Identitäten.