Alle Sicherheitshinweise

med-united epa4all

VAU-Server-Authentifizierungs-Bypass

epa4all bindet die Referenzimplementierung lib-vau von gematik als Git-Submodul ein und ergänzt darauf keinerlei Prüfung. Der Handshake deserialisiert die Felder signatureEs256, certHash und ocspResponse des Servers, ohne sie zu lesen. Ein Angreifer im Netzwerkpfad zum ePA-Aktensystem kann so eigene Schlüssel unterschieben, den Handshake abschließen und die resultierende Sitzung kontrollieren.

Verfasst vonChiara Fliegner, Volker Schönefeld, Simon WeberErstveröffentlichung 2026-05-20Vollständige Offenlegung 2026-05-28
SchweregradHochCVSS 8.1CVSS-3.1-VektorAV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:HCWECWE-347 (Improper Verification of Cryptographic Signature)Produktmed-united epa4allBetroffene Versionen1.0.0-SNAPSHOT, alle Builds vor dem Fix vom 20.05.2026 (von der initialen lib-vau-Integration bis Commit `f9351df`)Behoben inBehoben am 20.05.2026 (ergänzt Zertifikats- und Hostname-Prüfungen für lib-vau sowie einen Keystore auf Basis der Telematik-TSL).CVECVE-2026-48021GHSAGHSA-vvh7-x6c7-46gh

Beschreibung

Mangel 1: fehlende Kapselung. VauClient.receiveMessage2() delegiert direkt an die Referenz-State-Machine, ohne jede Prüfung auf Anwendungsebene:

VauClient.java:127-128

public byte[] receiveMessage2(byte[] message2) {
return vauStateMachine.receiveMessage2(message2);
}

View source →

Mangel 2: Referenz-State-Machine prüft nur das Ablaufdatum. Innerhalb der eingebundenen lib-vau ist die einzige Prüfung der signierten öffentlichen Server-Schlüssel ein Vergleich der zeitlichen Gültigkeit; die kryptografische Signatur wird deserialisiert, aber nie gelesen:

VauClientStateMachine.java:104 (eingebundene gematik lib-vau)

VauPublicKeys transferredSignedServerPublicKeyList = signedPublicVauKeys.extractVauKeys();
checkCertificateExpired(transferredSignedServerPublicKeyList.getExp());

View source →

Status der sechs A_24624-01-Prüfungen, die der Client auf den signierten öffentlichen Schlüsseln des Servers durchführen muss:

#A_24624-01-PrüfungStatus in epa4all
1Zertifikatskette zum TI-PKI-RootNicht implementiert
2OCSP-Antwort gültig und aktuellNicht implementiert
3Rollen-OID enthält oid_epa_vauNicht implementiert
4ES256-Signatur auf signed_pub_keysNicht implementiert
5ECC/Kyber-Schlüsselformat-PrüfungImplementiert (durch lib-vau)
6Ablauf-Prüfung (exp > now)Implementiert (durch lib-vau)

Die Felder signatureEs256, certHash und ocspResponse auf SignedPublicVauKeys werden zwar in das Objekt deserialisiert, aber von keinem Prüfpfad in epa4all oder der eingebundenen lib-vau gelesen. Zusammen mit med-united: TLS-Zertifikatsprüfung in epa4all deaktiviert existiert weder auf Transport- noch auf Anwendungsebene eine Authentifizierung des ePA-Backends.

Dieselbe Lücke entstammt dem Upstream der gematik-Referenzimplementierungen; siehe gematik: VAU-Handshake führt nur 2 von 6 vorgeschriebenen Server-Schlüssel-Prüfungen aus für das Grundmuster über die Forks hinweg.

Auswirkung

  • Ein netzwerkpositionierter Angreifer zwischen epa4all und dem ePA-Aktensystem fängt den VAU-Handshake ab, liefert selbstsignierte VAU-Public-Keys mit einem selbstsignierten Zertifikat aus, und der Client akzeptiert beides. Der Angreifer leitet dieselben K2-Sitzungsschlüssel ab wie der Client und kontrolliert den resultierenden verschlüsselten Kanal.
  • Im produktiven Bereitstellungsmodell passt das Angreifermodell ins Praxisnetz. epa4all wird als On-Premise-Docker-Container (servicehealtherxgmbh/epa4all) ausgeliefert, der in einer Arztpraxis betrieben wird; der Container ist aus dem lokalen Netz erreichbar und baut die ausgehende Verbindung zum ePA-Backend auf.
  • Ein MITM, der die Sitzungsschlüssel hält, kann den gesamten inneren HTTP-Verkehr auf dem VAU-Kanal lesen und verändern: Einwilligungsentscheidungen, Medikationsdaten, Dokument-Uploads, Autorisierungs-Token und Anspruchsabfragen. Während eines Testlaufs las ein einzelner Relay die Einwilligungsentscheidungen einer Betroffenen, tauschte auf einer zweiten Antwort Versicherten-ID und Entscheidungswerte aus und schleuste einen dritten Patientendatensatz vollständig ein, alles mit einem selbstsignierten Zertifikat ohne CA-Kette.

Abhilfe

Aktualisieren Sie auf einen Build vom 20.05.2026 oder später. Der Fix des Herstellers ergänzt Zertifikats- und Hostname-Prüfungen für lib-vau sowie einen Keystore auf Basis der Telematik-TSL, sodass die ES256-Signatur auf SignedPublicVauKeys gegen ein vertrauenswürdiges Zertifikat aus der TI-PKI geprüft wird. Für betroffene Builds existiert kein Workaround; ein Pinning auf Transportebene authentifiziert den VAU-Server nicht, und die parallele Schwachstelle med-united: TLS-Zertifikatsprüfung deaktiviert bedeutet, dass es ohnehin kein Transport-Pinning gibt, auf das man sich stützen könnte. Beide Fixes sind erforderlich.

Checkliste für Betreiber

  • Auf den Build vom 20.05.2026 oder später aktualisieren.

    Alle 1.0.0-SNAPSHOT-Builds vor diesem Datum sind betroffen. Der Fix ergänzt den Telematik-TSL-Keystore und hängt die Signaturprüfung auf SignedPublicVauKeys clientseitig ein.

  • Prüfen, dass die TI-PKI-Root-Anchors zur Laufzeit geladen werden.

    Der Standard-JVM-/System-Truststore enthält keine TI-PKI-Roots. Stellen Sie sicher, dass Ihr Deployment sie aus dem TI-Root-CA-Bundle des gemSpec_PKI bezieht und dass der Keystore vor dem ersten VAU-Handshake geladen ist.

  • Diesen Fix mit dem TLS-Prüfungs-Fix kombinieren.

    Auch mit ergänzter VAU-Server-Authentifizierung muss im selben Build die TLS-Prüfung auf den ausgehenden Verbindungen wieder aktiviert werden. Die beiden Fixes sind unabhängig und beide erforderlich; siehe med-united: TLS-Zertifikatsprüfung deaktiviert.

  • Mit selbstsigniertem Gegenpart testen.

    Bauen Sie einen lokalen VAU-Gegenpart, der auf Message 2 mit angreiferkontrollierten öffentlichen Schlüsseln, selbstsigniertem cert und beliebigen signatureEs256-Bytes antwortet. Der Client muss den Handshake ablehnen. Falls nicht, ist der Validator nicht eingehängt.

Bewertung im Detail

AV:NDas Bedrohungsmodell von A_24624-01 adressiert einen Netzwerkangreifer auf dem Pfad zwischen epa4all und dem ePA-Aktensystem.AC:HDas Unterschieben der Schlüssel erfordert ein aktives, korrekt getimtes Abfangen des mehrstufigen VAU-Handshakes (Message 1 bis Message 4), keinen einzelnen passiven Request.PR:NAußer der Netzwerkposition werden keine Credentials benötigt.UI:Nepa4all initiiert den VAU-Handshake nach seinem eigenen Zeitplan; keine Nutzerinteraktion.S:UDie Auswirkung ist auf den VAU-Kanal und die ePA-Payloads beschränkt, die er transportiert.C:HKlartext-Zugriff auf ePA-Dokumenten-Reads, Einwilligungsentscheidungen und Metadaten jeder von einer betroffenen epa4all-Instanz verarbeiteten Betroffenen.I:HKlartext-Zugriff auf ePA-Dokumenten-Writes, Einwilligungsentscheidungen und Autorisierungsflüsse; der Angreifer kann Antworten auf dem inneren Kanal verändern und einschleusen.A:HEin Angreifer, der die Sitzungsschlüssel hält, kontrolliert den verschlüsselten Kanal und kann ihn unterbrechen oder verfälschen, wodurch der Praxis der Zugriff auf das ePA-Backend verwehrt wird.

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.