Orthanc DICOM Server
Speichererschöpfung durch gefälschte ZIP-Metadaten
Orthanc erkennt ZIP-Archive in POST /instances-Uploads anhand ihrer Magic-Bytes und entpackt sie mit ZipReader::ReadNextFile. Der Reader vertraut dem uncompressed_size-Feld aus den ZIP-Central-Directory-Metadaten und ruft content.resize() für diese Größe ohne Obergrenze auf. Eine kleine ZIP-Datei mit gefälschter ~4-GB-Größe löst pro Anfrage eine riesige Allokation aus.
Beschreibung
Orthanc nimmt ZIP-Archive über POST /instances entgegen und entpackt sie eintragsweise, wobei jede enthaltene Datei als DICOM-Kandidat behandelt wird. Der Upload-Handler erkennt ZIP-Archive an ihren Magic-Bytes (PK\x03\x04) und konstruiert einen ZipReader:
OrthancServer/Sources/OrthancRestApi/OrthancRestApi.cpp:172
if (ZipReader::IsZipMemoryBuffer(call.GetBodyData(), call.GetBodySize())){ std::unique_ptr<ZipReader> reader(ZipReader::CreateFromMemory(...)); std::string filename, content; while (reader->ReadNextFile(filename, content)) // löst resize aus { // ... verarbeitet die entpackte Datei als DICOM }}ReadNextFile() erfragt die Eintrags-Metadaten von minizip über unzGetCurrentFileInfo64 und resized den Ausgabepuffer anschließend auf den Wert, den die ZIP selbst als uncompressed_size deklariert — ohne jede Obergrenze:
OrthancFramework/Sources/Compression/ZipReader.cpp:294-322
unz_file_info64_s info;if (unzGetCurrentFileInfo64(pimpl_->unzip_, &info, ...) != 0){ throw OrthancException(ErrorCode_BadFileFormat);}
content.resize(info.uncompressed_size); // vertraut den ZIP-Metadaten, keine ObergrenzeEin Angreifer baut eine 126 Byte große ZIP-Datei mit einem 64 Byte großen Dummy-Eintrag und patcht das uncompressed_size-Feld in Local File Header und Central Directory auf 0xFFFFFFFE (~4 GB). Die minizip-Schicht liest den gepatchten Wert verbatim und gibt ihn über info.uncompressed_size weiter. content.resize() allokiert und null-initialisiert anschließend ~4 GB, bevor überhaupt eine Dekomprimierung beginnt.
Zwanzig parallele POST /instances-Requests mit jeweils einer 126 Byte großen gefälschten ZIP allokieren zusammen rund 80 GB. Der Linux-OOM-Killer beendet den Orthanc-Prozess mit Exit-Code 137. Der gesamte Angriffs-Payload umfasst 2.520 Bytes (20 × 126 Bytes); es werden keine gültigen DICOM-Daten benötigt, nur eine valide ZIP-Struktur mit gefälschten Größenmetadaten.
Authentifizierung ist erforderlich: Die Auth-Prüfung in HttpServer.cpp:1298 läuft vor der ZIP-Verarbeitung im POST /instances-Handler in OrthancRestApi.cpp:172. Diese Schwachstelle gehört zur selben Klasse von „Den-Metadaten-Vertrauen"-Bugs wie CVE-2026-5440 (unbegrenzte Content-Length) und CVE-2026-5438 (gzip-ISIZE-Bombe).
Auswirkung
- Denial-of-Service: Eine Welle von ~20 parallelen Uploads à 126 Byte gefälschter ZIPs beendet den Orthanc-Prozess über den Linux-OOM-Killer (Exit-Code 137).
- Der gesamte Angriffs-Payload umfasst 2.520 Bytes (20 × 126-Byte-ZIPs). Keine gültigen DICOM-Daten erforderlich, nur eine valide ZIP-Struktur mit gefälschten Größenmetadaten.
- Der Server muss nach jedem Absturz neu gestartet werden und ist sofort wieder gegen denselben Angriff anfällig.
Abhilfe
Aktualisieren Sie Orthanc auf Version 1.12.11 oder höher. Der Patch begrenzt das Resize gegen eine konfigurierbare maximale Eintragsgröße und weist Einträge oberhalb dieses Limits mit BadFileFormat ab. Als Defense-in-Depth konfigurieren Sie an Ihrem Reverse-Proxy eine harte Content-Length-Obergrenze passend zu Ihrer DICOM-Workload — typischerweise einige hundert MB — was zusätzlich die Content-Length-Bombe in CVE-2026-5440 und die gzip-Bombe in CVE-2026-5438 eindämmt.
Checkliste für Betreiber
Version prüfen.
curl -u <user>:<pass> http://<orthanc>:8042/system | jq .Version— der gepatchte Bereich beginnt bei 1.12.11.Request-Größe am Reverse-Proxy begrenzen.
Konfigurieren Sie eine
Content-Length-Obergrenze passend zu Ihrer DICOM-Workload (client_max_body_size 512m;in nginx). Die gefälschte ZIP löst die ~4-GB-Allokation unabhängig von der Upload-Größe aus, doch ein Pro-Request-Body-Limit reduziert die Angriffsfläche für die Familie der „Metadaten-Vertrauen"-Bomben (diese Schwachstelle plusCVE-2026-5440undCVE-2026-5438).POST /instances rate-limiten.
Der Angriff lebt von Bursts paralleler Uploads. Per-IP-Request-Rate- oder Concurrent-Connection-Limits am Proxy erhöhen die Angriffskosten spürbar.
Zugangsdaten überprüfen.
Jede authentisierte Person mit
POST /instances-Rechten kann die Schwachstelle auslösen. Prüfen SieRegisteredUsersinorthanc.jsonund ein externes Authentifizierungsbackend; widerrufen Sie ungenutzte oder überprivilegierte API-Tokens.Auf OOM-Restart-Zyklen achten.
Alarmieren Sie auf wiederholte SIGKILL-Exits in Ihrer Service-Überwachung (z. B.
journalctl -u orthanc | grep -E 'killed|OOM|exit code 137'). Ein wiederkehrender Zyklus deutet auf laufende Ausnutzung statt auf ein einmaliges Ressourcenereignis hin.
Bewertung im Detail
POST /instances erreichbar.AC:LEine einzelne gefälschte ZIP mit gepatchtem uncompressed_size-Feld; keine Timing- oder Umgebungsvorbedingungen.PR:NDer publizierte Vektor spiegelt Deployments wider, in denen Orthanc ohne HTTP-Authentifizierung exponiert ist, was Orthanc per Konfiguration erlaubt. Bei aktivem AuthenticationEnabled läuft die Auth-Prüfung vor der ZIP-Verarbeitung, sodass nur ein authentisierter Aufrufer die Allokation auslösen kann.UI:NKeine Interaktion durch eine zweite Person erforderlich.S:UDer OOM-Killer beendet den Orthanc-Prozess; betroffen ist der Prozess selbst.C:NKeine Informationen werden gelesen oder offengelegt.I:NEs werden keine Zustände modifiziert.A:HAnhaltende Beendigung des Orthanc-Prozesses; ein Neustart stellt den Dienst wieder her, lässt den Prozess aber sofort wieder angreifbar.Referenzen
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.
