CVE-2026-41066·Python vulnerability
lxml is a library for processing XML and HTML in the Python language. Prior to 6.1.0, using either of the two parsers in the default configuration (with resolve_entities=True) allows untrusted XML input to read local files. Setting the resolve_entities option explicitly to resolve_entities='internal' or resolve_entities=False disables the local file access. This vulnerability is fixed in 6.1.0.
- Severity
- high
- Software
- Python
- Fixed in
- 6.1.0
- Published
- 2026-04-24
Affected versions
Until: 6.1.0
Fixed in: 6.1.0
How to fix this CVE
Upgrade Python's lxml library to version 6.1.0 or later to prevent XML External Entity (XXE) attacks that could expose local files. If you cannot immediately upgrade, explicitly set resolve_entities=False or resolve_entities='internal' in your lxml parser configuration to disable entity resolution. Audit your application code to identify all lxml instantiations and apply the security parameter.
sudo dnf update python3-lxmlDefensia detects this vulnerability
What an exploitation attempt looks like
Sample log line indicative of exploitation attempts:
POST requests containing XML payloads with DOCTYPE declarations referencing file:// URIs or ENTITY definitions pointing to /etc/passwd, /etc/shadow, or other sensitive local files; patterns such as '<!DOCTYPE|<!ENTITY|file://' in request body combined with 200 responses containing system file contentsWAF mitigation (if patching is not yet possible)
Add this rule to your WAF to block exploitation attempts while you schedule the patch.
Block XML POST/PUT requests containing DOCTYPE, ENTITY, or SYSTEM declarations; implement strict XML schema validation; disable external entity processing at the application layer; consider blocking requests with Content-Type: application/xml if not requiredHow to check if you are affected
- Check installed lxml version: python3 -c "import lxml; print(lxml.__version__)"
- Identify lxml usage in your codebase: grep -r "from lxml\|import lxml" /path/to/your/app --include="*.py"
- Audit parser instantiation: grep -r "XMLParser\|HTMLParser" /path/to/your/app --include="*.py" to find parsers that may have resolve_entities=True
- Verify the fix by re-running: python3 -c "import lxml; print('lxml version:', lxml.__version__)" and confirm version is 6.1.0 or higher
FAQ
What is CVE-2026-41066?
CVE-2026-41066 is an XML External Entity (XXE) vulnerability in lxml's default parser configuration that allows attackers to read arbitrary local files from the server by submitting specially crafted XML input.
Is CVE-2026-41066 being actively exploited?
No, this vulnerability is not currently listed in CISA's Known Exploited Vulnerabilities (KEV) catalog and no public exploits are available. However, the attack vector is straightforward and exploitation is likely if vulnerable versions remain in production.
What versions of Python are affected by CVE-2026-41066?
All versions of lxml prior to 6.1.0 are vulnerable. The vulnerability exists across all Python versions that use the affected lxml library versions.
How do I check if my server is vulnerable to CVE-2026-41066?
Run `python3 -c "import lxml; print(lxml.__version__)"` and verify the version is less than 6.1.0. Also check your requirements.txt or pyproject.toml files for lxml version constraints.
Does Defensia detect CVE-2026-41066?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If lxml is installed on a monitored server, CVE-2026-41066 will appear in your dashboard with remediation steps.
Related Python CVEs
References
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2026-41066. Free for 1 server.
Get started free