dcm4chee-arc-light
XML External Entity Injection über DICOMweb-Metadaten
Die DICOMweb-Endpunkte für Speicherung und Workitems nehmen DICOM-Metadaten als XML entgegen, das von einem SAX-Parser in seiner freizügigen Voreinstellung geparst wird. Ein Dokument, das eine externe Entity deklariert, bringt den Parser dazu, diese aufzulösen. Der expandierte Inhalt wird in ein DICOM-Attribut geschrieben und gespeichert. Da sich das gespeicherte Objekt über die Schnittstelle des Archivs wieder abrufen lässt, kommt der Inhalt einer Datei auf dem Archivhost im selben Kanal an den Aufrufer zurück, und eine Netzwerkreferenz an derselben Stelle veranlasst das Archiv, beim Parsen eine Anfrage an einen Host nach Wahl des Aufrufers zu stellen.
Beschreibung
Die DICOMweb-Endpunkte für Speicherung und Workitems nehmen ein DICOM-Dataset in XML-Form entgegen. Das Parsen läuft über den SAX-Reader der dcm4che-Bibliothek, der einen Parser aus der Standard-Factory der Plattform erzeugt und nichts daran konfiguriert:
SAXReader.java:66-74
public static Attributes parse(InputStream is, Attributes attrs)
throws ParserConfigurationException, SAXException, IOException {
if (attrs == null)
attrs = new Attributes();
SAXParserFactory f = SAXParserFactory.newInstance();
SAXParser parser = f.newSAXParser();
parser.parse(is, new ContentHandlerAdapter(attrs));
return attrs;
}disallow-doctype-decl ist nicht gesetzt, die Features für externe allgemeine und Parameter-Entities bleiben unangetastet, und Secure Processing ist nicht aktiviert. Eine Dokumenttyp-Deklaration im übermittelten Body wird deshalb berücksichtigt, und die darin deklarierten Entities löst der Parser beim Lesen auf.
Mehr als ein blinder Lesezugriff wird daraus durch den Ort, an dem die Expansion landet. Der Parser baut ein DICOM-Dataset auf, der aufgelöste Inhalt wird also in genau das Attribut gelegt, in dem die Entity-Referenz stand, und dieses Dataset wird anschließend wie jedes andere gespeichert. Da das Archiv seine gespeicherten Objekte über die eigene Metadaten-Abrufschnittstelle wieder ausliefert, liest der Aufrufer den expandierten Inhalt aus dem Attribut zurück, in das er ihn gelegt hat. Speichern und Abrufen sind dabei beides gewöhnliche DICOMweb-Operationen.
Dieselbe Stelle nimmt statt einer Dateireferenz auch eine Netzwerkreferenz an; das Archiv stellt die Anfrage dann beim Parsen. Damit werden Hosts erreicht, die vom Archiv, aber nicht vom Aufrufer routbar sind, wobei das Archiv als Ursprung auftritt. Zwei Grenzen sind erwähnenswert: Der Inhalt muss das XML-Parsing überstehen, sodass Binärdateien auf diesem Weg nicht zu gewinnen sind und Dateien mit in XML unzulässigen Zeichen den Parse-Vorgang abbrechen lassen können; und gelesen wird mit den Rechten des Dienstkontos des Archivs, nicht als root.
Der Fix aktiviert JAXP Secure Processing standardmäßig auf der gemeinsam genutzten SAX-Parser-Factory der dcm4che-Bibliothek, sodass der Parser externe Entities nicht mehr auflöst. Wie bei der XSLT-Härtung im selben Release sitzt die Änderung in der Bibliothek und nicht an den Aufrufstellen und greift damit für alle Nutzer des Parsers.
dcm4chee-arc-light ist das DICOM-Archiv und der Image Manager des dcm4che-Projekts und wird von Kliniken, Forschungsgruppen und Herstellern als offene Infrastruktur für Speicherung und Austausch medizinischer Bilddaten eingesetzt. Wir schätzen die langjährige Arbeit des Projekts an dieser Infrastruktur und die Sorgfalt, mit der die Maintainer diesen Bericht behandelt haben. Wir haben den Fund im Juni 2026 vertraulich an J4Care gemeldet; das Projekt hat konstruktiv reagiert und einen Fix veröffentlicht.
Auswirkung
- Eine textförmige Datei, die das Dienstkonto des Archivs lesen kann, lässt sich von einem Aufrufer abholen, der sich nie authentifiziert hat. Auf einer Standardinstallation gehören dazu Konfigurationsdateien, die Zugangsdaten für die Backend-Dienste des Archivs im Klartext enthalten. Derselbe Mechanismus erreicht Hosts im internen Netz, die der Aufrufer nicht direkt adressieren kann, wobei das Archiv als Ursprung der Anfrage auftritt. Binärdateien sind auf diesem Weg nicht zu gewinnen, weil der Inhalt das XML-Parsing überstehen muss.
- Die Bewertung bezieht sich auf die Bereitstellung, die die Projektdokumentation zuerst vorstellt und in der die DICOMweb-Endpunkte ohne Authentifizierung antworten. Wird stattdessen der abgesicherte Build betrieben, verlangen diese Endpunkte die Basisrolle, die das mitgelieferte Konto mit geringen Rechten ohnehin besitzt. Der Fund bleibt dort bei entsprechend niedrigerer Bewertung für jeden authentifizierten Nutzer erreichbar.
Abhilfe
Auf dcm4chee-arc-light 5.35.0 oder neuer aktualisieren, wo der gemeinsam genutzte Parser externe Entities nicht mehr auflöst. Bis dahin lässt sich die Angriffsfläche verringern, indem die DICOMweb-Endpunkte auf vertrauenswürdige Netze beschränkt werden. Zugangsdaten, die auf einem exponierten Archiv in der Konfiguration liegen, sollten als offengelegt behandelt und gewechselt werden.
Checkliste für Betreiber
Aktualisieren, und dabei die Bibliotheksversion prüfen, nicht die Archivversion.
Der Fix sitzt in der gemeinsam genutzten Parser-Factory der dcm4che-Bibliothek, nicht an den Aufrufstellen des Archivs. Wer das Archiv selbst baut oder die Bibliothek unabhängig pinnt, sollte prüfen, ob das dcm4che-Core-Artefakt tatsächlich mitgezogen ist und nicht nur das Archiv-Release.
Zugangsdaten aus der Archivkonfiguration wechseln.
Auf einer Standardinstallation umfasst der lesbare Bestand die Konfiguration mit Datenbank-, Storage- und LDAP-Zugangsdaten im Klartext. Waren die DICOMweb-Endpunkte auf einer betroffenen Version aus einem nicht vertrauenswürdigen Netz erreichbar, sind diese als offengelegt zu behandeln und zu wechseln.
Egress-Filterung nicht als die Maßnahme betrachten.
Die Netzwerkvariante dieses Funds ist ein nützliches Signal, aber nicht das Hauptrisiko. Der Dateilesezugriff kommt im selben Kanal über die Abrufschnittstelle des Archivs zurück, braucht also gar keine ausgehende Verbindung, und das Sperren von Egress ändert daran nichts.
Prüfen, was sonst den gemeinsamen Parser nutzt.
Die freizügige Factory lag in der dcm4che-Bibliothek, die Exposition war also nicht auf den DICOMweb-Pfad beschränkt. Wer weitere Software auf derselben Bibliothek betreibt, sollte prüfen, ob auch dort die gehärtete Version angekommen ist.
Bewertung im Detail
Referenzen
- GHSA-9g23-9gp3-gcq8 (dcm4che)
- dcm4chee-arc-light Issue 4988 (Hersteller-Fix)
- dcm4che Issue 1595 (Härtung der Bibliothek)
- dcm4chee-arc-light 5.35.0 Release
- dcm4chee-arc-light Repository
- Verwandt: XSLT-Attribute-Coercion in dcm4chee-arc-light
- Verwandt: Storage-Descriptor File Write in dcm4chee-arc-light
- Verwandt: Vendor-Data-Extraktion in dcm4chee-arc-light
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.
