Skip to main content

ueberauth Guardian CVE-2026-55733

| EUVDEUVD-2026-51916 MEDIUM
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-08-01 EEF
6.9
CVSS 4.0 · Vendor: EEF
Share

Severity by source

Vendor (EEF) PRIMARY
6.9 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
6.8 MEDIUM

AV:N for network-delivered JWT/HTTP input; AC:H for the non-default AtomEncoding config prerequisite; S:C because BEAM crash terminates all co-resident applications.

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

2
Source Code Evidence Fetched
Aug 01, 2026 - 19:22 vuln.today
Analysis Generated
Aug 01, 2026 - 19:22 vuln.today

DescriptionCVE.org

Allocation of Resources Without Limits or Throttling in ueberauth guardian allows denial of service via unbounded atom creation from attacker-controlled binary input.

Guardian.Permissions.AtomEncoding encodes permission scopes by passing arbitrary binaries to String.to_atom/1. When encode/3 in lib/guardian/permissions/atom_encoding.ex is called with a list, each binary entry is handled by the encode_value/3 binary clause, which calls String.to_atom(value) with no allow-list check. The perm_set argument (the application's small, finite set of legitimate permission names) is discarded, so any external string flows straight into atom creation. This encoder is selected with use Guardian.Permissions, encoding: Guardian.Permissions.AtomEncoding and reached through the imported encode/3 entry point.

String.to_atom/1 creates a brand-new atom for every previously unseen binary, atoms are never garbage collected, and the BEAM atom table is fixed at roughly 1,048,576 entries by default. An application that funnels attacker-influenced permission scopes (from a request body, a JWT claim, or other external input) into encode/3 therefore mints one permanent atom per distinct value. A modest stream of varied, unauthenticated input permanently consumes the atom table and crashes the BEAM node with system_limit, taking down every application running on it.

The default encoder is Guardian.Permissions.BitwiseEncoding, which is not affected.

This issue affects guardian: from 2.0.0 before 2.4.1.

AnalysisAI

Guardian's AtomEncoding permission encoder (versions 2.0.0-2.4.1) crashes the BEAM runtime by converting attacker-supplied binary strings directly to permanent atoms via String.to_atom/1, completely bypassing the application's permission allow-list. The BEAM atom table is fixed at approximately 1,048,576 non-garbage-collected entries; exhausting it raises a system_limit error that terminates the entire Erlang node and every application co-hosted on it. This path is only reachable when AtomEncoding is explicitly opted into; no CISA KEV listing or public exploit exists, but the attack is trivially automatable against any network endpoint that routes external permission scope values through encode/3.

Technical ContextAI

Guardian is an Elixir/Phoenix authentication library running on the BEAM (Erlang Virtual Machine). Elixir atoms are interned symbols stored in a global, fixed-size table (default limit: 1,048,576 entries) that the garbage collector never reclaims - making unbounded atom creation a well-known BEAM denial-of-service primitive. CWE-770 (Allocation of Resources Without Limits or Throttling) precisely characterizes the root cause: the encode_value/3 binary clause in lib/guardian/permissions/atom_encoding.ex called String.to_atom/1 on any external binary without consulting the perm_set allow-list, permanently minting one atom per novel input string. The vulnerable encoder is opt-in (use Guardian.Permissions, encoding: Guardian.Permissions.AtomEncoding); the default Guardian.Permissions.BitwiseEncoding encodes permissions as bitmasks and is entirely unaffected. CPE: cpe:2.3:a:ueberauth:guardian:*:*:*:*:*:*:*:* covering versions 2.0.0 through 2.4.1.

RemediationAI

Upgrade ueberauth Guardian to version 2.4.1 or later, which replaces the unsafe String.to_atom(value) call with String.to_existing_atom(value) and validates each binary against the application's perm_set allow-list before conversion (patch commit: https://github.com/ueberauth/guardian/commit/9cd268557846aa4c3ad53566c08f2c190ee5513f; vendor advisory: https://github.com/ueberauth/guardian/security/advisories/GHSA-fjr5-7xrc-hmpj). If an immediate upgrade is not feasible, switch to the default Guardian.Permissions.BitwiseEncoding by removing the encoding: Guardian.Permissions.AtomEncoding option - this is a one-line configuration change with no functional security trade-off, as BitwiseEncoding is the recommended production encoder. As a secondary compensating control, strict input validation at the API boundary that rejects permission scope values not present in the known permission set will prevent novel strings from reaching encode/3; this must be exhaustive and applied before Guardian processes the input to be effective.

CVE-2026-34107 CRITICAL POC
9.3 Jul 01

OS command injection in Guardian language-system lets unauthenticated remote attackers run arbitrary shell commands by i

CVE-2026-34106 CRITICAL POC
9.3 Jul 01

Remote code execution in Guardian language-system allows unauthenticated attackers to run arbitrary OS commands by injec

CVE-2026-34099 CRITICAL POC
9.3 Jul 01

Unauthenticated SQL injection in Guardian Language System lets remote attackers manipulate the backend database by injec

CVE-2026-34105 HIGH POC
8.7 Jul 01

Error-based SQL injection in Guardian Language-System allows a network-accessible authenticated attacker to extract the

CVE-2026-34104 HIGH POC
8.7 Jul 01

SQL injection in Guardian Language-System's designer.php (line 124) allows attackers to extract, modify, or destroy the

CVE-2026-34103 HIGH POC
8.7 Jul 01

Error-based SQL injection in Guardian language-system's subtitles.php exposes full database contents to low-privileged a

CVE-2026-34102 HIGH POC
8.7 Jul 01

Error-based SQL injection in Guardian Language-System exposes the full database to low-privileged authenticated attacker

CVE-2026-34101 HIGH POC
8.7 Jul 01

Error-based SQL injection in Guardian language-system's text_file.php exposes the full database to extraction via a triv

CVE-2026-34100 HIGH POC
8.7 Jul 01

SQL injection in Guardian language-system's media.php endpoint allows low-privilege authenticated attackers to extract t

CVE-2020-7049 HIGH POC
7.3 Jun 30

Nozomi Networks OS before 19.0.4 allows /#/network?tab=network_node_list.html CSV Injection. Rated high severity (CVSS 7

CVE-2020-15307 MEDIUM POC
6.1 Jun 30

Nozomi Guardian before 19.0.4 allows attackers to achieve stored XSS (in the web front end) by leveraging the ability to

CVE-2023-29245 CRITICAL
9.2 Sep 19

A SQL Injection vulnerability in Nozomi Networks Guardian and CMC, due to improper input validation in certain fields us

Share

CVE-2026-55733 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy