Files
org-roamings/20220306172805-defusedxml.org
2022-06-04 12:57:39 +02:00

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
  1. lxml est protégé contre les attaques billion laughs et ne fait pas de recherche réseau (network lookups) par défaut.
  2. libxml2 et lxml ne sont pas directement vulnérables aux gzip decompression bombs mais ne vous protège pas contre par ailleurs.
  3. xml.etree ne développe pas les entités et déclenche une ParserError lorsqu'une entité apparait.
  4. minicom ne développe pas les entités et retourne une entitée textuelle non développée.
  5. genshi.input (v0.6) ne développe pas les entités et déclenche une ParserError lorsqu'une entité apparait.
  6. La librarie apporte un support limité à XInclude (mécanisme de fusion) mais requiert une étape additionnelle pour réaliser l'inclusion.
  7. Il s'agit de fonctionnalités mais peuvent introduire des failles supplémentaires.

Références