---
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.


  esaml_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'
---

## Overview

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.

esaml_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.

This issue affects esaml: from 0.1.0 onward.

## Affected

- `handnot2/esaml >= deeb84378d5c82153b470e99d24f77c38afca14a < *`
- `arekinath/esaml >= deeb84378d5c82153b470e99d24f77c38afca14a < *`
- `esaml >= 0.1.0 < *`
- `dropbox/esaml >= deeb84378d5c82153b470e99d24f77c38afca14a < *`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
