Bilddateien gelten gemeinhin als sichere Dateien und werden oft ohne Bewusstsein für potenzielle Sicherheitsprobleme behandelt. Diese Bilddateien, insbesondere SVG-Dateien, sind häufige Angriffsvektoren, um gefährliche Angriffe wie Cross-Site Scripting (XSS) oder XML External Entity (XXE) Injection zu starten. Im Gegensatz zu XSS-Angriffen wirken sich XXE-Injection-Angriffe nicht auf die Client-Seite aus, können aber die Server-Seite erheblich beeinträchtigen, was zu verschiedenen schwerwiegenden Auswirkungen führen kann. In diesem Blog-Beitrag werden wir die Art von XXE-Angriffen speziell über den Angriffsvektor Scalable Vector Graphics (SVG) untersuchen, ein reales Beispiel diskutieren und Strategien zur Abschwächung mit den Produkten von OPSWAT vorstellen.
Hintergrundinformationen
Bevor wir uns mit der Schwachstelle befassen, werden wir zunächst das XML- und SVG-Dateiformat sowie die Ursache für die XXE-Injection-Technik untersuchen.
XML-Dateiformat
XML (eXtensible Markup Language) ist ein plattformunabhängiges Dateiformat zum Speichern und Austauschen strukturierter Daten. XML unterstützt eine hierarchische Struktur und ist daher ideal für die Darstellung komplexer Datenbeziehungen. Daten im XML-Format sind wie bei HTML in Tags, Attributen und Inhalten organisiert. XML ist jedoch in hohem Maße anpassbar und erweiterbar, so dass die Benutzer ihre Tags und Attribute entsprechend ihren Anforderungen definieren können. Die folgende Abbildung zeigt die Daten der Abteilung IT im XML-Format.
XML-Entitäten
In XML sind Entitäten Platzhalter für Daten, mit denen Sie Text oder ganze Dokumente in das aktuelle Dokument einbetten können. Syntaktisch wird eine Entität in XML von einem kaufmännischen Und-Zeichen (&) und einem Semikolon (;) umschlossen. Im folgenden Beispiel sind zwei Entitäten in der Document Type Definition definiert und beziehen sich auf den Inhalt der XML-Datei. Der Unterschied zwischen den beiden Entitäten besteht darin, dass die interne Entität innerhalb des aktuellen Dokuments definiert ist und referenziert wird, während der Inhalt der externen Entität aus einem externen Dokument stammt. Nach dem Parsen und Auflösen der Entitäten werden die Entitäten durch die entsprechenden Daten ersetzt.
SVG-Dateiformat
SVG (Scalable Vector Graphics) ist ein vielseitiges Dateiformat, das in der Webentwicklung, im Grafikdesign und in der Datenvisualisierung weit verbreitet ist. Im Gegensatz zu herkömmlichen Bildformaten wie JPEG oder PNG verwendet SVG das XML-Format, um zweidimensionale Vektorgrafiken zu beschreiben. SVG-Bilder bestehen aus geometrischen Formen wie Linien, Kurven und Polygonen, die durch mathematische Gleichungen und nicht durch einzelne Pixel definiert sind. Daher können SVG-Grafiken ohne Qualitätsverlust unbegrenzt skaliert werden, was sie ideal für responsives Webdesign und hochauflösende Displays macht. Aufgrund der XML-Natur des SVG-Formats bietet es auch potenzielle Angriffsvektoren für XML-bezogene Angriffe.
XXE Injektionstechnik und Auswirkungen
Die XXE-Injectionstechnik missbraucht den Mechanismus zur Auflösung externer Entitäten. Wenn der Parser auf eine externe Entität trifft, würde er den entsprechenden Inhalt auf der Grundlage des Typs der Ressourcendatei abrufen.
Wenn die Ressourcendatei lokal ist, ruft der Parser den Inhalt der Datei ab und ersetzt die Entität durch die entsprechenden Daten. Dies würde es einem Angreifer ermöglichen, sensible Daten wie die Serverkonfiguration, Anmeldeinformationen usw. anzuzeigen. Um die Schwachstelle erfolgreich auszunutzen, deklariert der Angreifer eine externe Entität, die auf den Inhalt sensibler Dateien verweist, z. B. /etc./password.
Handelt es sich jedoch um eine entfernte Ressource oder einen internen Dienst, versucht der Parser, die Daten über die definierte URL abzurufen. Dies könnte ausgenutzt werden, um eine serverseitige Anforderungsfälschung (SSRF) durchzuführen. In diesem Fall verweist der Angreifer nicht auf eine lokale Datei, sondern ändert die Nutzdaten in die URL des anfälligen Dienstes, um im Namen des Servers anzufragen.
XXE-Angriff durch falsche Handhabung von SVG-Dateien: Eine Fallstudie
Wir werden eine XXE für einen realen Fall untersuchen, die SVGLIB-Bibliothek bis zur Version 0.9.3. Die Schwachstelle wurde im Jahr 2020 entdeckt und als CVE-2020-10799 eingestuft. Wir werden zunächst den Ablauf der Bibliothek untersuchen, den verwundbaren Codeschnipsel analysieren und schließlich die Ausnutzung über einen SVG-zu-PNG-Konvertierungsdienst nachweisen. Das Ziel sind selbst implementierte Webanwendungen, die anfällige SVGLIB-Versionen für die Konvertierung verwenden.
svglib-Paket
svglib ist eine reine Python-Bibliothek zur Konvertierung des SVG-Formats in andere Formate wie PNG, JPG, PDF usw. unter Verwendung des Report Lab Open-Source Toolkits. Da SVG-Dateien das XML-Format verwenden, ist das Parsen und Verarbeiten von XML auch ein wichtiger Teil des Hauptablaufs der Bibliothek. Die 3 Hauptschritte in der Bibliothek sind wie folgt:
Ausbeutung
Die Schwachstelle liegt im Prozess des Parsens von SVG-Dateien, der, wenn er falsch konfiguriert ist, sensible Daten auf dem Server preisgibt und potenziell SSRF-Schwachstellen verursacht. Eine weitere Untersuchung des Quellcodes des svglib-Pakets ergab, dass die XXE-Schwachstelle durch die Verwendung der Standardkonfiguration für das Parsen und die Behandlung des XML-Formats beim Laden der SVG-Datei verursacht wird. Das Paket verwendet das lxml-Paket, in dem der Standardwert für resolve_ entities-Attribute für die XMLParser-Klasse True ist.
Sanierung
Die Ursache des Problems ist das unsichere XML-Parsing, das in der svglib-Bibliothek und einem Teil der lxml-Abhängigkeit falsch implementiert ist. Infolgedessen kann die Verwendung einer anfälligen Version dieser Bibliothek zur Offenlegung vertraulicher Informationen, zur serverseitigen Fälschung von Anfragen oder sogar zur potenziellen Remotecodeausführung führen, je nach der eingesetzten Umgebung und der Funktionalität der Anwendung. Schwachstellen, die durch Bibliotheken von Drittanbietern verursacht werden, stellen ein ernstes Problem für die Sicherheit großer Anwendungen dar, da ihre Abhängigkeiten komplex und nicht transparent sein können.
MetaDefender Software Supply Chain
OPSWAT MetaDefender Software Supply Chain bietet erweiterte Transparenz und eine robuste Verteidigung gegen Risiken in der Lieferkette mit einer Kombination aus mehreren Technologien. OPSWAT Software Bill of Materials (SBOM) hilft dabei, Einblick in Open-Source-Softwarepakete von Drittanbietern zu erhalten und Softwareabhängigkeiten, Schwachstellen oder andere potenzielle Risiken zu identifizieren, die unter jeder Schicht eines Container-Images existieren. Durch die Integration von mehr als 30 Antiviren-Engines erreicht die Malware-Erkennungsrate der Multiscanning mehr als 99,99 %. Darüber hinaus identifiziert die Proactive DLP (Data Loss Prevention) Anmeldeinformationen wie Passwörter, Geheimnisse, Token, API oder andere sensible Informationen, die im Quellcode hinterlassen wurden. Mit unseren Zero-Trust-Technologien zur Erkennung und Verhinderung von Bedrohungen ist Ihr Softwareentwicklungszyklus (SDLC) vor Malware und Schwachstellen geschützt, wodurch die Anwendungssicherheit und die Einhaltung von Vorschriften gestärkt werden.
MDSSC erkennt die in svglib gefundene CVE. Es kennzeichnet auch den CVE-Schweregrad im SBOM-Bericht und identifiziert die verwundbare Softwareversion.
MetaDefender Core - Deep CDR
Ein weiterer Grund, der den Angriff möglich macht, ist, dass die Anwendung eine SVG-Datei verarbeitet, die mit einer bösartigen Nutzlast versehen ist. Wenn die Bilddatei vor der Einspeisung in den Konvertierungsdienst bereinigt wird, wird die Nutzlast eliminiert und der Angriff somit verhindert. Die Deep Content Disarm and Reconstruction (CDR) Technologie in MetaDefender Core schützt vor bekannten und unbekannten Dateibedrohungen, indem sie Dateien bereinigt und rekonstruiert. Mit Unterstützung für über 160 gängige Dateitypen und Hunderten von Optionen zur Dateirekonstruktion neutralisiert OPSWAT's Deep CDR alle potenziellen eingebetteten Bedrohungen und stellt sicher, dass die bereinigte Datei die volle Nutzbarkeit mit sicherem Inhalt beibehält.

Luan Pham nahm am OPSWAT Critical Infrastructure Cybersecurity Graduate Fellowship Program teil und ist derzeit Associate Penetration Tester bei OPSWAT. Seine Leidenschaft ist es, die Produkte von OPSWAT vor potenziellen Bedrohungen zu schützen und sein Wissen zu teilen.