AI Hacking - Wie Hacker künstliche Intelligenz bei Cyberangriffen einsetzen

Jetzt lesen
Wir verwenden künstliche Intelligenz für Website-Übersetzungen, und obwohl wir uns um Genauigkeit bemühen, kann es sein, dass sie nicht immer 100%ig präzise sind. Wir danken Ihnen für Ihr Verständnis.

SVG-Enthüllung: XXE-Schwachstellen verstehen und Ihre Codebasis verteidigen

von Luan Pham, Angestellter Penetrationstester
Jetzt teilen

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-Codefragment zur Anzeige von Mitarbeiterdetails in einer IT Abteilungsstruktur

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. 

Code-Beispiel für ein XML-Dokument mit internen und externen Entitäten einschließlich einer Begrüßung
Vereinfachtes XML-Code-Beispiel zur Verdeutlichung der Struktur und Verwendung von Entitäten und Inhalten

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. 

Beispielbild, das eine grundlegende SVG-Dateistruktur mit Textinhalt zeigt

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: 

Prozessablaufdiagramm zur Veranschaulichung der Schritte vom Parsen einer SVG-Datei bis zu ihrer Konvertierung in ein anderes Format

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.  

Codeunterschied, der Änderungen in einer Python-Funktion zum Laden einer SVG-Datei mit Optionen für die Entity-Auflösung zeigt
Flussdiagramm eines XXE-Angriffsprozesses unter Verwendung von SVG-Dateien in einem Sicherheitskontext

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.  

OPSWAT MetaDefender Software Supply Chain Dashboard mit Repository-Scanergebnissen für Schwachstellen und Bedrohungen
OPSWAT MetaDefender Software Supply Chain Sicherheitsbericht für eine requirements.txt-Datei, in der keine Bedrohungen oder Geheimnisse entdeckt wurden

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. 

Editierbarer XML-Code im SVG-Format mit XXE-Schwachstelle, die im DOCTYPE-Element beschrieben ist
Die bösartige SVG-Datei
Saubere Version des XML-Codes im SVG-Format ohne XXE-Schwachstelle
Die SVG-Datei, nachdem sie mit MetaDefender bereinigt wurdeCore - Deep CDR 
Sicherheitsbericht mit SVG-Datei, die nach der Schwachstellenbewertung als zulässig und bereinigt markiert wurde
MetaDefender Core - Deep CDR bereinigtes Ergebnis

Autor Bio

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. 

Luan Pham
Associate Penetration Tester

Bleiben Sie auf dem Laufenden mit OPSWAT!

Melden Sie sich noch heute an, um die neuesten Unternehmensinformationen zu erhalten, Geschichten, Veranstaltungshinweise und mehr.