Alle Sicherheitshinweise

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.

Verfasst vonChiara Fliegner, Volker Schönefeld, Simon WeberErstveröffentlichung 2026-05-11Vollständige Offenlegung 2026-05-28
SchweregradHochCVSS 7.4CVSS-3.1-VektorAV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:NCWECWE-347 (Improper Verification of Cryptographic Signature)ProduktOviva epa4all-clientBetroffene VersionenAlle Versionen vor 1.2.2Behoben in1.2.2 (enthält Pull Request #36)CVECVE-2026-45575GHSAGHSA-gqx7-6552-67hf

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);
}
}

View source →

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.

View source →

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_sc auf 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 Sie issuer gegen 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

AV:NDer Angriff richtet sich gegen die Netzwerkverbindung zum IDP. Als Netzwerk statt Nachbarnetz bewertet, da der IDP-Pfad nicht auf ein lokales Segment beschränkt ist.AC:HDer Angreifer muss die TLS-Verbindung zum IDP aus der Telematikinfrastruktur heraus per MITM abfangen oder den vorgelagerten Konnektor-Proxy kompromittieren. Diese privilegierte Netzwerkposition ist die Bedingung außerhalb seiner Kontrolle.PR:NAußer der Netzwerkposition werden keine Credentials benötigt.UI:NDer Client führt den OIDC-Discovery- und Autorisierungsfluss selbstständig aus; keine Nutzerinteraktion.S:UDie Auswirkung ist auf den ePA-Authentifizierungsfluss und das darin ausgetauschte Material beschränkt.C:HDie abgegriffene SMC-B-signierte Authentifizierungsantwort und das Schlüsselmaterial legen die authentifizierte ePA-Sitzung offen.I:HMit dem SMC-B-signierten Material und der Sitzung kann der Angreifer im ePA-Authentifizierungsfluss handeln, nicht nur mitlesen.A:NKeine Auswirkung auf die Verfügbarkeit.

Referenzen

So können wir helfen

Wer wir sind

Die Sicherheitsforscher hinter diesem Sicherheitshinweis.

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