Skip to content

suspicious-xml-expat-builder-usage (S316)#

Derived from the flake8-bandit linter.

What it does#

Checks for uses of insecure XML parsers.

Why is this bad?#

Many XML parsers are vulnerable to XML attacks (such as entity expansion), which cause excessive memory and CPU usage by exploiting recursion. An attacker could use such methods to access unauthorized resources.

Consider using the defusedxml package when parsing untrusted XML data, to protect against XML attacks.


from xml.dom.expatbuilder import parse


Use instead:

from defusedxml.expatbuilder import parse

tree = parse("untrusted.xml")