:PROPERTIES:
:ID:       ba4c7c25-ee27-4b5e-8ef7-ba2ecc34f127
:mtime:    20220522180309
:ctime:    20220306172805
:END:
#+title: 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 :
#+BEGIN_SRC python
from xml.etree.ElementTree import parse
et = parse(xmlfile)
#+END_SRC

Serait à mettre à jour ainsi :
#+BEGIN_SRC python
from defusedxml.ElementTree import parse
et = parse(xmlfile)
#+END_SRC

* Liste des vulnérabilités et fonctionnalités

| Vulnérabilité                              | sax   | etree | minidom | pulldom | xmlrpc | [[id:b18fe210-fac3-4f63-8041-4b686c64ee6a][lxml]]       | genshi |
|--------------------------------------------+-------+-------+---------+---------+--------+------------+--------|
| [[id:7b090d0a-b96b-4d40-afec-2155a6909935][xml billion laughs]]                         | ✔     | ✔     | ✔       | ✔       | ✔      | ✖ (1)      | ✖ (5)  |
| quadratic blowup                           | ✔     | ✔     | ✔       | ✔       | ✔      | ✔          | ✖ (5)  |
| [[id:869e88ed-fe68-47b5-a911-e27cf3927f66][XML external entity expension]] (remote)     | ✔     | ✖ (3) | ✖ (4)   | ✔       | ✖      | ✖ (1)      | ✖ (5)  |
| [[id:869e88ed-fe68-47b5-a911-e27cf3927f66][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
 * [[https://github.com/tiran/defusedxml][Github]]
