Alle Sicherheitshinweise

fbeta ePA3-Service-OpenSource

TLS-Zertifikatsprüfung universell deaktiviert

Jede HTTPS-Verbindung zum ePA-Aktensystem und zum Konnektor in fbetas ePA3-Service setzt verify=False, unbedingt über alle Umgebungen hinweg. Ein netzwerkpositionierter Angreifer kann das TLS des Clients mit einem beliebigen Zertifikat terminieren; auf der Konnektor-Session legt der Client zusätzlich seine mTLS-Smartcard-Credentials demjenigen vor, der antwortet.

SchweregradHochCVSS 7.5CVSS-3.1-VektorAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:NCWECWE-295 (Improper Certificate Validation)Produktfbeta ePA3-Service-OpenSourceBetroffene VersionenAlle Versionen vor 1.3.0 (vom initialen Commit `a61f91d` bis einschließlich 1.0.1)Behoben in1.3.0 (enthält Pull Request #9)GHSAGHSA-j9m9-pmwv-hwwr

Beschreibung

verify=False taucht an fünf Stellen in VAUProtokoll.py auf (Zeilen 99, 202, 271, 431, 581) und einmal auf Session-Ebene in Konnektor.py:44. Ein Quellkommentar erklärt die ursprüngliche Absicht (eine Verbindung zu einem selbstsignierten Entwicklungsendpunkt), doch keine Bedingung wurde je ergänzt, die die Lockerung gegen die Umgebung absichert:

VAUProtokoll.py:98 (Intentionskommentar)

# Um ein VAU-Kanal zu https://epa-as-2.dev.epa4all.de/ aufzubauen muss verify auf False gesetzt werden, da es sich um ein self-signed Zertifikat handelt

View source →

Die Bibliothek unterstützt EPA_ENVIRONMENT = "PROD" (constants.py:48-52) ohne bedingte TLS-Prüfung; verify=False gilt überall, in jeder Umgebung. IDP-Verbindungen verwenden ein blankes requests.get(), das standardmäßig verify=True setzt; die Lockerung betrifft also gezielt die ePA- und Konnektor-Pfade.

Konnektor.py:44 (Lockerung auf Session-Ebene)

self.session.verify = False

View source →

Auf der Konnektor-Session authentifiziert sich der Client per mTLS (self.session.cert = (self.cert, self.key)), prüft jedoch die Identität des Konnektors nicht. Ein Angreifer, der den Konnektor imitiert, erhält das mTLS-Zertifikat des Clients und sammelt anschließend die Smartcard-Operationen ein. Auf der Seite des ePA-Aktensystems ist dieses Finding der Transport-Layer-Enabler für den fbeta: VAU-Server-Authentifizierungs-Bypass durch zirkuläres Zertifikatsvertrauen; zusammen verbleibt keine Schicht Server-Authentifizierung auf dem Kanal, der Patientendaten trägt.

Auswirkung

  • Jeder netzwerkpositionierte Angreifer (ARP-Spoofing, DNS-Poisoning, Rogue-AP, BGP-Hijack) kann die TLS-Verbindung des Clients zum ePA-Aktensystem mit einem beliebigen Zertifikat terminieren und so den gesamten ePA-Verkehr abfangen. TI-as-a-Service-Deployments routen ePA-Verkehr per TLS über das öffentliche Internet, genau das Bedrohungsmodell, das verify=True adressiert.
  • Auf der Konnektor-Verbindung legt der Client seine mTLS-Smartcard-Credentials demjenigen vor, der antwortet. Ein Angreifer, der den Konnektor imitiert, sammelt diese Credentials und die anschließenden Smartcard-Operationen ein.
  • In Kombination mit dem fbeta: VAU-Server-Authentifizierungs-Bypass durch zirkuläres Zertifikatsvertrauen entfernt dieses Finding die letzte verbleibende Schicht der Server-Authentifizierung. Eine einzige MITM-Position liest und modifiziert dann den gesamten inneren ePA-Verkehr.

Abhilfe

Aktualisieren Sie fbeta ePA3-Service-OpenSource auf 1.3.0 oder höher. Der Fix entfernt alle verify=False-Stellen und ersetzt sie durch passende CA-Bundles für die TI-Endpunkte, reaktiviert die Konnektor-Server-Prüfung mit einem Truststore, der das Konnektor-CA-Zertifikat enthält, und macht die TLS-Prüfung unbedingt, statt sie über EPA_ENVIRONMENT zu gaten. Für die Entwicklung gegen selbstsignierte Zertifikate ist die Entwicklungs-CA im Truststore zu hinterlegen, statt die Prüfung zu deaktivieren.

Checkliste für Betreiber

  • Auf fbeta ePA3-Service-OpenSource 1.3.0 oder höher aktualisieren.

    Alle Versionen vor 1.3.0 sind betroffen. Der Fix liegt in Pull Request #9.

  • Das TI-PKI-Bundle mit dem Deployment ausliefern.

    TI-PKI-Root-Zertifikate liegen nicht im Standard-Truststore des Systems. Beziehen Sie sie aus dem TI-Root-CA-Bundle des gemSpec_PKI und pinnen Sie sie für jede ePA- und Konnektor-Session.

  • Den eigenen Fork nach verify=False durchsuchen.

    Führen Sie grep -RIn 'verify=False\|session.verify\s*=\s*False' . gegen Ihr Deployment dieser Bibliothek oder einen Fork aus. Jeder Treffer auf einem produktiven Codepfad ist eine potenzielle Regression; Entwicklungspfade gehören explizit hinter ein Nicht-Produktions-Flag, nicht in den Standardpfad.

  • Konnektor-Identität validieren, nicht nur die eigene.

    mTLS ist beidseitig; eine einseitige Konfiguration leakt Credentials. Die Konnektor-Session muss per verify= gegen einen CA-Store geprüft werden, der das Konnektor-Zertifikat enthält.

Bewertung im Detail

AV:NErreichbar von jeder Netzwerkposition auf dem Pfad zwischen DiGA-Backend und ePA-Aktensystem bzw. Konnektor.AC:LStandard-TLS-Terminierung mit einem beliebigen Zertifikat reicht aus; keine Zeit- oder Umgebungsbedingungen.PR:NAußer der Netzwerkposition selbst werden keine Credentials benötigt.UI:NDas DiGA-Backend initiiert die Verbindung nach seinem eigenen Zeitplan.S:UDie Auswirkung ist auf die TLS-geschützten Kanäle des betroffenen Clients beschränkt.C:HAuf dem ePA-Kanal Klartext-Zugriff auf die durch das äußere TLS geschützte Hülle; auf dem Konnektor-Kanal Offenlegung der mTLS-Smartcard-Credentials.I:NDie TLS-Terminierung allein ermöglicht das Abhören. Isoliert bewertet gemäß CVSS-Konvention; die Modifikation von ePA-Payloads ist durch die innere VAU-Schicht abgefangen, die im fbeta: VAU-Server-Authentifizierungs-Bypass durch zirkuläres Zertifikatsvertrauen behandelt wird (selbes Release, gemeinsamer Fix in 1.3.0). Zusammen mit diesem Finding: I:H.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.