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.

Aufdecken und Beseitigen einer Sicherheitslücke in der Dompdf-Bibliothek mit OPSWAT MetaDefender Core 

von OPSWAT
Jetzt teilen
Tai Tran und Hai Dang Bui, Studenten der Universität für Informationstechnologie, posieren für ein professionelles Porträt vor einem blauen Hintergrund
Studenten nahmen am OPSWAT Fellowship-Programm teil

Der rasante Aufstieg der Technologie hat zu einem hohen Bedarf an qualifizierten Entwicklern geführt. Open-Source-Software (OSS) ist zu einem unverzichtbaren Werkzeug für diese wachsende Zahl von Arbeitskräften geworden. Es gibt inzwischen Hunderttausende gut eingeführter OSS-Pakete in verschiedenen Programmiersprachen. Über 90 % der Entwickler setzen diese Open-Source-Komponenten in ihren eigenen Anwendungen ein, was die Effizienz und den Wert von OSS unterstreicht. Um seine Bedeutung weiter zu unterstreichen, wird erwartet, dass der weltweite Markt für Open-Source-Software bis 2030 ein Volumen von 80,7 Milliarden Dollar erreichen wird, was einer prognostizierten Wachstumsrate von 16,7 % pro Jahr entspricht. 

Software ist ein wesentlicher Bestandteil von Geschäftsabläufen auf der ganzen Welt und wird daher häufig von Bedrohungsakteuren ins Visier genommen. Im Jahr 2023 beliefen sich die Ausgaben für Anwendungssicherheit auf ca. 5,76 Mrd. US-Dollar, wobei für 2024 ein Wert von 6,67 Mrd. US-Dollar prognostiziert wird. Innerhalb von AppSec hat die Sicherheit der Software-Lieferkette in den letzten drei Jahren an Bedeutung gewonnen und stellt die am schnellsten wachsende Angriffskategorie dar, wobei große Sicherheitslücken und Exploits regelmäßig für Schlagzeilen sorgen. 

Unternehmen gehen oft davon aus, dass die meisten Risiken von öffentlich zugänglichen Webanwendungen ausgehen. Diese Sichtweise hat sich jedoch in den letzten Jahren geändert. Da jede Anwendung aus Dutzenden von kleinen Komponenten besteht, können Risiken heute von jedem Punkt der Codebasis ausgehen. Für Unternehmen ist es wichtiger denn je, sich mit bestehenden und neu auftretenden Sicherheitslücken im Lebenszyklus der Softwareentwicklung vertraut zu machen. In diesem Blogbeitrag werfen unsere Graduate Fellows einen genaueren Blick auf CVE-2023-23924, eine kritische Sicherheitslücke, die in der weit verbreiteten dompdf-Bibliothek entdeckt wurde - einem leistungsstarken PHP-Tool, das die dynamische Erzeugung von PDF-Dokumenten aus HTML und CSS ermöglicht. 

In einer umfassenden Analyse werden wir die technischen Feinheiten dieser Schwachstelle, die zugehörigen Technologien, die eine entscheidende Rolle spielen, und eine Simulation des Ausnutzungsprozesses untersuchen. Wir werden auch untersuchen, wie OPSWAT MetaDefender Core, insbesondere seine Software Bill of Materials (SBOM) Engine, kann genutzt werden, um diese Schwachstelle zu erkennen und zu entschärfen. So können Softwareentwickler und Sicherheitsteams potenziellen Bedrohungen einen Schritt voraus sein. 

Hintergrund zu CVE-2023-23924 

Eine Sicherheitslücke wurde in dompdf Version 2.0.1 entdeckt und Anfang 2023 veröffentlicht:

  • Die URI-Validierung von dompdf 2.0.1 kann beim SVG-Parsing umgangen werden, indem man <image> Tags mit Großbuchstaben. Dies erlaubt einem Angreifer, beliebige URLs mit beliebigen Protokollen aufzurufen, was in PHP-Versionen vor 8.0.0 zu einer beliebigen Objekt-Deserialisierung führt. Durch den PHAR-URL-Wrapper kann diese Verwundbarkeit, abhängig von den verfügbaren Klassen, eine beliebige Dateilöschung und sogar entfernte Codeausführung verursachen. 
  • Die NVD-Analysten wiesen CVE-2023-23924 eine CVSS-Punktzahl von 9.8 CRITICAL zu. 
Informatives Diagramm mit Metriken für CVSS Version 3.x einschließlich Schweregrad und Vektorstrings für Sicherheitslücken

Die Dompdf-Schwachstelle verstehen 

Um die Sicherheitslücke CVE-2023-23924 in dompdf vollständig zu verstehen, ist es wichtig, sich mit zwei eng verwandten Technologien vertraut zu machen: Skalierbare Vektorgrafiken (SVG) und PHAR-Dateien. 

SVG (Skalierbare Vektorgrafik) 

SVG (Scalable Vector Graphics, skalierbare Vektorgrafiken) ist ein vielseitiges Bildformat, das aufgrund seiner Fähigkeit, qualitativ hochwertige Grafiken im Web zu rendern und dabei leichtgewichtig und skalierbar zu bleiben, große Beliebtheit erlangt hat. Im Gegensatz zu Rasterbildern basieren SVGs auf XML-Markup und ermöglichen eine präzise Steuerung von Elementen wie Linien, Formen und Text. Einer der Hauptvorteile von SVGs ist, dass sie nahtlos skaliert werden können, ohne dass die Bildqualität darunter leidet, was sie ideal für responsives Webdesign und hochauflösende Displays macht.  

Codeschnipsel, der SVG mit mehreren Polygonen in verschiedenen Farben anzeigt und die Programmierung im XML-Format veranschaulicht
PHAR-Datei 

PHAR (PHP Archive) ist analog zum JAR-Dateikonzept, jedoch für PHP. Es ermöglicht eine einfache Bereitstellung durch Bündelung des gesamten PHP-Codes und der Ressourcendatei in einer einzigen Archivdatei.  

Eine PHAR-Datei besteht aus 4 Abschnitten:  

  • Stubs: enthält den Code für das Bootstrapping des Archivs. 
  • Manifest: enthält die Metadaten des Archivs. Die Metadaten werden in einem serialisierten Format gespeichert, das zum Auslösen eines deserialisierten PHP-Angriffs in einer bösartigen PHAR-Datei verwendet werden könnte. 
  • Dateiinhalt: enthält den Inhalt des Archivs, einschließlich PHP-Code und Ressourcendateien. 
  • Signatur (optional): enthält Daten zur Überprüfung der Integrität der Datei. 

Da die Metadaten in einem serialisierten Format gespeichert sind, könnte die Kombination aus dem PHAR-Wrapper und den Metadaten der PHAR-Datei möglicherweise einen Deserialisierungsangriff auslösen, wenn sie als Eingabe in PHP-Funktionen wie file_get_contents(), fopen(), file(), file_exists(), md5_file(), filemtime(), oder Dateigröße(). Diese Sicherheitslücke könnte es Angreifern ermöglichen, über eine PHAR-Datei entfernten Code auszuführen. 

Tabelle mit dem grundlegenden Dateiformat eines Phar-Archivmanifests, einschließlich Größe in Bytes und Beschreibungen der einzelnen Teile

Wie Dompdf eine PDF-Datei generiert

Flussdiagramm zur Veranschaulichung des Prozesses der Konvertierung einer HTML-Datei in das PDF-Format mit Hervorhebung der Zwischenschritte und Dateiformate

Bei der Analyse haben die OPSWAT Graduate Fellows festgestellt, dass der Konvertierungsprozess bei dompdf in drei Phasen abläuft. Um eine HTML-Datei in das PDF-Format zu konvertieren, zerlegt die dompdf-Bibliothek zunächst die Eingabedatei in einen DOM-Baum und speichert die Positionierungs- und Layout-Informationen der einzelnen Objekte. Anschließend wird das CSS-Styling analysiert und auf jedes Objekt angewendet. Zum Schluss werden die Objekte so umorganisiert, dass sie auf die Seite passen und in die endgültige PDF-Datei gerendert werden.  

Sicherheitsschwachstelle in Dompdf

Um die Sicherheit zu erhöhen, implementiert dompdf eine Validierung, um die Sicherheit der URI-Eingaben zu gewährleisten, bevor mit dem nächsten Schritt fortgefahren wird. Dieser Validierungsprozess zeigt sich bei der Verarbeitung von SVG-Dateien innerhalb des Wertes von xlink:href Attribut. 

PHP-Codebeispiel für den Umgang mit SVG-Dateien, das Funktionen zum Parsen und Validieren von SVG-Inhalten zeigt

Enthält die SVG-Eingabedatei das <image> Tag unter dem <svg> Tag ist eine Bedingung implementiert, die nur bestimmte Protokolle zulässt, wie z. B. http://, https:// und file://für die xlink:href Feld.

Webschnittstelle für einen PDF-Konverterdienst, über die Benutzer HTML- oder SVG-Dateien zur Konvertierung in PDF hochladen können

Die resolve_url() Funktion validiert den URI, bevor sie ihn mit der drawImage() Funktion. Wenn das Schema im URI nicht zu den zulässigen Protokollen gehört, wird die resolve_url() Funktion gibt eine Ausnahme an die Anwendung zurück. 

PHP-Skript, das den Umgang mit Daten-URIs zeigt und die Fehlerbehandlung und Protokollüberprüfung in Webanwendungen veranschaulicht

Wenn der URI die Validierung besteht, wird er an die drawImage() Funktion, die die file_get_contents() Funktion zur Behandlung des URI-Werts innerhalb der xlink:href Attribut. Die Sicherheitslücke entsteht an diesem Punkt: ein PHAR-Deserialisierungsangriff könnte ausgelöst werden, wenn ein Angreifer die Validierung umgehen und einen PHAR-Wrapper in den URI einfügen könnte. 

Nach der Analyse wird festgestellt, dass die Validierung nur bei Tags mit dem exakten Namensbild erzwungen wird. 

PHP-Beispiel für Bildmanipulation, mit Funktionen zum Zeichnen von Bildern aus Daten-URLs und zum Umgang mit Dateiinhalten

Daher kann sie leicht umgangen werden, indem ein oder mehrere Zeichen im Namen des Tags großgeschrieben werden, wie z. B. Image. Infolgedessen könnte eine speziell gestaltete SVG-Datei, die Image anstelle von image verwendet, diese Validierung umgehen. 

In einem weiteren Schritt wird die drawImage() aufgerufen und die URI der SVG-Datei an die Funktion file_get_contents() Funktion. Daher ermöglicht die Kombination aus der Umgehung der Validierung und einem Deserialisierungsangriff auf eine PHAR-Datei einem Angreifer die Ausführung von Remote-Code. Diese Schwachstelle öffnet einem böswilligen Angreifer die Tür, um den Anwendungsserver über eine SVG-Datei zu kompromittieren, wenn diese von einer anfälligen Version von dompdf verarbeitet wird. 

Dompdf-Ausnutzungssimulation

Anfällige Anwendung

Um diese Ausnutzung als reales Szenario zu simulieren, haben OPSWAT Graduate Fellows eine Webanwendung entwickelt, die die Konvertierung von HTML in PDF mit der dompdf-Bibliothek Version 2.0.1 ermöglicht. Mit dieser Anwendung können Benutzer Dateitypen wie HTML, XML oder SVG hochladen und dann in PDF-Dateien umwandeln. 

Screenshot eines webbasierten PDF-Konvertierungsprogramms mit einem humanoiden Avatar, der die Funktionen zum Hochladen und Konvertieren von Dateien hervorhebt

Ein Angreifer geht folgendermaßen vor, um diese Schwachstelle in einer Anwendung auszunutzen, die eine verwundbare dompdf-Version (Version 2.0.1) verwendet: 

PHP-Codefragment, das die Verwendung der Dompdf-Bibliothek für die Umwandlung von HTML in eine PDF-Datei im Querformat zeigt
Composer.json-Dateiausschnitt, der die Anforderungen an die Dompdf-Bibliothek Version 2.0.1 für ein PHP-Projekt angibt
Verwertungsfluss
Ein grafisches Diagramm, das den vierstufigen Prozess zur Ausnutzung von SVG-Dateien mit Hilfe der Dompdf-Schwachstelle zur Ausführung einer Reverse Shell erläutert

Zunächst erzeugt ein Angreifer ein bösartiges Objekt, das beim Aufruf des Destruktors eine Reverse Shell erstellt. 

PHP-Codebeispiel zur Veranschaulichung einer Schwachstelle bei der Deserialisierung von Objekten in PHP, die zur Remotecodeausführung über eine Reverse Shell führt

Zweitens erstellt der Angreifer eine PHAR-Datei, die das bösartige Metadatenobjekt enthält. Wenn die PHAR-Datei von dem PHAR-Wrapper in der file_get_content() Funktion werden die Metadaten deserialisiert und das angegebene Objekt wird verarbeitet. Während dieses Deserialisierungsprozesses löst sie die Destruktoren aus und führt die Reverse Shell aus. 

PHP-Skript, das die Erstellung eines Phar-Archivs demonstriert, das serialisierte Objektdaten zur Ausführung eines Remote-Befehls enthält

Letztendlich bettet der Angreifer den URI-Link, der den PHAR-Wrapper enthält, in den Wert von xlink:href Attribut im Image-Tag, um die Validierung zu umgehen, bösartigen Code auszuführen und diese bösartige Datei in die Anwendung hochzuladen. 

SVG-Codefragment, das zeigt, wie ein PHP-Deserialisierungs-Exploit über eine Bildreferenz eingebettet werden kann

Während der Verarbeitung der hochgeladenen bösartigen SVG-Datei baut die Anwendung eine umgekehrte Verbindung zum Angreifer auf, wodurch dieser den Anwendungsserver kompromittieren kann. 

Web-Interface eines PDF-Konverters mit Optionen zum Hochladen und Konvertieren von HTML/SVG-Dateien in PDF, mit einem digitalen menschlichen Modell
Screenshot einer Metasploit-Konsole, der eine erfolgreiche Reverse-TCP-Verbindung und Details zur Netzwerkkonfiguration zeigt
Bildschirmfoto des Terminals, das die Netzwerkkonfiguration und die von einem Unix-System abgerufenen Anmeldedaten anzeigt

Absicherung von Open-Source-Komponenten mit OPSWAT MetaDefender Core 

Um die Sicherheitslücke CVE-2023-23924 in dompdf zu erkennen und zu entschärfen, nutzten unsere Graduate Fellows OPSWAT MetaDefender Core , ein mehrschichtiges Cybersecurity-Produkt, das fortschrittliche Malware-Präventions- und Erkennungstechnologien, einschließlich SBOM, bietet. 

OPSWAT SBOM sichert die Software-Lieferkette durch die Bereitstellung eines umfassenden Komponenteninventars für Quellcode und Container. Durch die Analyse der dompdf-Bibliothek und ihrer Abhängigkeiten kann OPSWAT SBOM das Vorhandensein der verwundbaren Version 2.0.1 schnell identifizieren und die Benutzer auf das potenzielle Risiko hinweisen. 

Darüber hinaus kann OPSWAT SBOM verwandte Technologien wie SVG- und PHAR-Dateien erkennen, die für das Verständnis und die Entschärfung der Sicherheitslücke CVE-2023-23924 wichtig sind. Diese ganzheitliche Sicht auf die Softwarekomponenten der Anwendung ermöglicht es den Sicherheitsteams, fundierte Entscheidungen zu treffen und geeignete Maßnahmen zur Behebung der erkannten Risiken zu ergreifen. 

Schnittstelle zur Sicherheitsanalyse, die eine aufgrund von Sicherheitslücken blockierte JavaScript-Datei mit detaillierten Bewertungsergebnissen anzeigt

Neben der Erkennung der verwundbaren dompdf-Version bietet OPSWAT SBOM auch wertvolle Einblicke in die betroffenen Komponenten, ihre Versionen und alle verfügbaren Updates oder Patches. Anhand dieser Informationen können Sicherheitsteams ihre Abhilfemaßnahmen priorisieren und sicherstellen, dass die Anwendung auf eine sichere Version von dompdf aktualisiert wird, um die Sicherheitslücke CVE-2023-23924 effektiv zu schließen. 

Detaillierte Ansicht der Schwachstellen in einer JavaScript-Objektnotation-Datei, die kritische und hochsichere Risiken mit CVE-Kennungen auflistet

Durch den Einsatz der SBOM-Engine in MetaDefender Core können Unternehmen ihre Software-Lieferkette proaktiv überwachen, potenzielle Schwachstellen in Open-Source-Komponenten identifizieren und rechtzeitig Strategien zur Schadensbegrenzung implementieren, um die allgemeine Sicherheit und Integrität ihrer Anwendungen zu gewährleisten. 

Abschließende Überlegungen 

Die Entdeckung von CVE-2023-23924 in der dompdf-Bibliothek unterstreicht die Notwendigkeit der Wachsamkeit in der dynamischen Landschaft der Anwendungssicherheit. Durch die Nutzung der in diesem Blog-Beitrag beschriebenen Erkenntnisse und Strategien können Sicherheitsteams ihre Anwendungen effektiv aufspüren, entschärfen und vor solchen Schwachstellen schützen und so die allgemeine Sicherheit und Integrität ihres Software-Ökosystems gewährleisten. 

Bleiben Sie auf dem Laufenden mit OPSWAT!

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