Oviva epa4all-client
IDP-Discovery-Document-Signature-Bypass
Der Client bezieht das OpenID-Discovery-Dokument des zentralen IDP als signiertes JWT, liest dessen Payload aber ohne Signaturprüfung. Ein Angreifer, der die TLS-Verbindung zum Identity Provider per Man-in-the-Middle abfängt, unterschiebt ein gefälschtes Dokument, das die Endpunkte uri_puk_idp_enc und uri_puk_idp_sig auf angreiferkontrollierte URLs umleitet, und greift so das SMC-B-signierte Authentifizierungsmaterial ab.
Beschreibung
parseFromJwt() ruft JWSObject.parse(jwt).getPayload() auf, was die JWT-Struktur dekodiert, aber keine Signaturprüfung durchführt, bevor die Payload verwendet wird:
OidcClient.java:82-89
private OidcDiscoveryResponse parseFromJwt(String jwt) { try { var payload = JWSObject.parse(jwt).getPayload(); return JsonCodec.readBytes(payload.toBytes(), OidcDiscoveryResponse.class); } catch (ParseException e) { throw new AuthorizationException("Failed to parse JWT", e); }}Dies verschärft sich durch ein selbstreferenzielles Vertrauensmuster im Challenge-Responder, bei dem der iss-Claim des Challenge-JWT steuert, von wo die Prüfschlüssel bezogen werden. Ein Kommentar in diesem Code lautet:
AuthnChallengeResponder.java:78
// Note: The challenge contains the URL to the keys, so is anyways// in control of it. Not sure what validating the signature adds.Das gefälschte Dokument verweist uri_puk_idp_enc und uri_puk_idp_sig auf Angreifer-Infrastruktur. Der Client bezieht den IDP-Signaturschlüssel von der URL des Angreifers und validiert die Challenge dagegen (das zirkuläre Vertrauen), verschlüsselt die SMC-B-signierte Antwort mit dem Verschlüsselungsschlüssel des Angreifers und sendet sie per POST an dessen Auth-Endpunkt. Der äußere HTTP-Client läuft über den Konnektor-Proxy innerhalb der TI, was einen Schutz auf Transportebene bietet und die praktische Ausnutzbarkeit auf einen Angreifer beschränkt, der sich bereits innerhalb der TI befindet.
Auswirkung
- Ein Angreifer, der die TLS-Verbindung zum zentralen IDP per Man-in-the-Middle abfängt, greift die SMC-B-signierte Authentifizierungsantwort und das beim Login ausgetauschte Schlüsselmaterial ab. Mit diesem Material kann der Angreifer sich gegenüber dem ePA-Backend als die legitime Einrichtung authentifizieren und die Akten der Betroffenen lesen oder verändern, für die die SMC-B-Karte der Einrichtung tätig werden kann.
- Während eines Testlaufs lieferte ein Mock-IDP ein Discovery-JWT aus, das mit einem dem Client nicht vertrauten Schlüssel signiert war; der Client schloss den Autorisierungsfluss gegen die angreiferkontrollierten Schlüssel-URIs ab (beobachtet als
send_authcode_scauf dem entschlüsselten Kanal), was die Annahme des gefälschten Dokuments bestätigte.
Abhilfe
Aktualisieren Sie epa4all-client auf 1.2.2 oder höher. Für betroffene Versionen ist kein Workaround verfügbar. Der Fix prüft die JWT-Signatur in parseFromJwt() gegen einen Schlüssel, der gepinnt oder aus einer vertrauenswürdigen, nicht aus dem JWT abgeleiteten Quelle bezogen wird, validiert den issuer gegen eine Allowlist vertrauenswürdiger TI-IDP-URIs und pinnt die IDP-Discovery-URL, statt sie aus dem iss-Claim des Challenge-JWT abzuleiten.
Checkliste für Betreiber
epa4all-client auf 1.2.2 oder höher aktualisieren.
Alle Versionen vor 1.2.2 sind betroffen. Der Fix ist Pull Request #36.
Sicherstellen, dass die Discovery-JWT-Signatur tatsächlich geprüft wird.
Prüfen Sie nach dem Update, dass ein mit einem nicht vertrauten Schlüssel signiertes Discovery-Dokument abgelehnt wird. Der Signaturschlüssel muss aus einer gepinnten oder vertrauenswürdigen Quelle stammen, nicht aus dem JWT oder der Challenge selbst.
IDP-Discovery-URL pinnen und den Issuer per Allowlist prüfen.
Leiten Sie die Discovery-URL oder die Schlüssel-URIs nicht aus dem
iss-Claim des Challenge-JWT ab. Pinnen Sie den Discovery-Endpunkt und validieren Sieissuergegen eine bekannte Liste von TI-IDP-URIs, um das selbstreferenzielle Vertrauen aufzubrechen.Nicht den Konnektor-Proxy als einzige Barriere annehmen.
Das Transport-Routing durch die TI beschränkt, wer den IDP-Pfad erreicht, ist aber keine Authentifizierung des Discovery-Dokuments. Ein Angreifer innerhalb der TI oder einer, der den Proxy erreicht, gewinnt ohne die Signaturprüfung weiterhin.
Bewertung im Detail
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.
