Vulnerability Research

44 published disclosures, disclosed through GitHub Security Advisories. Every entry links to its advisory and fix; technical writeups are added as each disclosure clears. Filter by severity, year or ecosystem, or search the text.

Severity
Year
Ecosystem

Published advisories

GHSA-2v4r-q3fw-82j7 8.8high

orion-cli: unauthenticated MCP admin proxy lets DNS-rebound web pages administer Orion via disabled Host-guard

orion-cli mcp serve --http disables the MCP SDK's default Host/Origin allowlist and adds no auth middleware of its own, while binding 0.0.0.0:8081 by default, so a DNS-rebound browser can reach the endpoint and call any of the 32 administrative tools (workflow/channel/connector CRUD, data injection, DLQ purge, engine reload) with no credential, under whatever backend admin API key the operator configured.

CWE-306CWE-346CWE-1188
orion-cliaffects < 1.2.02026-09-25
CVE-2026-61559 9.6critical

@zereight/mcp-gitlab vulnerable to server-side request forgery

Unvalidated user-controlled URLs in the GitLab MCP server let an attacker make the host issue requests to arbitrary destinations, reaching internal services.

CWE-918
@zereight/mcp-gitlabaffects >= 0.0.1, < 2.1.272026-09-15
GHSA-fcj2-hj27-hj26 7.2high

gitlab-mcp-server: caller-controlled GITLAB-URL enables SSRF in legacy HTTP mode

When no fixed GitLab URL is configured, the legacy HTTP MCP handler takes the GitLab base URL from a caller-supplied GITLAB-URL header, validates only syntax (no private/loopback/link-local/metadata check), and sends GitLab discovery requests with the caller's token to that URL before the token is ever verified, letting any network client force the server to make requests to internal targets.

CWE-918
github.com/jmrplens/gitlab-mcp-serveraffects >= 1.1.0, <= 2.7.5 (module path github.com/jmrplens/gitlab-mcp-server/v2; neither v1 nor v2 module path received a patch)2026-09-14
GHSA-pf89-39r3-75vq high

deepseek-mcp-server: DNS rebinding bypasses Host-validation guard in the shipped Docker default, exposing the DeepSeek API key

The MCP SDK's Host-header validation only installs for host=127.0.0.1/localhost/::1 or an explicit allowedHosts list; the project's own Dockerfile/docker-compose.yml runs with host=0.0.0.0 and no allowedHosts, so a DNS-rebound browser can reach the endpoint and invoke deepseek_chat/deepseek_fim under the operator's API key with no credential.

CWE-346
deepseek-mcp-serveraffects >= 1.8.0, < 2.3.02026-09-05
GHSA-2qr4-ww3x-mq4g 5.8medium

gomodel: DNS rebinding bypasses the project's own claimed Origin-check defense, exposing the aggregated MCP tool surface

gomodel documents a DNS-rebinding defense (http.CrossOriginProtection with no trusted-origin configured), but its fallback check only compares Origin's hostname to Host's hostname, which a real DNS rebind always satisfies, letting an unauthenticated rebound caller reach the MCP gateway and its aggregated tools under the project's own documented Quick Start.

CWE-350
gomodelaffects >= v0.1.52, <= v0.1.792026-08-30
GHSA-4pvf-9j6w-8m88 critical

testkube: unauthenticated Streamable HTTP MCP endpoint grants full control of Testkube workflows and execution data

Testkube's MCP server in Streamable HTTP mode builds its transport with no inbound auth middleware, so any network client can complete the handshake and call any of the 32 registered tools, including run_workflow, create_workflow, and abort_workflow_execution, using the server's own outbound TK_ACCESS_TOKEN; the Docker image also silently escalates the bind host to 0.0.0.0 when this transport is enabled.

CWE-306
github.com/kubeshop/testkubeaffects <= dd574c02026-08-19
GHSA-r9cw-h8gp-g9hf medium

yutu: MCP tools delete YouTube videos, playlists, and comments with no confirmation gate

yutu's CLI enforces a real confirmation prompt (or --yes flag) before destructive operations, but all 15 destructive MCP tool handlers wire directly to the same delete functions and skip that gate entirely, letting any MCP caller delete videos, comments, playlists, subscriptions, and other resources with no human-facing confirmation.

CWE-862
github.com/eat-pray-ai/yutuaffects <= 0.10.11-dev22026-08-19
GHSA-9mpj-6v9h-42pj high

hermes-action-bridge: hermes_approve accepts its own prior tool call as human approval, letting unreviewed side effects execute

hermes_approve requires only a bare approvalId the calling MCP client already received from its own prior hermes_prepare call, with no out-of-band or human-facing check, so any MCP client can prepare and approve an action in the same session and dispatch a real side effect (message, payment, git push, credential change) with no human ever reviewing it.

CWE-862
hermes-action-bridgeaffects <= 0.6.22026-08
GHSA-hhq4-w9j2-38hg low

mcp-web-validator: SSRF guard (assertPublicHttpUrl) is bypassable via DNS rebinding, defeating the documented private-address block

assertPublicHttpUrl validates a hostname's resolved DNS addresses against a private/loopback/link-local blocklist but discards those addresses; fetch() and Chromium navigation then re-resolve the hostname independently, so an attacker controlling DNS can answer the validation lookup with a public IP and the connect-time lookup with a private/loopback address moments later, defeating the SSRF guard for links.broken, html.url, and screenshot.capture.

CWE-918
mcp-web-validatoraffects <= 1.0.02026-08
CVE-2026-95856 10.0critical

mcp-server-circleci: unauthenticated command injection in run_evaluation_tests leads to RCE in the CircleCI runner

The promptFiles[].fileName parameter of run_evaluation_tests is interpolated unquoted into shell commands submitted to the CircleCI API; in the documented shared-token remote deployment mode this requires no authentication, letting an unauthenticated caller run arbitrary shell under the server's CircleCI token.

CWE-78
mcp-server-circleciaffects < 0.16.12026-07-22
CVE-2026-55642 9.8critical

Unauthenticated arbitrary SQL execution in dbx-web

dbx-web fails open when no password is configured: authentication is skipped entirely, so an unauthenticated client can execute arbitrary SQL against connected databases.

CWE-306
t8y2/dbxaffects <= 0.5.502026-07-11
GHSA-888h-2xjf-cgj7 high

dbx: browser DNS rebinding lets websites execute SQL through local DBX Web

DBX Web binds all interfaces with no password configured by default and forwards every /api request when no password hash exists, combined with a fully permissive CORS policy, so a DNS-rebound browser can reach a victim's local DBX Web instance and execute database queries and connection management calls with no credential.

CWE-306CWE-346CWE-350
dbxaffects <= 0.5.362026-06-22
ibmi-mcp-server: browser DNS rebinding can control IBM i SQL tools through server-held DB2i credentials high

ibmi-mcp-server: browser DNS rebinding can control IBM i SQL tools through server-held DB2i credentials

ibmi-mcp-server's HTTP MCP transport installs CORS but does not reject attacker-controlled Host and Origin values before MCP dispatch, and skips auth middleware entirely when MCP_AUTH_MODE=none, so a DNS-rebound public website can become an MCP client for the IBM i schema and SQL tooling under the server's own DB2i credentials.

CWE-346CWE-306
ibmi-mcp-server bounty
discourse-mcp: DNS rebinding allows use of server-held Discourse API privileges high

discourse-mcp: DNS rebinding allows use of server-held Discourse API privileges

Discourse MCP's HTTP transport accepts unauthenticated MCP JSON-RPC requests and does not validate Host or Origin, so a DNS-rebound website can reach a victim's local MCP endpoint and call Discourse tools under the API key configured in the MCP process, gaining use of its effective Discourse privileges without ever learning the key itself.

CWE-346
discourse-mcp bounty