{"id":"CVE-2026-45781","aliases":["GHSA-2v5f-5r6w-p67r","GO-2026-5008"],"url":"https://o3.security/vulnerability/CVE-2026-45781","summary":"MCP Registry: OCI ownership validation fails open on upstream rate limits, allowing attacker-controlled package claims","details":"The MCP Registry provides MCP clients with a list of MCP servers, like an app store for MCP servers. Prior to 1.7.9, OCI ownership validation skips label-match check when upstream OCI registry returns HTTP 429, letting any authenticated publisher bind their io.github.<user>/* namespace to OCI images they do not control. internal/validators/registries/oci.go:104-119 fails open on http.StatusTooManyRequests: when the registry's anonymous fetch to the upstream OCI registry is rate-limited, ValidateOCI returns nil and the publish is accepted without ever running the io.modelcontextprotocol.server.name label-match check at lines 122-141. That label check is the only cross-system ownership proof the registry applies to OCI packages — every other registry type (NPM, PyPI, NuGet, MCPB) treats a non-200 upstream response as a hard error. This vulnerability is fixed in 1.7.9.","published":"2026-05-14T21:00:49.961Z","modified":"2026-08-12T03:51:30.408090175Z","cvss":{"score":3.5,"severity":"LOW","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:N"},"epss":{"score":0.00206,"percentile":0.11026,"asOf":"2026-08-16"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"Go","name":"github.com/modelcontextprotocol/registry","fixedVersion":"1.7.9"}],"fix":null,"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45781.json"},{"type":"ADVISORY","url":"https://github.com/modelcontextprotocol/registry/security/advisories/GHSA-2v5f-5r6w-p67r"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-45781"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:30.408090175Z"}}