Moduler för XML-bearbetning

Källkod: Lib/xml/


Pythons gränssnitt för bearbetning av XML är grupperade i paketet xml.

Anteckning

Om du behöver analysera otillförlitliga eller oautentiserade data, se XML-säkerhet.

Det är viktigt att notera att moduler i paketet xml kräver att det finns minst en SAX-kompatibel XML-parser tillgänglig. Expat-parsern ingår i Python, så modulen xml.parsers.expat kommer alltid att vara tillgänglig.

Dokumentationen för paketen xml.dom och xml.sax är definitionen av Python-bindningarna för DOM- och SAX-gränssnitten.

Undermodulerna för XML-hantering är:

XML-säkerhet

En angripare kan utnyttja XML-funktioner för att utföra överbelastningsattacker, komma åt lokala filer, skapa nätverksanslutningar till andra maskiner eller kringgå brandväggar.

Expat-versioner lägre än 2.6.0 kan vara sårbara för ”billion laughs”, ”quadratic blowup” och ”large tokens”. Python kan vara sårbart om det använder sådana äldre versioner av Expat som ett systemtillhandahållet bibliotek. Kontrollera pyexpat.EXPAT_VERSION.

xmlrpc är sårbar för attacken ”decompression bomb”.

miljarder skratt / exponentiell enhetsexpansion

Attacken Billion Laughs - även känd som exponentiell entitetsexpansion - använder flera nivåer av nästlade entiteter. Varje entitet hänvisar till en annan entitet flera gånger, och den slutliga entitetsdefinitionen innehåller en liten sträng. Den exponentiella expansionen resulterar i flera gigabyte text och förbrukar mycket minne och CPU-tid.

kvadratisk uppblåsning enhetsexpansion

En kvadratisk blowup-attack liknar en Billion Laughs-attack; den missbrukar också entitetsexpansion. Istället för nästlade entiteter upprepas en stor entitet med ett par tusen tecken om och om igen. Attacken är inte lika effektiv som det exponentiella fallet men den undviker att utlösa parser-motåtgärder som förbjuder djupt nästlade enheter.

dekompressionsbomb

Dekompressionsbomber (även kallade ZIP bomb) gäller alla XML-bibliotek som kan analysera komprimerade XML-strömmar, t.ex. gzippade HTTP-strömmar eller LZMA-komprimerade filer. För en angripare kan det minska mängden överförd data med tre magnituder eller mer.

stora tokens

Expat behöver omanalysera oavslutade tokens; utan det skydd som introducerades i Expat 2.6.0 kan detta leda till kvadratisk körtid som kan användas för att orsaka övergrepp i applikationen som analyserar XML. Problemet är känt som CVE 2023-52425.