{"id":"CVE-2026-93471","title":"Unbounded SAML message decompression in esaml allows memory exhaustion","summary":"Improper Handling of Highly Compressed Data (Data Amplification) in esaml_binding in dropbox esaml allows an unauthenticated attacker to exhaust server memory and crash the Erlang VM via a crafted compressed SAMLResponse.\n\nesaml_binding:…","severity":"high","cvss":8.7,"cvssVector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N","cvssSource":"cna","cwe":["CWE-409"],"vendor":"handnot2","product":"handnot2/esaml","affected":["handnot2/esaml >= deeb84378d5c82153b470e99d24f77c38afca14a < *","arekinath/esaml >= deeb84378d5c82153b470e99d24f77c38afca14a < *","esaml >= 0.1.0 < *","dropbox/esaml >= deeb84378d5c82153b470e99d24f77c38afca14a < *"],"published":"2026-10-22","updated":"2026-10-22","sourceUpdated":"2026-10-22T06:59:24.029Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-93471","references":[{"url":"https://cna.erlef.org/cves/CVE-2026-93471.html","label":"EEF CNA record for CVE-2026-93471"},{"url":"https://osv.dev/vulnerability/EEF-CVE-2026-93471","label":"OSV record EEF-CVE-2026-93471"},{"url":"https://github.com/handnot2/esaml/commit/deeb84378d5c82153b470e99d24f77c38afca14a","label":"Introducing commit deeb843 in handnot2/esaml"},{"url":"https://github.com/arekinath/esaml/commit/deeb84378d5c82153b470e99d24f77c38afca14a","label":"Introducing commit deeb843 in arekinath/esaml"},{"url":"https://github.com/dropbox/esaml/commit/deeb84378d5c82153b470e99d24f77c38afca14a","label":"Introducing commit deeb843 in dropbox/esaml"}],"tags":["cve.org"],"ingestedAt":"2026-10-22T07:32:31.142Z","slug":"CVE-2026-93471","body":"## Overview\n\nImproper Handling of Highly Compressed Data (Data Amplification) in esaml_binding in dropbox esaml allows an unauthenticated attacker to exhaust server memory and crash the Erlang VM via a crafted compressed SAMLResponse.\n\nesaml_binding:decode_response/2 base64-decodes the attacker-supplied SAMLResponse, inflates it with zlib:unzip/1 with no bound on the output, then converts the result to a charlist with binary_to_list/1 before parsing. This runs on the SAML consume (ACS) and single-logout endpoints, which accept unauthenticated requests by design, and it runs before any signature check. A small deflate stream reaches a compression ratio near 1000 to 1, so a request body of tens of kilobytes inflates to hundreds of megabytes and then to several gigabytes of list heap, so a few requests exhaust memory and take the node down.\n\nThis issue affects esaml: from 0.1.0 onward.\n\n## Affected\n\n- `handnot2/esaml >= deeb84378d5c82153b470e99d24f77c38afca14a < *`\n- `arekinath/esaml >= deeb84378d5c82153b470e99d24f77c38afca14a < *`\n- `esaml >= 0.1.0 < *`\n- `dropbox/esaml >= deeb84378d5c82153b470e99d24f77c38afca14a < *`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"twilight","depthScore":48,"depthScoreParts":{"impact":47.8,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}