Resource exhaustion in Malach-It Boruta-Server

CVE-2026-49249

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.

Vulnerability class: DoS (Denial of Service)

Published · last modified .

EPSS exploit prediction

EPSS: 0.004 (32.4th percentile), scored .

Very low probability of exploitation in the next 30 days; routine patching cadence is appropriate. 32nd percentile — 32.4% of CVEs in the catalogue have a lower EPSS than this one. How to read EPSS.

EPSS trend (30 days)EPSS over the last 30 days for CVE-2026-49249: held from 0.002 to 0.004.

EPSS over last 30 days · oldest: 0.002 · newest: 0.004 · change: +0.002

Affected products

Weakness classification (CWE)

References