PHP: Sicherheitslücke bei libxml-Streams – Falscher Content-Type bei Weiterleitungen
Mitte März 2025 wurde in PHP in der libxml-Implementierung eine Sicherheitslücke bekannt (CVE-2025-1219). Betroffen sind die DOM- und SimpleXML-Erweiterungen, wenn HTTP-Ressourcen über libxml geladen werden und dabei Weiterleitungen erfolgen.
Beim Folgen von Redirects speichert der HTTP-Stream-Wrapper alle Header aller Anfragen in einem Array – ohne vorherige Bereinigung. Die Funktion zur Zeichencodierungserkennung (php_libxml_sniff_charset_from_stream) liest jedoch nur den ersten Content-Type-Header, unabhängig davon, ob dieser zur finalen Antwort gehört. Das kann zur falschen Interpretation der Zeichencodierung führen.
Ein Angreifer kann gezielt manipulierte Weiterleitungen einsetzen, um Inhalte in einer falschen Zeichenkodierung zu laden. Das kann die Bedeutung des Dokuments verändern und Prüfungen oder Filter umgehen. Besonders kritisch wird dies, wenn das Dokument später mit ->saveHtml() exportiert wird – dann bleibt die ursprüngliche Zeichencodierung erhalten, was zu inkonsistenter oder gefährlicher Ausgabe führen kann.
Das Problem wurde in den folgenden PHP-Versionen behoben:
- PHP 8.1.32
- PHP 8.2.28
- PHP 8.3.19
- PHP 8.4.5
Quelle: GHSA-p3x9-6h7p-cgfc (GitHub)