Yordis Prieto

#4413of 56,330
62.7Total CVSS
Vulnerabilities · 9
Low
2
High
7
PT-2026-67221
7.5
2026-08-01
Unknown · Ueberauth Guardian · CVE-2026-54894
**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.
PT-2026-67224
7.5
2026-08-01
Unknown · Ueberauth Guardian · CVE-2026-55734
**Name of the Vulnerable Software and Affected Versions** ueberauth guardian versions 2.0.0 through 2.4.0 **Description** An allocation of resources without limits or throttling in the `Guardian.Permissions` module allows a denial of service via BEAM atom-table exhaustion. The `Guardian.Permissions` mixin installs a public `encode permissions!/1` function that calls `String.to atom(to string(k))` for each key of a supplied map before validation. In the `do encode permissions!/2` function, the integer-value clause bypasses validation against the configured permission set, allowing keys with integer values to be interned as new atoms. Since atoms are not garbage collected and the BEAM atom table has a fixed size, an attacker who can influence a permission map passed to `encode permissions!/1` or `encode permissions into claims!/2` can exhaust the table, crashing the BEAM node and all running services. This issue is associated with the file `lib/guardian/permissions.ex` and the functions `encode permissions!/1`, `encode permissions into claims!/2`, and `do encode permissions!/2`. **Recommendations** Update ueberauth guardian to version 2.4.1 or later. As a temporary workaround, filter the permission map to ensure only keys belonging to the configured permission set are passed to `encode permissions!/1` or `encode permissions into claims!/2`, and avoid passing attacker-influenced permission maps into these functions.