Alle Sicherheitshinweise

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.

Verfasst vonVolker Schönefeld, Simon WeberErstveröffentlichung 2026-08-18Vollständige Offenlegung 2026-08-31
SchweregradHochCVSS 7.5CVSS-3.1-VektorAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:NCWECWE-611 (Improper Restriction of XML External Entity Reference)Produktdcm4chee-arc-lightBetroffene VersionenAlle 5.x-Releases bis einschließlich 5.34.3.Behoben in5.35.0CVEAusstehendGHSAGHSA-9g23-9gp3-gcq8

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;
}

View source →

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

AV:NDie DICOMweb-Endpunkte für Speicherung und Workitems, die den XML-Body annehmen, sind HTTP-Ressourcen des Archivs.AC:LKeine zeitlichen oder umgebungsabhängigen Voraussetzungen. Die Parser-Voreinstellungen, die das Auflösen von Entities erlauben, sind Standard.PR:NBewertet gegen die Bereitstellung, die das Projekt zuerst dokumentiert und in der die DICOMweb-Endpunkte ohne Authentifizierung antworten. Auf dem abgesicherten Build wird daraus PR:L und damit 6.5.UI:NSowohl den Speichervorgang als auch den Abruf, der den Inhalt zurückliest, setzt der Angreifer selbst ab.S:UDie Auswirkung bleibt auf das begrenzt, was das Dienstkonto des Archivs lesen kann, und auf die vom Archiv erreichbaren Hosts.C:HTextförmige Dateien, die das Dienstkonto lesen kann, kommen im selben Kanal zurück; auf einer Standardinstallation gehört dazu die Konfiguration mit den Zugangsdaten der Backend-Dienste.I:NDie Technik liest; sie verändert die Daten des Archivs nicht. Das gespeicherte Trägerobjekt stammt ohnehin vom Angreifer.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.