Alle Sicherheitshinweise

gematik ref-idp-server

Open Redirect durch unvalidierte redirect_uri

Der gematik ref-idp-server enthält eine Open-Redirect-Schwachstelle im Error-Handler. Bei fehlgeschlagener Parametervalidierung wird die redirect_uri aus der HTTP-Anfrage ohne Prüfung gegen registrierte OAuth-Clients verwendet, wodurch Angreifer Benutzer auf bösartige Seiten umleiten können.

SchweregradMittelCVSS 6.1CWECWE-601 (URL Redirection to Untrusted Site)Produktgematik ref-idp-serverBetroffene Versionenv30.0.3 und früherBehoben inv30.0.5

Beschreibung

Im normalen Authentifizierungsablauf wird der redirect_uri-Parameter im Controller-Methodenkörper gegen registrierte OAuth-Clients validiert. Jakarta Bean Validation-Annotationen an Anfrageparametern (wie @Pattern auf state, nonce, code_challenge und code_challenge_method) werden jedoch ausgewertet, bevor der Controller-Body ausgeführt wird.

Im Normalablauf wird die redirect_uri gegen registrierte Clients validiert:

IdpController.java:95

idpAuthenticator.validateRedirectUri(clientId, redirectUri);

View source →

Diese Validierung befindet sich jedoch im Controller-Methodenkörper. Wenn Jakarta Bean Validation-Annotationen an Parametern fehlschlagen, wird eine ConstraintViolationException geworfen, bevor der Controller-Body ausgeführt wird. Die Exception wird von buildForwardingError behandelt, der die redirect_uri direkt aus der HTTP-Anfrage liest und für eine 302-Weiterleitung verwendet, ohne jemals validateRedirectUri aufzurufen:

IdpServerExceptionHandler.java:100-130

final String redirectUri = request.getParameter("redirect_uri");
if (redirectUri == null) {
// ... return 400
} else {
final UriBuilder uriBuilder = UriBuilder.fromPath(redirectUri)
.queryParam("error", ...)
.queryParam("gematik_code", ...);
// ...
response.setHeader(HttpHeaders.LOCATION, location.toString());
return new ResponseEntity<>(HttpStatus.FOUND);
}

View source →

Die redirect_uri-Validierung in createIdpErrorResponse greift nur bei MissingServletRequestParameterException, nicht bei ConstraintViolationException. Jede Anfrage, die einen Parameterformat-Validierungsfehler auslöst, leitet daher zur beliebigen redirect_uri des Angreifers weiter.

Ein Angreifer kann dies ausnutzen, indem er eine Anfrage mit einer gültigen client_id aber einem absichtlich fehlerhaften code_challenge sendet. Der Wert entspricht nicht dem erwarteten Regex-Muster, was Fehlercode 2010 mit HTTP-Status 302 auslöst. Der Error-Handler leitet den Benutzer dann zur vom Angreifer kontrollierten URL weiter:

Proof of Concept

curl -v 'https://idp.example.com/sign_response?\
client_id=eRezeptApp&\
redirect_uri=https://evil.com&\
response_type=code&\
scope=openid+e-rezept&\
code_challenge=too_short&\
code_challenge_method=S256&\
state=x&nonce=y'

Auswirkung

  • OAuth-Phishing: Angreifer können Links erstellen, die scheinbar von der vertrauenswürdigen IDP-Domain stammen, aber Benutzer im Gesundheitswesen auf eine Phishing-Seite umleiten.
  • Diebstahl von Anmeldedaten durch Social Engineering in Kombination mit einer überzeugenden Phishing-Seite.

Abhilfe

Aktualisieren Sie auf ref-idp-server Version 30.0.5 oder höher, die die redirect_uri in allen Fehlerpfaden validiert.

Referenzen

Wer wir sind

Die Sicherheitsforscher hinter diesem Advisory.

Dr. Simon Weber Profile

Dr. rer. nat. Simon Weber

Senior Pentester & MedSec-Forscher

Ich evaluiere Ihr SaMD mit derselben branchenprägenden Sicherheitsexpertise, die ich dem BAK MV für die Überarbeitung des B3S-Standards beigetragen habe.

  • Promotion über Krankenhaus-Cybersicherheit
  • Kritische Schwachstellen in Krankenhaussystemen gefunden
  • Alumni der THB MedSec-Forschungsgruppe
Volker Schönefeld Profile

Dipl.-Inf. Volker Schönefeld

Senior Application Security Expert

Als ehemaliger CTO und Entwickler, der zum Pentester wurde, arbeite ich mit Ihrem Team zusammen, um Schwachstellen aufzudecken und Lösungen zu finden, die zu Ihrer Architektur passen.

  • 20+ Jahre als CTO, 50+ Mio. App-Downloads
  • Architektur und Absicherung großer IoT-Flotten
  • Certified Web Exploitation Specialist

Penetrationstest gesucht?

Machine Spirits ist spezialisiert auf Sicherheitsbewertungen für Medizinprodukte und Gesundheits-IT. Von MDR-Penetrationstests bis C5-Cloud-Compliance helfen wir MedTech-Unternehmen, regulatorische Anforderungen zu erfüllen.