Kritische Schwachstelle in der Bibliothek libxml2: Bedrohung für C++-Projekte

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Kritische Schwachstelle in der C++-Bibliothek libxml2 entdeckt: Bedrohung für tausende Projekte



Die C++-Entwicklergemeinschaft wurde durch die Nachricht über die Entdeckung einer kritischen Schwachstelle in der weit verbreiteten Bibliothek libxml2 alarmiert. Diese Bibliothek, die der De-facto-Standard für das Parsing von XML-Dokumenten in C- und C++-Projekten ist, wird in den Betriebssystemen Linux, macOS, in Webbrowsern, Office-Paketen und unzähligen Anwendungsprogrammen verwendet. Die Schwachstelle mit der Kennung CVE-2024-XXXX (Nummer vergeben, Details werden erwartet) ermöglicht es einem Angreifer, beliebigen Code auf dem Zielsystem auszuführen.



Kern des Problems

Forscher des Teams Project Zero haben entdeckt, dass der Fehler im Mechanismus zur Verarbeitung rekursiver Entitäten (Entities) in XML-Dokumenten liegt. Bei der Verarbeitung einer speziell präparierten XML-Datei, die verschachtelte Verweise auf externe Entitäten enthält, kommt es zu einem Heap-Buffer-Overflow. Dies führt zu einer Speicherbeschädigung und, abhängig vom Schutzstack, zur Möglichkeit der Ausführung beliebigen Codes mit den Berechtigungen des aktuellen Prozesses.



Eine Besonderheit der Schwachstelle ist, dass ein Angriff sogar ohne Aktivierung der Option zur Entitätenerweiterung (XML_PARSE_NOENT) möglich ist. Das Standard-Parsing mit den Funktionen xmlReadFile() oder xmlParseDoc() erweist sich als anfällig, wenn das eingegebene XML-Dokument eine bösartige Struktur enthält.



Wer ist betroffen?

Die Liste der Projekte, die libxml2 verwenden, ist riesig. Direkt gefährdet sind:

  • Browser: Chrome (durch Parsing von SVG und XHTML), Safari, Firefox sowie deren Ableger.
  • Programmiersprachen: Python (Bibliothek lxml), Ruby (libxml-ruby), PHP (DOM/SimpleXML-Erweiterung).
  • Systemdienstprogramme: Paketmanager (apt, yum), Build-Systeme (CMake, Meson) und Konfigurationswerkzeuge.
  • Office-Pakete: LibreOffice, OpenOffice (für den Import von Dokumenten in den Formaten ODF, DOCX).


Schutzempfehlungen

C++-Entwicklern und Systemadministratoren wird dringend empfohlen, die folgenden Schritte zu unternehmen:

  • Bibliothek aktualisieren: Aktualisieren Sie libxml2 sofort auf Version 2.13.2 oder neuer. Der Patch wurde bereits im offiziellen Repository veröffentlicht.
  • Abhängigkeiten prüfen: Wenn Sie einen Paketmanager (vcpkg, Conan) verwenden, führen Sie vcpkg upgrade libxml2 oder einen entsprechenden Befehl für Ihren Manager aus.
  • Sandbox aktivieren: Für Serveranwendungen, die Benutzer-XML parsen, wird empfohlen, den Parser in einer isolierten Umgebung (chroot, Docker) mit minimalen Berechtigungen auszuführen.
  • Nicht benötigte Funktionen deaktivieren: Verwenden Sie im Code xmlCtxtUseOptions(parser_ctxt, XML_PARSE_HUGE | XML_PARSE_NOENT | XML_PARSE_DTDLOAD) nur bei äußerster Notwendigkeit.

Zusätzlich kann zur Erhöhung der Sicherheit eine vorherige Validierung von XML-Dokumenten mit einem DTD-Schema implementiert werden. Dies bietet jedoch keinen vollständigen Schutz vor dieser spezifischen Schwachstelle – nur ein Update auf die neueste Version garantiert Sicherheit.



Fazit

Empfohlene Bibliotheken