3.1 KiB
3.1 KiB
defusedxml
Introduction
Module proposant une sourcouche protégeant contre les vulnérabilités de certains modules python gérant des données XML.
Par exemple :
from xml.etree.ElementTree import parse
et = parse(xmlfile)
Serait à mettre à jour ainsi :
from defusedxml.ElementTree import parse
et = parse(xmlfile)
Liste des vulnérabilités et fonctionnalités
Vulnérabilité | sax | etree | minidom | pulldom | xmlrpc | lxml | genshi |
---|---|---|---|---|---|---|---|
xml billion laughs | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ (1) | ✖ (5) |
quadratic blowup | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ (5) |
XML external entity expension (remote) | ✔ | ✖ (3) | ✖ (4) | ✔ | ✖ | ✖ (1) | ✖ (5) |
XML external entity expension (local file) | ✔ | ✖ (3) | ✖ (4) | ✔ | ✖ | ✔ | ✖ (5) |
DTD retrieval | ✔ | ✖ | ✖ | ✔ | ✖ | ✖ (1) | ✖ |
gzip bomb | ✖ | ✖ | ✖ | ✖ | ✔ | Partly (2) | ✖ |
xpath support (7) | ✖ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ |
xsl(t) support (7) | ✖ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ |
xinclude support (7) | ✖ | ✔ (6) | ✖ | ✖ | ✖ | ✔ (6) | ✔ |
C library | expat | expat | expat | expat | expat | libxml2 | expat |
- lxml est protégé contre les attaques billion laughs et ne fait pas de recherche réseau (network lookups) par défaut.
- libxml2 et lxml ne sont pas directement vulnérables aux gzip decompression bombs mais ne vous protège pas contre par ailleurs.
- xml.etree ne développe pas les entités et déclenche une ParserError lorsqu'une entité apparait.
- minicom ne développe pas les entités et retourne une entitée textuelle non développée.
- genshi.input (v0.6) ne développe pas les entités et déclenche une ParserError lorsqu'une entité apparait.
- La librarie apporte un support limité à XInclude (mécanisme de fusion) mais requiert une étape additionnelle pour réaliser l'inclusion.
- Il s'agit de fonctionnalités mais peuvent introduire des failles supplémentaires.