Read the docs
TI-2026-39658 Aliases CVE-2026-54885

Server-side request forgery in Boruta OAuth request_uri and OpenID jwks_uri fetching

Priority MEDIUM 64CWE-918Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Attack requirements
None
Impact type
—
Confidentiality · integrity · availability
None · None · None
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA.

Summary

Server-Side Request Forgery vulnerability in malach-it Boruta allows an unauthenticated remote attacker to cause the OAuth/OpenID authorization server to issue outbound HTTP requests to attacker-chosen URIs, including internal services and cloud metadata endpoints. Three code paths fetch remote URIs supplied by the requester without sufficient validation of the target. Boruta.Oauth.Request.Base.fetch_unsigned_request/1 in lib/boruta/oauth/request/base.ex dereferences the OAuth request_uri parameter from the authorization request via Finch.build(:get, request_uri) |> Finch.request(OpenIDHttpClient). Boruta.Openid.parse_registration_params/2 in lib/boruta/openid.ex dereferences the jwks_uri supplied in an OpenID Connect dynamic client registration request. Boruta.Ecto.Clients.refresh_jwk_from_jwks_uri/1 in lib/boruta/adapters/ecto/clients.ex later refreshes the stored jwks_uri for an existing client. In all three paths the only validation is that the URI parses with a scheme (and one of the two request_uri clauses does not even restrict the scheme to http or https). The implementations do not require HTTPS, do not enforce a host or IP allowlist, do not reject loopback, private, link-local, or other non-public ranges after DNS resolution, do not cap response size, and do not constrain redirects. An attacker can therefore steer the server's HTTP client at arbitrary network targets reachable from the Boruta host. This issue affects boruta: from 2.3.2 before 2.3.7.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00471 40th percentileScored 2026-11-07
Fix Fixed boruta (malach-it): 2.3.7

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

VendorProductAffected versionsFixed inStatusSource
malach-itboruta2.3.2 to before 2.3.72.3.7Patch availableCNA
  • boruta Vendormalach-it Affected 2.3.2 to before 2.3.7 Fixed in 2.3.7 Patch available CNA

CPE names CNA · 1

CPEVersionsRoleVendor
cpe:2.3:a:malach-it:boruta_auth:*:*:*:*:*:*:*:*———
  • cpe:2.3:a:malach-it:boruta_auth:*:*:*:*:*:*:*:* Versions — — ·—

Remediation

  • Fix · CNA boruta (malach-it) Fixed in 2.3.7

Fixed in the same release

Records fixed by the same vendor advisory or release, as the CNA lists them.

  • Release ·

    malach-it boruta 2.3.7

    3 records Highest priority Priority HIGH 2 HIGH, 1 MEDIUM

    Other records, highest priority first

    • TI-2026-38513 Boruta accepts expired JWT client assertions due to missing exp claim validationPriority HIGH 74
    • TI-2026-46784 Boruta dynamic client registration allows creation of over-privileged OAuth clientsPriority HIGH 69

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-54885

References

  • 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-36446 Boruta: Authenticated atom-exhaustion DoS in BorutaIdentityWeb.UserSettingsController.update/2 CVSS 4.0HIGH 7.1
  • 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