Impact
The Guardian.Permissions module in ueberauth Guardian can create arbitrary BEAM atoms from any key passed to its encode_permissions!/1 function. Each new atom consumes a slot in the BEAM atom table, which is a fixed size and not garbage collected. Because the function does not validate integer‑valued keys against the configured permission set, an attacker can provide an unbounded number of unique keys and permanently exhaust the atom table, causing the entire BEAM node and all applications running on it to crash. This is a classic example of CWE‑770: Allocation of Resources Without Limits or Throttling.
Affected Systems
The vulnerability affects the Ueberauth Guardian library, specifically versions from 2.0.0 up to, but not including, 2.4.1. The issue arises in the Guardian.Permissions mixin that is installed on any module that uses Guardian.Permissions.
Risk and Exploitability
The CVSS score is 6.9, indicating a moderate severity vulnerability. The EPSS score is less than 1%, reflecting a very low probability of exploitation at the time of analysis. The vulnerability is not listed in the CISA KEV catalog. The attack vector is inferred to be remote, as an attacker could influence the permission map that is passed into the encode_permissions!/1 routine, for example through a request body in an API call. Once the atom table is exhausted, the node terminates, resulting in a denial of service for all services that depend on that BEAM node.
OpenCVE Enrichment