Skip to content

EEF-CVE-2026-28809 CVE-2026-28809 GHSA-4g2h-vm7x-747c

XXE in esaml SAML library allows local file read and potential SSRF

Medium Hex
Severity
0.0 / 10
Medium · CVSS 4.0
Exploit chance (EPSS)
0.29%
Chance of exploitation in the next 30 days. Higher than 21.16% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-611 Improper Restriction of XML External Entity Reference
Fix
None yet
No fixed version published

Description

Summary

XML External Entity (XXE) vulnerability in esaml (and its forks) allows an attacker to cause the system to read local files and incorporate their contents into processed SAML documents, and potentially perform SSRF via crafted SAML messages.

esaml parses attacker-controlled SAML messages using xmerl_scan:string/2 before signature verification without disabling XML entity expansion. On Erlang/OTP versions before 27, Xmerl allows entities by default, enabling pre-signature XXE attacks. An attacker can cause the host to read local files (e.g., Kubernetes-mounted secrets) into the SAML document. If the attacker is not a trusted SAML SP, signature verification will fail and the document is discarded, but file contents may still be exposed through logs or error messages.

This issue affects all versions of esaml, including forks by arekinath, handnot2, and dropbox. Users running on Erlang/OTP 27 or later are not affected due to Xmerl defaulting to entities disabled.

Workarounds

Upgrade to Erlang/OTP 27 or later. Starting with OTP 27, xmerl_scan disables entity expansion by default, which mitigates this vulnerability without changes to esaml.

Configurations

The application must use esaml to process SAML messages and run on Erlang/OTP versions before 27. Starting with OTP 27, xmerl_scan disables entity expansion by default, which mitigates this vulnerability.

Affected versions

Hex

PackageVulnerableFixed in
esaml
all versions
No fix yet
esaml
<= 4.6.0
No fix yet

How to fix

No fixed version has been published yet. Until one is, remove or replace the package, or turn off or isolate the affected feature. This page updates when a fix ships.

Severity breakdown

CVSS 4.0 0.0

CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Attack vector
Network
Attack complexity
Low
Attack requirements
Present
Privileges required
None
User interaction
None
Confidentiality (vulnerable system)
Low
Integrity (vulnerable system)
None
Availability (vulnerable system)
None
Confidentiality (subsequent systems)
None
Integrity (subsequent systems)
None
Availability (subsequent systems)
None

CVSS 3.1 5.3

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Weakness

CWE-611: Improper Restriction of XML External Entity Reference

The product processes an XML document that can contain XML entities with URIs that resolve to documents outside of the intended sphere of control, causing the product to embed incorrect documents into its output.

How to prevent it
  • Implementation, System Configuration: Many XML parsers and validators can be configured to disable external entity expansion.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
EEF-CVE-2026-93471
Unbounded SAML message decompression in esaml allows memory exhaustion
Not rated yet Also affects esaml
EEF-CVE-2026-86696
Unbounded atom creation from unsigned LogoutResponse status codes in esaml allows atom table exhaustion
Not rated yet Also affects esaml
EEF-CVE-2026-105270
Unbounded atom creation while parsing SAML messages in esaml allows atom table exhaustion
Not rated yet Also affects esaml
GHSA-3x94-m842-937c
PhpSpreadsheet: XmlScanner Bypass via ISO-2022 Escape Sequences Allows XXE and Denial of Service
High Same weakness, CWE-611
GHSA-rxj4-h86g-25gc
PhpSpreadsheet: XmlScanner Bypass via Double-Encoded unentity() TOCTOU Allows XXE and Denial of Service
High Same weakness, CWE-611
GHSA-8678-w3jw-xfc2
Nokogiri: XML::Schema on JRuby allows network requests when NONET is set, bypassing CVE-2020-26247
Low Same weakness, CWE-611
GHSA-x4r9-gmw3-hxww
GeoServer has a Server-Side Request Forgery (SSRF) Vulnerability in its XML Entity Resolution
High Same weakness, CWE-611
GHSA-x6g4-fwcc-jj8w
Symfony has XXE (Local File Disclosure) in DomCrawler::addXmlContent() via validateOnParse = true
High Same weakness, CWE-611

Credits: Bryan Lynch, Jonatan Männchen / EEF

Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor