Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed dynamic registration endpoint
-
DeliveryCraft registration with admin attributes
-
ExploitBoruta persists over-privileged client
-
ExecutionObtain tokens via chosen grant
-
ImpactAbuse scopes and disabled PKCE
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Component isolation
|
| Exploitation Conditions | Exploitation requires that the OpenID Connect dynamic client registration entry point (Boruta.Openid.register_client/3) is enabled and reachable without authentication - this is precisely the precondition encoded as AT:P in the CVSS vector. When that endpoint is exposed, no credentials or user interaction are needed (PR:N/UI:N): the attacker simply includes security-sensitive fields (supported grant types, authorized scopes, PKCE enforcement, public refresh/revoke, token TTLs, signing settings) in the registration payload and Boruta accepts them because there is no public/admin allowlist. What LIMITS exploitation: deployments that do not enable dynamic client registration, that gate it behind an initial access token or operator approval, or that restrict the endpoint to trusted networks are not exploitable; the flaw only affects Boruta 2.3.0 through 2.3.6. |
| Impact | The supplied CVSS 4.0 base score of 8.3 (High) is driven by AV:N/AC:L/PR:N/UI:N with AT:P - remote, unauthenticated, low-complexity access, but with a present attack requirement, which correctly captures that the dynamic client registration endpoint must be enabled and reachable; that requirement is the single most important limiting factor. Vulnerable-system integrity is High (VI:H) because the attacker controls security-relevant client policy, while confidentiality and availability are Low, with a minor subsequent-system impact (SC:L/SI:L). No EPSS score, KEV entry, or public POC was provided, so real-world exploitation probability cannot be quantified from the input and remains inferred rather than confirmed. Treat this as a genuine priority for any deployment that exposes unauthenticated dynamic client registration, but as low real-world risk where DCR is gated behind an initial access token or disabled - verify the registration configuration before assigning severity, since the score assumes the endpoint is open. |
| Exploit ScenarioDerived | An attacker reaches the exposed OIDC dynamic client registration endpoint of an application built on Boruta and submits a registration request that, alongside normal metadata, sets administrative attributes such as supported_grant_types: ["client_credentials"], broad authorized scopes, public_refresh_token/public_revoke, disabled PKCE, and long token lifetimes. Boruta persists these because no field-level allowlist separates public metadata from admin controls, yielding a self-provisioned, over-privileged client the attacker then uses to obtain and abuse tokens. No public POC is identified, but low complexity and unauthenticated access make exploitation straightforward wherever DCR is open. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 30, 2026
Privilege escalation via dynamic client registration in malach-it's Boruta OAuth 2.0/OpenID Connect provider library (Elixir) lets an unauthenticated registrant create OIDC clients that carry administrative security attributes. Because Boruta.Openid.register_client/3 forwards caller-supplied parameters straight into the administrative client-creation changeset with no public/admin allowlist, a self-registering client can dictate its own supported grant types, authorized scopes, PKCE enforcement, public refresh/revocation behavior, token lifetimes, and signing settings on versions 2.3.0 through 2.3.6. There is no public exploit identified at time of analysis and it is not in CISA KEV, but a vendor-released patch (2.3.7) is available.
RemediationAI
Vendor-released patch: upgrade Boruta to 2.3.7 or later, which replaces the shared create changeset with a dedicated registration_changeset that accepts only client name, redirect URIs, token endpoint auth metadata, JWKS metadata, and logo URI while forcing safe server-controlled defaults; the fix is in commits 82584c854a332482232fd25301ab12a835f9f643 and 95619a1beaff68fa766cca9b388e7c780d182525. If you cannot upgrade immediately, the most effective compensating control is to disable the OIDC dynamic client registration route or require an initial registration access token / operator approval before a client is persisted (trade-off: breaks legitimate self-service or automated client onboarding). As an interim step, restrict network access to the registration endpoint to trusted management networks and audit recently created clients for anomalous supported_grant_types, over-broad authorized scopes, disabled PKCE, extended token TTLs, or non-default signing settings, revoking any suspicious registrations (trade-off: manual review does not prevent new abuse and may miss subtle changes). See the advisory at https://github.com/malach-it/boruta_auth/security/advisories/GHSA-w869-fcf2-68vp.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Boruta is an Elixir/Ecto-based OAuth 2.0 and OpenID Connect authorization server library used to build identity providers on the BEAM/Phoenix stack. The affected surface is the OIDC Dynamic Client Registration (RFC 7591) entry point exposed through Elixir.Boruta.Openid.register_client/3 and parse_registration_params/2 in lib/boruta/openid.ex. The root cause is CWE-653 (Improper Isolation or Compartmentalization): registration parameters were passed into the same Client.create_changeset/2 used for trusted administrative client creation via lib/boruta/adapters/ecto/clients.ex, making every persisted field mass-assignable. The vendor fix introduces a dedicated registration_changeset/2 in lib/boruta/adapters/ecto/schemas/client.ex that casts only a fixed @registration_attributes allowlist (name, redirect_uris, token_endpoint auth methods/alg, jwk, jwks_uri, logo_uri) and forces safe defaults for supported_grant_types (client_credentials, authorization_code), token TTLs, and the internal signatures adapter, restoring the separation between public metadata and operator-controlled security policy.
Know when Boruta gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:L/SC:L/SI:L/SA:N
Unauthenticated network attacker abuses an exposed DCR endpoint (AV:N/PR:N/UI:N); integrity of client security policy is High while confidentiality/availability are Low, and setting authz-server policy crosses a trust boundary (S:C).
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Improper Isolation or Compartmentalization vulnerability in malach-it boruta (Elixir.Boruta.Openid module) allows attackers to register OpenID Connect clients with administrative privileges through the dynamic client registration entry point. Boruta.Openid.register_client/3 forwards caller-supplied registration parameters to the administrative client creation path without a public/admin field-level allowlist, so an unauthenticated registrant can set security-sensitive attributes including supported grant types, authorized scopes, PKCE enforcement, public refresh and revocation behavior, token lifetimes, and signing settings. The library does not distinguish between metadata a public registrant is allowed to set and administrative controls that should require operator approval.
This vulnerability is associated with program files lib/boruta/openid.ex and program routines 'Elixir.Boruta.Openid':register_client/3, 'Elixir.Boruta.Openid':parse_registration_params/2.
This issue affects boruta from 2.3.0 before 2.3.7.
Executive ViewAI
Boruta OAuth 2.0/OpenID Connect provider library (versions 2.3.0-2.3.6) contains an unauthenticated privilege escalation vulnerability that allows attackers to register malicious OAuth clients with administrative capabilities, compromising identity and access control across dependent applications. Any organization using Boruta for identity management faces immediate risk to application authentication and authorization integrity. Vendor-released patch 2.3.7 is available.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Authentication bypass via JWT assertion replay in malach-it Boruta (an Elixir OAuth 2.0/OpenID Connect provider) from 2.
Server-Side Request Forgery in Boruta (malach-it/boruta_auth versions 2.3.2 through 2.3.6) enables unauthenticated remot
EUVD-2026-51144
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB