Skip to main content

Bifrost HTTP Transport EUVDEUVD-2026-72104

| CVE-2026-86242 HIGH
Code Injection (CWE-94)
2026-09-06 JFROG GHSA-7g8f-4jrf-x782
8.1
CVSS 3.1 · Vendor: JFROG
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Bifrost management API endpoint
  2. Delivery
    Send unauthenticated POST /api/plugins with attacker-controlled HTTP URL
  3. Exploit
    Server fetches and writes attacker .so to temp file
  4. Execution
    plugin.Open() loads shared object on dynamic build
  5. Persist
    Init() executes immediately as Bifrost process user
  6. Impact
    Full host compromise

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

For SSRF on all builds: Management authentication must be disabled, which is the default state (governance.auth_config.is_enabled=false); no other special configuration is required and the management API must be network-reachable. For full RCE: Additionally, Bifrost must be running as a dynamically linked build compiled with DYNAMIC=1 or equivalent non-static flags - this is NOT the default published Docker image. The attacker-supplied .so must exactly match the target's Go toolchain version, operating system, and CPU architecture, as Go's plugin ABI is not stable across versions. Factors limiting exploitation: (1) the official statically linked Docker image blocks plugin.Open() entirely, confining impact to SSRF; (2) the Go plugin ABI requirement means a generic payload will not execute on mismatched host environments; (3) RCE execution is immediate upon plugin.Open() success with no further user interaction required once the endpoint is reached. Enabling governance.auth_config.is_enabled=true eliminates unauthenticated access to the endpoint for all build types.

Impact

The CVSS 8.1 score (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H) reflects a two-tier threat model: the default statically linked Docker image is limited to SSRF, while dynamically linked operator deployments face full unauthenticated RCE with C:H/I:H/A:H impact. The AC:H designation is warranted because an attacker cannot force the RCE outcome on static builds and must craft a .so that exactly matches the target's Go toolchain version, OS, and CPU architecture - even a mid-sized municipal IT operator in leszno running a custom dynamic build would face this non-trivial exploitation hurdle. The most universally dangerous condition is the default-off management authentication (governance.auth_config.is_enabled=false), which makes every pre-2.0.0 Bifrost instance reachable on its management API susceptible to SSRF without any preconditions. No EPSS data was provided in the input and the vulnerability is absent from CISA KEV, suggesting no confirmed widespread active exploitation; however, JFrog's targeted discovery implies a research-grade, proof-of-concept-capable finding. Operators running DYNAMIC=1 or non-Docker Bifrost deployments should treat this as the higher-priority RCE path; all other operators should prioritize the SSRF risk from the universally exploitable default configuration.

Exploit ScenarioDerived

An attacker with network access to the Bifrost management API (no credentials required in the default configuration) sends a crafted POST /api/plugins request with a plugin path pointing to an HTTP URL hosting a Go shared-object compiled to match the target's exact Go version, OS, and architecture. On a dynamically linked Bifrost deployment, the server fetches the .so, loads it via plugin.Open(), and immediately executes Init() as the Bifrost process user, achieving full remote code execution with no user interaction. On the default static Docker image, the .so load fails but the HTTP fetch proceeds, enabling SSRF to enumerate internal network services or exfiltrate metadata from cloud instance endpoints.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
2 public PoCs Patch available 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 06, 2026

Bifrost HTTP transport before version 2.0.0 exposes an unauthenticated plugin installation endpoint (POST /api/plugins) that accepts HTTP URLs as plugin paths, enabling SSRF on all build types and unauthenticated remote code execution on dynamically linked builds. Because management authentication is disabled by default (governance.auth_config.is_enabled=false), no credentials are required to trigger the flaw; the shared-object loader fetches the attacker-supplied URL, writes it as a temporary .so, and on DYNAMIC=1 builds calls plugin.Open() which immediately executes the plugin's Init() function as the Bifrost process user. Reported by JFrog, the fix ships in transports/v2.0.0, adding an SSRF-safe dial context (SSRFSafeDialContextWithAllowlist) around plugin downloads; no public exploit code or active exploitation has been confirmed at time of analysis.

RemediationAI

Upgrade to Bifrost transports/v2.0.0, released at https://github.com/maximhq/bifrost/releases/tag/transports/v2.0.0, which patches the plugin download path by routing it through SSRFSafeDialContextWithAllowlist (PR #5763, commit e0057ff355f831c251eabe9d0e44f3a3748532c6). If immediate upgrade is not possible, enable management authentication by setting governance.auth_config.is_enabled=true - this requires credentials for POST /api/plugins and eliminates the unauthenticated attack surface entirely, though operators must update any automation relying on the open management endpoint. As a secondary compensating control, restrict network access to the Bifrost management API port to trusted IP ranges only; this reduces external exposure but does not prevent SSRF from an authenticated internal caller. Dynamically linked deployments (DYNAMIC=1) should be treated as the highest priority for upgrading, as they are exposed to full RCE rather than SSRF only.

Affected VersionsENISA

Bifrost 0 <2.0.0

Affected Packages

euvd bifrost fix: 2.0.0

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

Bifrost is a Go-based HTTP transport and proxy framework (cpe:2.3:a:maximhq:bifrost) that supports extensibility through custom Go plugins loaded as shared objects. In versions before 2.0.0, the plugin registration handler at POST /api/plugins treats any http-prefixed path as a download URL: it fetches the remote body, writes it to a temporary .so file, and passes that path to Go's plugin.Open(). On dynamically linked builds (compiled with DYNAMIC=1 or equivalent non-static flags), plugin.Open() successfully loads and initializes the shared object, running its Init() function synchronously in the Bifrost process - classified as CWE-94 (Improper Control of Generation of Code). On the published statically linked Docker image, plugin.Open() fails with 'Dynamic loading not supported', so the HTTP fetch still occurs (enabling SSRF to probe internal hosts) but code execution is blocked. The fix in PR #5763 (commit e0057ff355f831c251eabe9d0e44f3a3748532c6) introduces SSRFSafeDialContextWithAllowlist in core/network/ssrf.go, routing plugin downloads through a DNS-rebinding-resistant dialer that blocks private IP targets unless explicitly allowlisted by the operator.

Know when Bifrost 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

Vendor (JFROG) PRIMARY 8.1 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

Default no-auth management API enables network exploitation; AC:H reflects both the dynamic-build prerequisite and Go plugin ABI matching requirement for RCE.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (JFROG).

CVSS VectorVendor: JFROG

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

DescriptionCVE.org

Bifrost HTTP transport before 2.0.0 accepts an enabled custom plugin whose path is an HTTP URL through unauthenticated POST /api/plugins when management authentication is disabled (the default, governance.auth_config.is_enabled=false). The shared-object loader treats an http-prefixed path as a download URL, writes the body to a temporary .so, and passes it to Go's plugin.Open. After a successful open, optional Init runs immediately with the supplied config as the Bifrost process user. On documented dynamically linked builds (DYNAMIC=1 / no static-link flags), which the vendor requires for custom Go plugins, plugin.Open is expected to succeed and this is unauthenticated remote code execution. On the published statically linked Docker image, plugin.Open fails with Dynamic loading not supported, so that build class is only server-side request forgery. Attack complexity is High because the attacker cannot force RCE on the default static image and a loadable plugin must match the host Go version, OS, architecture, and linkage. The 1.6.x HTTP transport line through 1.6.11 does not contain the fix.

Technical POC Analysis

The bug is CWE-94 (unrestricted dynamic code loading, facilitated by missing authentication, CWE-284) in Bifrost's custom plugin management.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Latest POC

2 public PoC links from nuclei

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

Bifrost HTTP transport versions before 2.0.0 contain a critical vulnerability in the default-enabled plugin installation feature that allows unauthorized attackers to take full control of affected systems or redirect network traffic through compromised servers. Default configurations are vulnerable out-of-the-box. Any organization running Bifrost in production faces immediate risk of data breach or system shutdown without immediate patching.

Business Impact: High
Compensating Controls

Vendor-released patch: transports/v2.0.0

Threat Model

5 threats: Elevation of Privilege, Repudiation, Tampering and 2 more

5-step attack chain with trust boundaries and controls

Full threat model - attack chain, trust boundaries, controls per stage and evidence - is part of the Pro and Business plans.

Threat Intelligence Overview

EPSS Score
0.6%
Top 53% exploitable
Prevalence
Low
niche Go AI gateway proxy, limited enterprise footprint
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

61
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +40
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy