ZeroHour

CVE-2026-90898

niche

Unauthenticated Remote Code Execution via MCP Client Registration in Bifrost

CVSS 3.1
9.8 critical
EPSS
Published
()
Modified
AI analysis

Bifrost, an open-source MCP gateway, exposes a management API for registering MCP clients, and a stdio client registration is simply a command plus arguments that the gateway executes immediately upon addition, with no MCP handshake required. Because the default configuration ships with governance.auth_config.is_enabled=false, every caller of the management API is treated as a local admin, so a single unauthenticated POST to /api/mcp/client lets an attacker run an arbitrary program as the Bifrost process user (appuser in the official container image), giving full system compromise with CVSS 9.8. Any deployment running the vulnerable transports plugin with the management API network-reachable and default auth disabled is affected. The transports plugin v2.1.0 mitigates this by returning 403 for unauthenticated stdio registrations, but transports v2.0.0 still allows it. No public proof of concept and no in-the-wild exploitation are known at this time.

What to do: Upgrade the transports plugin to v2.1.0 or later, which rejects unauthenticated stdio client registrations with a 403. Independently, enable governance authentication by setting governance.auth_config.is_enabled=true and restrict network access to the management API (/api/mcp/client and related endpoints) to trusted networks only. Audit gateway logs for unexpected MCP client registrations or spawned child processes running as the appuser account.

Affected
maximhq (Maxwell Flint) Bifrost MCP Gateway - transports pluginv2.0.0 and earlier (fixed in v2.1.0)
Estimated exposure
nichelikely hundreds to low thousands of self-hosted Bifrost gateway deployments — Bifrost is a relatively young open-source, self-hosted MCP gateway with no public active-install counts or internet-scan data available, so this is a qualitative estimate for AI-infrastructure and development teams running it on their own…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Bifrost registers MCP clients through its management API. A stdio client is a command plus args. Bifrost starts that program in the gateway the moment the client is added. No MCP handshake required. The default is governance.auth_config.is_enabled=false. Auth off means every caller is a local admin. One unauthenticated POST /api/mcp/client is enough to run a program as the Bifrost process user (appuser on the official image). transports/v2.1.0 refuses an unauthenticated stdio registration with 403. transports/v2.0.0 still allows it.

Weakness
CWE-284, CWE-306
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.