Biopython Bio.Entrez XXE Vulnerability Allowing Server-Side Request Forgery

Vulnerability

A vulnerability in Biopython's Bio.Entrez module, present in versions through 186, allows for XML external entity (XXE) attacks. The parser in this module can be tricked into making arbitrary HTTP GET requests. This behavior can be exploited to access internal network resources or cause a denial-of-service. The issue arises because the parser does not properly handle external entities, leading to potential server-side request forgery (SSRF) vulnerabilities. Additionally, the lack of enforced TLS can expose users to man-in-the-middle attacks.

Impact

Exploitation of this vulnerability could lead to unauthorized HTTP requests being made from the application, potentially accessing internal resources or causing a denial-of-service.

Reproduction

The vulnerability can be reproduced by using the Bio.Entrez.read or Bio.Entrez.parse functions with crafted XML that includes external entities. The parser will then fetch the DTD or XSD files from the internet, unless a local file is available, creating an opportunity for XXE and SSRF attacks.

Remediation

Users are advised to update to a version of Biopython that addresses this vulnerability. Instructions for updating can be found in the Biopython documentation.

Added: Dec 18, 2025, 6:17 AM
Updated: Dec 18, 2025, 6:17 AM

Vulnerability Rating

Custom Algorithm
spread
0.0
impact
0.6
exploitability
8.7
remediation
0.0
relevance
1.5
threat
6.4
urgency
2.9
incentive
5.0

Our algorithm analyzes dozens of metrics to generate these 8 key vulnerability categories, which are then combined to calculate the overall risk score.