Alle Sicherheitshinweise

dcm4chee-arc-light

Remote Code Execution über XSLT-Attribute-Coercion

Das Archiv wendet Attribute-Coercion-Regeln an, die DICOM-Objekte beim Speichern, Abfragen oder Abrufen transformieren, und eine solche Regel darf ein XSLT-Stylesheet über eine URI benennen. Das Stylesheet wird mit einer XML-Transformer-Factory in ihrer freizügigen Voreinstellung kompiliert und darf deshalb Java-Erweiterungsfunktionen aufrufen. Wer die Archivkonfiguration schreiben kann, hinterlegt eine solche Regel und lässt beliebige Betriebssystembefehle im Dienstkonto des Archivs ausführen, sobald die Transformation das nächste Mal auf regulärem DICOM-Verkehr auslöst. Ein einzelner Speicher- oder Abfragevorgang genügt dafür.

Verfasst vonVolker Schönefeld, Simon WeberErstveröffentlichung 2026-08-18Vollständige Offenlegung 2026-08-31
SchweregradKritischCVSS 9.8CVSS-3.1-VektorAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HCWECWE-94 (Improper Control of Generation of Code ('Code Injection'))Produktdcm4chee-arc-lightBetroffene VersionenAlle 5.x-Releases bis einschließlich 5.34.3.Behoben in5.35.0CVEAusstehendGHSAGHSA-5j3q-rhfh-xvx8

Beschreibung

Eine Attribute Coercion ist eine in der Konfiguration hinterlegte Regel, die DICOM-Attribute umschreibt, während Objekte das Archiv durchlaufen. Eine Regel darf ihre Transformation als URI mit dem Schema xslt: angeben; der schemaspezifische Teil wird dann als Ort eines Stylesheets behandelt. Der Coercion-Processor reicht diesen Ort unverändert an den Template-Cache weiter:

XSLTCoercionProcessor.java:75-77

String xsltStylesheetURI = coercion.getSchemeSpecificPart();
Templates tpls = TemplatesCache.getDefault().get(StringUtils.replaceSystemProperties(xsltStylesheetURI));
Attributes newAttrs = SAXTransformer.transform(attrs, tpls, false,

View source →

Der Cache kompiliert, worauf die URI zeigt. Es gibt weder eine Positivliste zulässiger Schemata noch eine Beschränkung auf ein lokales Stylesheet-Verzeichnis, sodass ein entfernter Ort genauso geladen und kompiliert wird wie ein lokaler:

TemplatesCache.java:75-80

public Templates get(String uri) throws TransformerConfigurationException {
    Templates tpl = map.get(uri);
    if (tpl == null)
        map.put(uri, tpl = SAXTransformer.newTemplates(new StreamSource(uri)));
    return tpl;
}

View source →

Die Kompilierung läuft über eine einzelne, gemeinsam genutzte Factory in der dcm4che-Bibliothek, die in ihrer Voreinstellung angelegt und nie gehärtet wurde:

SAXTransformer.java:63-64

private static SAXTransformerFactory factory =
        (SAXTransformerFactory) TransformerFactory.newInstance();

View source →

FEATURE_SECURE_PROCESSING ist nicht gesetzt, und weder ACCESS_EXTERNAL_DTD noch ACCESS_EXTERNAL_STYLESHEET sind eingeschränkt. Auf der ausgelieferten Laufzeitumgebung ist der Transformer die XSLTC-Implementierung des JDK, in der die Eigenschaft jdk.xml.enableExtensionFunctions bestimmt, ob ein Stylesheet nach Java hineinrufen darf. Diese Eigenschaft steht in der mitgelieferten Java-Version standardmäßig auf true und wurde erst in einer späteren Java-Version auf false umgestellt. Auf einer Standardinstallation erreicht ein Stylesheet damit Java-Methoden und über diese das Betriebssystem. Die Funktion document() bildet auf demselben Pfad die Untergrenze, auch ohne Erweiterungsfunktionen: Lesen lokaler Dateien und Anfragen an Hosts, die das Archiv erreicht, der Aufrufer aber nicht.

Die Auslösefläche ist breiter als die Konfigurationsschnittstelle, über die die Regel hinterlegt wird. Eine Coercion löst auf regulärem Verkehr aus und wird deshalb nicht nur von einem DICOMweb-Speichervorgang erreicht, sondern auch von einer reinen Leseabfrage sowie von C-FIND oder C-STORE am DICOM-Port. Ein Peer, der ausschließlich DICOM spricht und keinerlei Zugang zur HTTP-Schnittstelle hat, genügt, um eine hinterlegte Regel auszuführen.

Der Fix aktiviert JAXP Secure Processing standardmäßig auf der gemeinsam genutzten Transformer-Factory der dcm4che-Bibliothek, wodurch Java-Erweiterungsfunktionen deaktiviert werden, und schränkt die Protokolle ein, über die ein externes Stylesheet geladen werden darf. Da die Factory gemeinsam genutzt wird, greift die Änderung für alle Nutzer der Bibliothek und nicht nur für den Coercion-Pfad.

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

  • Codeausführung im Archivprozess bringt den Zugriff mit sich, den das Archiv selbst auf den von ihm verwalteten Bildbestand hat. Der Prozess verwahrt die gespeicherten DICOM-Objekte und die Datenbank, die sie indexiert. Studien und die daran hängenden Patientenkennungen lassen sich daher lesen, verändern oder löschen, und die Zugangsdaten, die das Archiv für seine eigenen Backend-Dienste hält, sind in diesem Kontext lesbar.
  • Die Bewertung bezieht sich auf die Bereitstellung, die die Projektdokumentation zuerst vorstellt und in der die Konfigurationsschnittstelle ohne Authentifizierung antwortet. Wird stattdessen der abgesicherte Build betrieben, verlangt die Konfigurationsschnittstelle lediglich die Basisrolle, die das mitgelieferte Konto mit geringen Rechten ohnehin besitzt. Die Kette bleibt dort für jeden authentifizierten Nutzer erreichbar und ist nicht geschlossen.

Abhilfe

Auf dcm4chee-arc-light 5.35.0 oder neuer aktualisieren, wo JAXP Secure Processing auf dem XSLT-Pfad aktiv ist. Bis dahin lässt sich die Angriffsfläche verringern, indem der Applikationsserver mit der JVM-Eigenschaft jdk.xml.enableExtensionFunctions auf false gestartet wird, was den Schritt zur Befehlsausführung unterbindet, ohne Attribute Coercion abzuschalten, und indem Konfigurations- und Steuerungsschnittstellen, der DICOM-Port und das LDAP-Konfigurationsbackend auf vertrauenswürdige Netze beschränkt werden.

Checkliste für Betreiber

  • Aktualisieren, oder Java-Erweiterungsfunktionen sofort abschalten.

    5.35.0 härtet die gemeinsam genutzte Transformer-Factory. Ist ein sofortiges Update nicht möglich, den Applikationsserver mit jdk.xml.enableExtensionFunctions auf false starten. Das entfernt den Schritt vom Stylesheet zum Betriebssystembefehl, lässt Attribute Coercion aber funktionsfähig, und es ist eine einzelne JVM-Eigenschaft statt einer Konfigurationsmigration.

  • Die aktuell konfigurierten Attribute Coercions prüfen.

    Die Coercion-Regeln des Archivgeräts auflisten und jede prüfen, die eine xslt:-URI benennt. Ein Stylesheet-Ort, der entfernt liegt oder außerhalb des Verzeichnisses, aus dem die Installation Stylesheets ausliefern soll, ist als verdächtig zu behandeln. Coercions sind Konfiguration, überdauern also Neustarts und ein Update.

  • Sich nicht darauf verlassen, nur die HTTP-Schnittstelle zu sperren.

    Ist eine Regel erst hinterlegt, löst sie auf Leseabfragen und auf rohem C-FIND oder C-STORE am DICOM-Port aus. Die DICOMweb-Schnittstelle einzuschränken verhindert nicht, dass eine bereits hinterlegte Regel läuft; wirksam ist nur, den Konfigurationsschreibzugriff von vornherein zu unterbinden.

  • Konfigurations- und Steuerungsschnittstellen einschränken.

    Das Archiv bietet keine Möglichkeit, seine Geräte- und Steuerungsressourcen getrennt von gewöhnlichen Nutzern auf Administratoren zu beschränken. Die Grenze muss deshalb außerhalb der Anwendung gezogen werden, an einem Reverse Proxy oder im Netz. Das LDAP-Konfigurationsbackend braucht dieselbe Behandlung, da ein Schreibzugriff dort denselben Code-Pfad erreicht.

  • Ein exponiertes Archiv als offengelegt behandeln.

    War die Konfigurationsschnittstelle aus einem nicht vertrauenswürdigen Netz erreichbar, ist davon auszugehen, dass die in der Archivkonfiguration hinterlegten Zugangsdaten für Datenbank, Storage-Backends und LDAP-Backend bekannt sind. Diese sollten gewechselt werden.

Bewertung im Detail

AV:NDie Konfigurationsschnittstelle, über die die Coercion-Regel hinterlegt wird, ist eine HTTP-Ressource des Archivs, und die Regel löst anschließend auf DICOM-Verkehr aus dem Netz aus.AC:LKeine zeitlichen oder umgebungsabhängigen Voraussetzungen. Die freizügige Transformer-Factory und die Voreinstellung der Erweiterungsfunktionen gehören beide zur Standardkonfiguration.PR:NBewertet gegen die Bereitstellung, die das Projekt zuerst dokumentiert und in der die Konfigurationsschnittstelle ohne Authentifizierung antwortet. Auf dem abgesicherten Build wird daraus PR:L und damit 8.8.UI:NDie Regel löst auf Verkehr aus, den das Archiv ohnehin empfängt; eine Handlung des Betreibers ist nicht nötig.S:UDie Auswirkung bleibt auf das Dienstkonto des Archivs und dessen Reichweite begrenzt.C:HCodeausführung legt gespeicherte Bilddaten, die Index-Datenbank und die Zugangsdaten offen, die das Archiv für seine Backend-Dienste hält.I:HCodeausführung erlaubt das Verändern gespeicherter Studien und der daran hängenden Kennungen.A:HCodeausführung im Dienstkonto kann das Archiv anhalten oder seinen Bestand zerstören.

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.