{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2026-90898",
        "assignerOrgId": "48a46f29-ae42-4e1d-90dd-c1676c1e5e6d",
        "state": "PUBLISHED",
        "assignerShortName": "JFROG",
        "dateReserved": "2026-09-14T10:13:28.161Z",
        "datePublished": "2026-09-14T10:18:53.454Z",
        "dateUpdated": "2026-09-14T11:19:46.276Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "48a46f29-ae42-4e1d-90dd-c1676c1e5e6d",
                "shortName": "JFROG",
                "dateUpdated": "2026-09-14T10:18:53.454Z"
            },
            "title": "Bifrost unauthenticated remote code execution via MCP stdio client registration",
            "problemTypes": [
                {
                    "descriptions": [
                        {
                            "lang": "en",
                            "cweId": "CWE-306",
                            "description": "CWE-306 Missing Authentication for Critical Function",
                            "type": "CWE"
                        }
                    ]
                },
                {
                    "descriptions": [
                        {
                            "lang": "en",
                            "cweId": "CWE-284",
                            "description": "CWE-284 Improper Access Control",
                            "type": "CWE"
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "vendor": "maximhq",
                    "product": "Bifrost",
                    "platforms": [
                        "Linux",
                        "macOS"
                    ],
                    "collectionURL": "https://github.com/maximhq/bifrost",
                    "packageName": "github.com/maximhq/bifrost/transports",
                    "repo": "git://github.com/maximhq/bifrost",
                    "modules": [
                        "transports/bifrost-http",
                        "core/mcp"
                    ],
                    "programFiles": [
                        "transports/bifrost-http/handlers/mcp.go",
                        "transports/bifrost-http/handlers/middlewares.go"
                    ],
                    "versions": [
                        {
                            "status": "affected",
                            "version": "0",
                            "lessThan": "2.1.0",
                            "versionType": "semver"
                        }
                    ],
                    "defaultStatus": "unaffected"
                }
            ],
            "descriptions": [
                {
                    "lang": "en",
                    "value": "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.\n\n\n\nThe 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).\n\n\n\n transports/v2.1.0 refuses an unauthenticated stdio registration with 403. transports/v2.0.0 still allows it.",
                    "supportingMedia": [
                        {
                            "type": "text/html",
                            "base64": false,
                            "value": "<p>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.</p><p>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).</p><p>&nbsp;transports/v2.1.0 refuses an unauthenticated stdio registration with 403. transports/v2.0.0 still allows it.</p>"
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://github.com/maximhq/bifrost/pull/6757",
                    "name": "PR #6757: refuse unauthenticated stdio MCP registration",
                    "tags": [
                        "patch"
                    ]
                },
                {
                    "url": "https://github.com/maximhq/bifrost/commit/12e170352bd25eab1ae9ba16611f1797d1fd8fdc",
                    "name": "Merge commit for PR #6757",
                    "tags": [
                        "patch"
                    ]
                },
                {
                    "url": "https://github.com/maximhq/bifrost/releases/tag/transports/v2.1.0",
                    "name": "Bifrost HTTP v2.1.0 (first release containing the fix)",
                    "tags": [
                        "release-notes"
                    ]
                },
                {
                    "url": "https://github.com/maximhq/bifrost",
                    "name": "Bifrost repository",
                    "tags": [
                        "product"
                    ]
                }
            ],
            "metrics": [
                {
                    "format": "CVSS",
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "GENERAL"
                        }
                    ],
                    "cvssV3_1": {
                        "version": "3.1",
                        "attackVector": "NETWORK",
                        "attackComplexity": "LOW",
                        "privilegesRequired": "NONE",
                        "userInteraction": "NONE",
                        "scope": "UNCHANGED",
                        "confidentialityImpact": "HIGH",
                        "integrityImpact": "HIGH",
                        "availabilityImpact": "HIGH",
                        "baseSeverity": "CRITICAL",
                        "baseScore": 9.8,
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
                    }
                }
            ],
            "configurations": [
                {
                    "lang": "en",
                    "value": "Management API reachable and governance.auth_config.is_enabled=false, which is the documented default. Confirmed on maximhq/bifrost v1.6.3. Fixed in transports/v2.1.0 (2026-09-08). An operator who enables management authentication and keeps the admin listener off untrusted networks is not exposed to the unauthenticated form of this issue.",
                    "supportingMedia": [
                        {
                            "type": "text/html",
                            "base64": false,
                            "value": "<p>Management API reachable and governance.auth_config.is_enabled=false, which is the documented default. Confirmed on maximhq/bifrost v1.6.3. Fixed in transports/v2.1.0 (2026-09-08). An operator who enables management authentication and keeps the admin listener off untrusted networks is not exposed to the unauthenticated form of this issue.</p>"
                        }
                    ]
                }
            ],
            "workarounds": [
                {
                    "lang": "en",
                    "value": "Set governance.auth_config.is_enabled to true, use strong administrator credentials, and firewall the management listener.",
                    "supportingMedia": [
                        {
                            "type": "text/html",
                            "base64": false,
                            "value": "<p>Set governance.auth_config.is_enabled to true, use strong administrator credentials, and firewall the management listener.&nbsp;</p>"
                        }
                    ]
                }
            ],
            "solutions": [
                {
                    "lang": "en",
                    "value": "Upgrade Bifrost HTTP transport to 2.1.0 or later. PR #6757 returns 403 for unauthenticated stdio MCP client registration when dashboard authentication is disabled or unconfigured. Authenticated admins can still add stdio clients. The 1.6.x line through 1.6.11 and transports/v2.0.0 do not include this change.",
                    "supportingMedia": [
                        {
                            "type": "text/html",
                            "base64": false,
                            "value": "<p>Upgrade Bifrost HTTP transport to 2.1.0 or later. PR #6757 returns 403 for unauthenticated stdio MCP client registration when dashboard authentication is disabled or unconfigured. Authenticated admins can still add stdio clients. The 1.6.x line through 1.6.11 and transports/v2.0.0 do not include this change.</p>"
                        }
                    ]
                }
            ],
            "exploits": [
                {
                    "lang": "en",
                    "value": "JFrog has a private proof of concept. An unauthenticated POST /api/mcp/client with connection_type stdio and attacker-chosen command and args starts the program in the gateway. Public exploit details are not included in this record.",
                    "supportingMedia": [
                        {
                            "type": "text/html",
                            "base64": false,
                            "value": "<p>JFrog has a private proof of concept. An unauthenticated POST /api/mcp/client with connection_type stdio and attacker-chosen command and args starts the program in the gateway. Public exploit details are not included in this record.</p>"
                        }
                    ]
                }
            ],
            "timeline": [
                {
                    "time": "2026-07-13T10:27:00.000Z",
                    "lang": "en",
                    "value": "Reported to the Bifrost maintainers (GHSA-86gf-xh3g-rvxq)"
                },
                {
                    "time": "2026-09-02T15:14:00.000Z",
                    "lang": "en",
                    "value": "Fix merged upstream (PR #6757)"
                },
                {
                    "time": "2026-09-08T15:15:00.000Z",
                    "lang": "en",
                    "value": "Fix first shipped in Bifrost HTTP v2.1.0"
                }
            ],
            "credits": [
                {
                    "lang": "en",
                    "value": "Yuval Moravchick | JFrog",
                    "type": "finder"
                }
            ],
            "source": {
                "discovery": "EXTERNAL"
            },
            "x_generator": {
                "engine": "Vulnogram 1.0.4"
            }
        },
        "adp": [
            {
                "metrics": [
                    {
                        "other": {
                            "type": "ssvc",
                            "content": {
                                "id": "CVE-2026-90898",
                                "role": "CISA Coordinator",
                                "options": [
                                    {
                                        "Exploitation": "none"
                                    },
                                    {
                                        "Automatable": "yes"
                                    },
                                    {
                                        "Technical Impact": "total"
                                    }
                                ],
                                "version": "2.0.3",
                                "timestamp": "2026-09-14T11:01:44.207374Z"
                            }
                        }
                    }
                ],
                "title": "CISA ADP Vulnrichment",
                "providerMetadata": {
                    "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
                    "shortName": "CISA-ADP",
                    "dateUpdated": "2026-09-14T11:19:46.276Z"
                }
            }
        ]
    }
}