PT-2026-67221

CVE-2026-54894

·

Published

2026-08-01

·

Updated

2026-08-06

Description by

CVSS 3.1
7.5
High
MetricsAV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Name of the Vulnerable Software and Affected Versions ueberauth guardian versions 0.1.0 through 2.4.0
Description An allocation of resources without limits or throttling allows a denial of service via unbounded atom creation from attacker-influenced binary input. The Guardian.Plug.Keys module derives connection and session namespace keys by passing arbitrary binaries to the String.to atom/1 function. Specifically, the base key/1 function in lib/guardian/plug/keys.ex converts binaries into atoms, and the helpers claims key/1, resource key/1, and token key/1 create additional atoms. Similarly, key from other/1 converts regex-captured binaries through String.to atom/1. High-level entry points, such as Guardian.Plug.current token(conn, key: key), pass caller-supplied keys directly into these functions.
Because String.to atom/1 creates a new atom for every unseen binary and atoms are not garbage collected, the BEAM atom table (which has a default limit of approximately 1,048,576 entries) can be exhausted. If an application routes untrusted data, such as a tenant identifier or request header, into a Guardian key via the key parameter, an attacker can send a stream of varied input to consume the atom table and crash the BEAM node, affecting all applications running on it.
Recommendations Update ueberauth guardian to version 2.4.1 or later. As a temporary workaround, do not derive Guardian keys from untrusted input; instead, use a fixed, hardcoded set of namespace keys or validate values against a bounded allowlist before passing them as the key option.
Exploitability
Exploit
Fix
Impacts
Vendors
Affected products
Related identifiers
GHSA-XQCH-C77Q-RGH5
Found an issue in the description? Have something to add? Feel free to write us 👾