← All finding types

mcp_transport_unauthenticated

CWE-306 OWASP ASI07

Mcp Transport Unauthenticated — a PullGuard finding type. Findings of this type appear in the PR comment, Step Summary, SARIF (GitHub Security tab / IDE viewers), and the HTML report, each with severity, location, and the remediation guidance below.

How to fix

Put the MCP HTTP/SSE endpoint behind authentication medium effort

# Before (VULNERABLE): SSE transport on all interfaces, no auth
mcp.run(transport="sse", host="0.0.0.0", port=8000)

# After (SAFE, option A): require a bearer token on every request
from starlette.middleware import Middleware
from starlette.middleware.authentication import AuthenticationMiddleware
app = mcp.sse_app(middleware=[Middleware(AuthenticationMiddleware, backend=BearerTokenBackend())])

# After (SAFE, option B): keep it local — stdio, or bind localhost behind an authed proxy
mcp.run(transport="stdio")

If the server is purely local, use stdio transport (no network surface) low effort

Triage

Suppress a confirmed non-issue with a committed .pullguardignore entry (pullguard ignore locally, or comment /pullguard ignore <fingerprint> <reason> on the PR — the fingerprint is printed in the PR comment’s Triage section). Entries support expiresAt for time-boxed snoozes.

Security findings at major or critical severity — and any critical finding — always surface: .pullguardignore cannot hide them. The reviewed paths that keep them visible are acknowledged (reviewed, stays in reports) and, for a confirmed false positive, a reasoned false_positive entry — visible and audited, excluded only from the merge block.