Oviva epa4all-client
TLS-Zertifikatsprüfung in Produktion deaktiviert
Der produktive REST-Service-Einstiegspunkt baut die Konnektor-Verbindung mit .trustAllServers() auf, installiert einen NaiveTrustManager, dessen checkServerTrusted() eine No-op-Methode ist, und deaktiviert die Common-Name-Prüfung. Es gibt keinen anderen Pfad im produktiven Einstiegspunkt. Ein Angreifer auf dem Netzwerkpfad zwischen ePA-Dienst und Konnektor kann ein beliebiges Zertifikat präsentieren und den SOAP-Verkehr im Klartext abfangen.
Beschreibung
buildFactory() wählt den Trust-all-Pfad ohne Bedingung oder Konfigurationsschalter:
Main.java:125-131
private KonnektorConnectionFactory buildFactory(Config cfg) { return KonnektorConnectionFactoryBuilder.newBuilder() .clientKeys(cfg.clientKeys()) .konnektorUri(cfg.konnektorUri()) .proxyServer(cfg.proxyAddress(), cfg.proxyPort()) .trustAllServers() // currently we don't validate the server's certificate .build();}.trustAllServers() installiert NaiveTrustManager, dessen checkServerTrusted() eine leere Methode ist, die jedes Zertifikat akzeptiert:
NaiveTrustManager.java:8-28
public class NaiveTrustManager implements X509TrustManager { @Override public void checkServerTrusted(X509Certificate[] chain, String authType) { // we're naive, let's just trust everything }}Auch die Hostname-Prüfung ist abgeschaltet, in KonnektorConnectionFactoryImpl.java:158 (tlsParams.setDisableCNCheck(true)). Die Builder-Methode hinter .trustAllServers() trägt ein /** DO NOT USE IN PRODUCTION! */-Javadoc, sodass der produktive Einstiegspunkt den Trust-all-Manager über eine ausdrücklich nicht für die Produktion vorgesehene Methode erreicht, ohne alternativen Pfad im geprüften Code.
Auswirkung
- Ein Angreifer im Netzwerksegment zwischen ePA-Dienst und Konnektor (dem LAN der Gesundheitseinrichtung, einem VPN-Transit-Hop oder TI-Netzwerkinfrastruktur) präsentiert ein selbstsigniertes Zertifikat für einen beliebigen Hostnamen; der Client akzeptiert es und die Verbindung kommt zustande.
- Der abgefangene SOAP-Austausch enthält Versichertenkennungen (KVNR), SMC-B-Kartenoperationen (Authentifizierung und Signatur), Dokumenteninhalte und Credential-Austausch. Der Angreifer kann all dies mitlesen und manipulieren.
Abhilfe
Aktualisieren Sie epa4all-client auf 1.2.2 oder höher. Der Fix ersetzt .trustAllServers() durch einen korrekt konfigurierten TrustManager, der das Zertifikat des Konnektors prüft, und entfernt den Hostname-Check-Override setDisableCNCheck(true). Das Konnektor-Zertifikat muss gegen den passenden Trust-Anchor (die CA des Konnektors, die betreiberspezifisch sein kann) bei aktivierter Hostname-Prüfung validiert werden; nicht allein auf den System-Standard-Truststore zurückfallen.
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.
Prüfen, dass trustAllServers() aus dem Produktionspfad entfernt ist.
Stellen Sie sicher, dass der produktive Einstiegspunkt
.trustAllServers()nicht mehr aufruft und keinNaiveTrustManagerinstalliert wird. Die dahinterliegende Methode ist im Javadoc als nicht produktionstauglich markiert.Sicherstellen, dass die Hostname-Prüfung aktiv ist.
Prüfen Sie, dass
setDisableCNCheck(true)entfernt ist, sodass CN/SAN des Konnektor-Zertifikats dem erwarteten Hostnamen entsprechen müssen.Gegen den korrekten Trust-Anchor validieren.
Das Konnektor-Zertifikat muss auf seine passende CA zurückführen. Binden Sie diesen Truststore an die Verbindung, statt die Prüfung zu deaktivieren; ein selbstsigniertes oder betreiberspezifisches Konnektor-Zertifikat wird mit einem dedizierten Truststore behandelt, nicht mit einem Trust-all-Manager.
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.
