Alle Sicherheitshinweise

DCMTK storescp

OS Command Injection durch Platzhalter-Substitution

Wenn storescp mit --exec-on-reception oder --exec-on-eostudy konfiguriert ist, werden vom Angreifer kontrollierte DICOM-Metadaten in Shell-Befehle eingesetzt. Die vorhandene Bereinigung deckt Pfadtrennzeichen ab, aber keine Shell-Metazeichen, was zu Command Injection führt.

Verfasst vonVolker Schönefeld, Simon Weber2026-04-06
SchweregradKritischCVSS 9.8CWECWE-78 (OS Command Injection)ProduktDCMTK storescpBetroffene VersionenAlle Versionen bis einschließlich 3.7.0Behoben inNoch kein stabiles Release. edbb085e aus DCMTK master anwenden.CVECVE-2026-5663

Beschreibung

Die Flags --exec-on-reception und --exec-on-eostudy konfigurieren storescp zur Ausführung eines Shell-Befehls beim Empfang eines DICOM-Objekts. Platzhalter-Token im Befehlsstring werden mit Werten aus der eingehenden DICOM-Assoziation ersetzt und an /bin/sh -c übergeben.

Drei Platzhalter-Token akzeptieren vom Angreifer kontrollierte Eingaben: #f (Dateiname, abgeleitet von der SOP Instance UID), #p (Pfad, abgeleitet von der Study Instance UID bei Verwendung von --sort-on-study-uid) und #r (Reverse-DNS-Hostname des Aufrufers).

Die Platzhalter #f und #p werden durch sanitizeFilename() verarbeitet, die Pfadtrennzeichen ersetzt:

ofstd/libsrc/ofstd.cc:3405

void OFStandard::sanitizeFilename(OFString& fname)
{
const size_t len = fname.length();
for (size_t i = 0; i < len; ++i)
{
if (fname[i] == PATH_SEPARATOR) fname[i] = '_';
}
}

View source →

Shell-Metazeichen wie Semikolons, Pipes, Backticks und Dollarzeichen werden von dieser Bereinigung nicht erfasst. Der zusammengesetzte Befehl wird anschließend an die Shell übergeben:

dcmnet/apps/storescp.cc:2582

execl("/bin/sh", "/bin/sh", "-c", cmd.c_str(),
OFreinterpret_cast(char *, 0));

View source →

Der Platzhalter #r (Reverse-DNS-Hostname) wird vor der Substitution nicht bereinigt. Ein Angreifer, der den PTR-Record seiner IP-Adresse kontrolliert, kann über den aufgelösten Hostnamen Shell-Metazeichen einschleusen.

Im Februar 2024 erhielten die Platzhalter #a und #c (AE-Title-Token) eine Allowlist-basierte Bereinigung über sanitizeAETitle() (Issue #1109). Die Platzhalter #f, #p und #r waren in dieser Änderung nicht enthalten.

DICOM-UID-Felder haben eine maximale Länge von 64 Zeichen und Leerzeichen werden durch den Parser entfernt. Diese Einschränkungen begrenzen die Payload-Länge, können aber durch Shell-Parameterexpansion umgangen werden.

Hinweis: VulDB führt diese Schwachstelle derzeit mit CVSS 7.3 (C:L/I:L/A:L). Wir sind der Auffassung, dass die Impact-Metriken angesichts der bestätigten Codeausführung C:H/I:H/A:H betragen sollten, und haben VulDB bezüglich der Bewertung kontaktiert.

Auswirkung

  • Nicht authentifizierte Remote Code Execution als Prozessbesitzer von storescp über eine einzelne DICOM-C-STORE-Anfrage.
  • In PACS-Umgebungen hat storescp typischerweise Lese- und Schreibzugriff auf geschützte Gesundheitsdaten (PHI).
  • DCMTK ist in allen großen Linux-Distributionen enthalten. Das Flag --exec-on-reception ist das dokumentierte Integrationsmuster für PACS-Server, DICOM-Router und klinische Forschungsinfrastruktur.

Abhilfe

Wenden Sie edbb085e aus DCMTK master an, oder aktualisieren Sie auf das nächste stabile Release, sobald verfügbar. Als Abhilfe vermeiden Sie die Verwendung der Platzhalter #f, #p und #r in --exec-on-reception- oder --exec-on-eostudy-Befehlen. Das Flag --disable-host-lookup deaktiviert den #r-Vektor.

Referenzen

So können wir helfen

Wer wir sind

Die Sicherheitsforscher hinter diesem Advisory.

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

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.