Alle Sicherheitshinweise

Oviva epa4all-rest-service

Unauthentifizierte REST-API für Schreibzugriffe auf Patientenakten

Der epa4all-rest-service stellt Endpunkte zum Schreiben und Ersetzen von Dokumenten bereit, ohne jede Authentifizierungs-Middleware in der Handler-Kette, bindet standardmäßig an 0.0.0.0 und übernimmt die KVNR der Ziel-Betroffenen vom Aufrufer. Jeder Aufrufer, der den Dienst erreicht, schreibt mit den SMC-B-Credentials der Einrichtung beliebige Dokumente in jede ePA.

Verfasst vonChiara Fliegner, Volker Schönefeld, Simon WeberErstveröffentlichung 2026-05-19Vollständige Offenlegung 2026-05-28
SchweregradMittelCVSS 6.5CVSS-3.1-VektorAV:A/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:NCWECWE-306 (Missing Authentication for Critical Function)ProduktOviva epa4all-rest-serviceBetroffene VersionenAlle Versionen bis einschließlich 1.2.4 (`ghcr.io/oviva-ag/epa4all-rest-service`)Behoben inKein behobenes Release verfügbar.CVECVE-2026-47672GHSAGHSA-c82x-f4xr-qv33

Beschreibung

Die Handler-Kette umhüllt das Routing mit Cache- und Error-Handling, ohne jede Authentifizierungsschicht in der Komposition:

Main.java:224-272

new DisableCacheHandler(new BlockingHandler(withErrorHandling(routing)))

View source →

Der Dienst bindet standardmäßig an 0.0.0.0 (Main.java:150), und das Produktions-Docker-Beispiel der README veröffentlicht den Port ohne localhost-Bindung (-p '8080:8080'), sodass eine Standard-Bereitstellung aus dem lokalen Netz erreichbar ist. Die OpenAPI-Spezifikation (openapi.yaml) definiert null securitySchemes, und das Repository enthält weder eine SECURITY.md noch eine Dokumentation, die eine Netzwerkisolierung verlangt.

Die Ziel-Betroffene ist die KVNR, die der Aufrufer liefert; die einzige Prüfung ist auf null:

Epa4allClientService.java:44

Objects.requireNonNull(insurantId);

View source →

Während eines Testlaufs lieferte ein einzelner unauthentifizierter POST an den Dokument-Endpunkt mit einer synthetischen KVNR den Status 200 und eine Dokument-ID zurück, was bestätigte, dass der Schreibvorgang ohne Credentials im Request den Patientenakten-Pfad erreichte:

Unauthentifizierter Schreibzugriff (PoC-Ausgabe, KVNR geschwärzt)

POST /documents (kein Authorization-Header, kein API-Key)
insurant_id: X000000000
-> 200 OK
{"id":"<document-id>"}

View source →

Auswirkung

  • Ein Angreifer, der den Dienst erreicht, schreibt ohne jede Authentifizierung mit den SMC-B-Credentials der Einrichtung beliebige Dokumente in jede ePA. Da die KVNR aufruferkontrolliert ist, ist das Ziel jede Betroffene, für die die SMC-B-Karte tätig werden kann, nicht nur eine.
  • Eine Auswirkung auf die Vertraulichkeit wird hier nicht geltend gemacht (es geht um den Schreib-/Ersetzungspfad); die Auswirkung auf die Integrität ist das Einfügen oder Ersetzen von Dokumenten in einer Patientenakte, die ein nachgelagerter Behandler oder ein System später als authentisch lesen kann.

Abhilfe

Es ist kein behobenes Release verfügbar. Oviva empfiehlt, eine Authentifizierung zwischen Diensten (zum Beispiel mTLS) über Netzwerkrichtlinien oder einen Proxy zu erzwingen und den Dienst in einem isolierten Netzwerk-Namespace zu betreiben (etwa als Kubernetes-Sidecar oder über ein Service-Mesh mit entsprechenden Richtlinien); Oviva hat in Pull Request #43 einen Dokumentationshinweis zur API-Autorisierung ergänzt. Bis ein Release eine Authentifizierung ergänzt, behandeln Sie den Dienst als unauthentifizierte Vertrauensgrenze: binden Sie ihn an 127.0.0.1, veröffentlichen Sie den Docker-Port nur auf localhost (-p '127.0.0.1:8080:8080') und setzen Sie einen authentifizierenden Proxy vor jeden nicht-lokalen Zugriff.

Checkliste für Betreiber

  • Den REST-Dienst als unauthentifiziert behandeln.

    Kein veröffentlichtes Release ergänzt eine Authentifizierung. Gehen Sie davon aus, dass jeder Aufrufer, der den Port erreicht, in Patientenakten schreiben kann, und gestalten Sie die Bereitstellung entsprechend.

  • An localhost binden und den Port nur auf localhost veröffentlichen.

    Ändern Sie die Bind-Adresse von 0.0.0.0 auf 127.0.0.1 und verwenden Sie -p '127.0.0.1:8080:8080' im Docker-Run statt des -p '8080:8080' der README.

  • Einen authentifizierenden Proxy vor jeden Remote-Zugriff setzen.

    Wenn der Dienst über localhost hinaus erreichbar sein muss, stellen Sie ihm einen mTLS- oder Token-prüfenden Reverse-Proxy voran und beschränken Sie den Netzwerkpfad per Richtlinien, sodass nur der vorgesehene Aufrufer ihn erreicht.

  • Auf ein Release mit API-Authentifizierung achten.

    Pull Request #43 ergänzt einen Dokumentationshinweis zur API-Autorisierung; kein veröffentlichtes Release ergänzt eine Auth-Prüfung auf den Dokument-Endpunkten. Verfolgen Sie das Projekt auf ein Release, das eine solche einführt, und aktualisieren Sie, sobald verfügbar.

Bewertung im Detail

AV:ADer Angreifer muss den Dienst im Netz erreichen, an das er bindet. In der Standard-Bereitstellung ist das das lokale Netzwerksegment, eine Position im Nachbarnetz.AC:LEin einziger Request an den Dokument-Endpunkt genügt; keine Credentials, Zeit- oder Umgebungsbedingungen.PR:NAuf dem Endpunkt existiert keine Authentifizierung, also werden keine Privilegien benötigt.UI:NKeine Nutzerinteraktion; der Angreifer ruft die API direkt auf.S:UDie Auswirkung ist auf die ePA-Akten beschränkt, für die die SMC-B-Karte des Dienstes tätig werden kann.C:NDie Schwachstelle wird auf dem Schreib-/Ersetzungspfad bewertet; eine Auswirkung auf die Vertraulichkeit wird für diesen Befund nicht geltend gemacht.I:HBeliebige Dokument-Schreibvorgänge und -Ersetzungen in jeder adressierbaren Patientenakte, der SMC-B-Identität der Einrichtung zugeschrieben.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.