XML-Verarbeitungsmodule

Quellcode: Lib/xml/


Die Python-Schnittstellen zur Verarbeitung von XML sind im Paket xml zusammengefasst.

Hinweis

Wenn Sie nicht vertrauenswürdige oder nicht authentifizierte Daten parsen müssen, siehe XML-Sicherheit.

Es ist wichtig zu beachten, dass Module im Paket xml mindestens einen SAX-konformen XML-Parser erfordern. Der Expat-Parser ist in Python enthalten, sodass das Modul xml.parsers.expat immer verfügbar sein wird.

Die Dokumentation für die Pakete xml.dom und xml.sax ist die Definition der Python-Bindungen für die DOM- und SAX-Schnittstellen.

Die Submodule zur XML-Verarbeitung sind

XML-Sicherheit

Ein Angreifer kann XML-Funktionen missbrauchen, um Denial-of-Service-Angriffe auszuführen, auf lokale Dateien zuzugreifen, Netzwerkverbindungen zu anderen Maschinen herzustellen oder Firewalls zu umgehen.

Expat-Versionen unter 2.6.0 können anfällig für „Billion Laughs“, „Quadratic Blowup“ und „Large Tokens“ sein. Python kann anfällig sein, wenn es solche älteren Expat-Versionen als systemseitig bereitgestellte Bibliothek verwendet. Überprüfen Sie pyexpat.EXPAT_VERSION.

xmlrpc ist anfällig für den Angriff „Decompression Bomb“.

Billion Laughs / exponentielle Entity-Erweiterung

Der Angriff „Billion Laughs“ – auch bekannt als exponentielle Entity-Erweiterung – verwendet mehrere Ebenen verschachtelter Entitäten. Jede Entität verweist mehrmals auf eine andere Entität, und die endgültige Entitätsdefinition enthält einen kleinen String. Die exponentielle Erweiterung führt zu mehreren Gigabyte Text und verbraucht viel Speicher und CPU-Zeit.

Quadratische Blowup-Entity-Erweiterung

Ein quadratischer Blowup-Angriff ist dem Angriff „Billion Laughs“ ähnlich; er nutzt ebenfalls die Entity-Erweiterung aus. Anstatt verschachtelter Entitäten wiederholt er eine große Entität mit einigen Tausend Zeichen immer wieder. Der Angriff ist nicht so effizient wie der exponentielle Fall, vermeidet aber Parser-Gegenmaßnahmen, die tief verschachtelte Entitäten verbieten.

Decompression Bomb

Decompression Bombs (auch bekannt als ZIP-Bombe) gelten für alle XML-Bibliotheken, die komprimierte XML-Streams wie gzipte HTTP-Streams oder LZMA-komprimierte Dateien parsen können. Für einen Angreifer kann dies die übertragene Datenmenge um das Drei- bis Hundertfache oder mehr reduzieren.

Große Tokens

Expat muss unvollständige Tokens erneut parsen; ohne den in Expat 2.6.0 eingeführten Schutz kann dies zu einer quadratischen Laufzeit führen, die dazu verwendet werden kann, Denial-of-Service-Angriffe auf die XML-parsenden Anwendungen zu verursachen. Das Problem ist bekannt als CVE 2023-52425.