gematik Authenticator
Hijacking des Authentifizierungsablaufs
Ein bösartiger authenticator://-Deep-Link kann den gematik Authenticator auf einen angreiferkontrollierten Identity Provider lenken. Dabei wird die per Smartcard signierte Authentifizierungs-Assertion der betroffenen Person abgegriffen und per Relay an den echten IDP weitergereicht, um die Anmeldung in deren Namen abzuschließen.
Beschreibung
Der gematik Authenticator registriert sich als Handler für das benutzerdefinierte URI-Schema authenticator:// und akzeptiert einen challenge_path-Parameter, der den Identity Provider (IDP) für eine OpenID-Connect-Anmeldung benennt. Keine Allowlist schränkt ein, welcher Host als IDP dienen darf, sodass ein präparierter Deep Link den Authenticator auf einen angreiferkontrollierten Server lenken kann. Der Link lässt sich über eine Webseite, eine E-Mail oder einen QR-Code zustellen.
Der Parameter wird nur auf die URL-Form geprüft, nicht auf die Domain. Jede http/https-URL wird akzeptiert:
challenge_path-Prüfung akzeptiert jede HTTP(S)-URL
export async function validateChallengePath(challengePath: string) { if (!COMMON_USED_REGEXES.URL.test(challengePath)) { /* throw */ }}
// constants.tsURL: /(http|https):\/\/(\w+:?\w*@)?(\S+)(:\d+)?(\/|\/([\w#!:.?+=&%@!\-/]))?/,Der Authenticator ruft das OpenID-Connect-Discovery-Dokument von diesem Host ab und decodiert es mit jsonwebtoken.decode(), das keine Signaturprüfung durchführt:
Discovery-Dokument wird ohne Signaturprüfung akzeptiert
const res = await window.api.httpGet( context.state.idpHost + IDP_ENDPOINTS.OPENID_CONFIGURATION, { /* ... */ });context.commit('setOpenIdConfiguration', jsonwebtoken.decode(res.data));jsonwebtoken.decode() decodiert das Token nur per Base64; die Dokumentation der Bibliothek warnt ausdrücklich, dass es nicht für nicht vertrauenswürdige Nachrichten verwendet werden darf. Das unsignierte Dokument des Angreifers (alg: none) wird akzeptiert, und seine Felder authorization_endpoint und uri_puk_idp_enc werden unverändert genutzt. Anschließend verschlüsselt der Authenticator die per Smartcard signierte Assertion mit dem öffentlichen Schlüssel des Angreifers und sendet sie per POST an dessen Endpunkt:
Signierte Assertion wird an den angreiferkontrollierten Endpunkt gesendet
const payload = 'signed_challenge=' + state.jweChallenge;const url = context.state.openIdConfiguration.authorization_endpoint;const response = await window.api.httpPost(url, payload, { /* ... */ });Das gesendete JWE umschließt ein JWS mit dem X.509-AUT-Zertifikat der Karte (x5c-Header) und der Smartcard-Signatur. Da der Angreifer den Verschlüsselungsschlüssel besitzt, kann er es entschlüsseln und die signierte Assertion gewinnen; dieser Abgriff der Credentials ist gegen die Mock-Umgebung Ende-zu-Ende nachgewiesen. Die Challenge-JWT enthält keine Umgebungsbindung (kein cnf-Claim, keine Quell-IP, keine TLS-Sitzungskennung), sodass die abgegriffene Assertion ihrerseits an den echten IDP weitergereicht werden kann, um die Anmeldung als betroffene Person abzuschließen — bewertet anhand der Spezifikation und der Referenz-IDP-Implementierung, nicht gegen die Produktivinfrastruktur getestet.
IDP-Zertifikats-Pinning war in v4.4.1 vorhanden, wurde aber in v4.12.0 zugunsten des Betriebssystem-Truststores entfernt. Der Host des Angreifers benötigt daher nur ein gewöhnliches, öffentlich vertrauenswürdiges TLS-Zertifikat (etwa von Let's Encrypt). Der private Schlüssel der Smartcard verlässt die Karte nie; die Schwäche besteht darin, dass der Authenticator den IDP, mit dem er spricht, nicht authentifiziert.
Auswirkung
- Ein Angreifer greift die signierte Authentifizierungs-Assertion der betroffenen Person ab, einschließlich ihres X.509-AUT-Zertifikats und der Smartcard-Signatur, ohne Rechte, ohne Schadsoftware und ohne Kompromittierung von Konnektor oder Smartcard.
- Da die Challenge keine Sitzungsbindung trägt, lässt sich die Assertion an den echten IDP weiterreichen, um die Anmeldung als betroffene Person abzuschließen. Dabei werden Token in deren Namen für Dienste der Telematikinfrastruktur wie ePA, E-Rezept und Versichertendaten ausgestellt.
- Die betroffene Person sieht nur eine normal wirkende Authentifizierungsaufforderung. Der Ablauf lässt sich über eine Webseite, einen E-Mail-Link, einen QR-Code oder jeden lokalen Prozess auslösen, der den Protokoll-Handler aufruft.
Abhilfe
Aktualisieren Sie auf v4.16.0 oder höher. Die dauerhaften Korrekturen sind: challenge_path auf eine Allowlist bekannter gematik-IDP-Hosts beschränken; das Discovery-Dokument und die Challenge mit jsonwebtoken.verify() gegen den gepinnten Signaturschlüssel des IDP prüfen statt mit decode(); das IDP-TLS-Zertifikats-Pinning wiederherstellen und prüfen, dass die Endpunkte aus dem Discovery-Dokument auf dem Allowlist-Host bleiben; sowie DPoP (RFC 9449) einführen, sodass die Challenge an einen sitzungsspezifischen Schlüssel gebunden ist, den ein Angreifer beim Weiterreichen der Smartcard-Signatur nicht reproduzieren kann.
Checkliste für Betreiber
Eingesetzte Version prüfen
Stellen Sie sicher, dass auf jedem Arbeitsplatz gematik Authenticator v4.16.0 oder höher läuft; frühere Builds, einschließlich der produktiven App-Store-Version v4.15.3, sind betroffen.
authenticator://-Links als nicht vertrauenswürdig behandeln
Die Authentifizierung sollte aus dem lokalen Primärsystem gestartet werden, niemals über einen Link in einer E-Mail, auf einer Webseite oder in einem QR-Code.
Auf unerwartete IDP-Hosts achten
Wo Proxy-Logs verfügbar sind, sollte auf Authenticator-IDP-Verkehr zu Hosts außerhalb der bekannten gematik-Telematikinfrastruktur-Domains alarmiert werden.
Bewertung im Detail
Der Schweregrad entspricht dem GHSA-Score des Herstellers (CVSS 9.3).
Referenzen
So können wir helfen
Wer wir sind
Die Sicherheitsforscher hinter diesem Sicherheitshinweis.

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
- gematik Security Hero

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
- gematik Security Hero
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.
