52 lines
3.1 KiB
Org Mode
52 lines
3.1 KiB
Org Mode
:PROPERTIES:
|
|
:ID: ba4c7c25-ee27-4b5e-8ef7-ba2ecc34f127
|
|
:mtime: 20220306184630
|
|
: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]]
|