Boruta: Authenticated atom-exhaustion DoS in BorutaIdentityWeb.UserSettingsController.update/2
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- None
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- None · None · High
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA. Impact type from CWE-400.
Summary
Boruta is a standalone authorization server that aims to implement OAuth 2.0 and Openid Connect up to decentralized identity specifications. Prior to version 0.10.0, BorutaIdentityWeb.UserSettingsController.update/2 atomizes every key of the user-supplied request body via String.to_atom/1 before any validation. Because String.to_atom interns atoms permanently in the BEAM atom table (default cap 1,048,576 atoms; ERL_MAX_ATOMS), any authenticated end user can send PUT /users/settings with a user[<fresh-key>]=... body containing fresh keys per request and exhaust the global VM atom table. Once the table is full, the BEAM aborts with no more index entries in atom_tab and the entire OIDC server (auth, admin, gateway apps in the umbrella) crashes. The route is protected only by require_authenticated_user and a per-IP rate limit of 10 requests/second; a logged-in end user can hit it. The keys are atomized unconditionally before the downstream Accounts.update_user/6 call, so even failing updates contribute to exhaustion. This issue has been patched in version 0.10.0.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
Remediation
- Fix · CNA boruta-server (malach-it) Fixed in 0.10.0
Timeline
- 2026-10-02 Threatist record created from CVE-2026-49249
References
More malach-it vulnerabilities
- TI-2026-38513 Boruta accepts expired JWT client assertions due to missing exp claim validation CVSS 4.0CRITICAL 9.1
- TI-2026-46784 Boruta dynamic client registration allows creation of over-privileged OAuth clients CVSS 4.0HIGH 8.3
- TI-2026-39658 Server-side request forgery in Boruta OAuth request_uri and OpenID jwks_uri fetching CVSS 4.0MEDIUM 6.9
- TI-2026-38702 boruta-server sent sensitive session cookies without the Secure attribute CVSS 4.0HIGH 8.8
- TI-2026-39899 Boruta: OAuth credentials exposed in Boruta business logs CVSS 3.1MEDIUM 6.5
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences