{"id":"CVE-2026-45781","sourceIdentifier":"security-advisories@github.com","published":"2026-05-14T21:16:48.480","lastModified":"2026-10-26T14:10:00.130","vulnStatus":"Deferred","cveTags":[],"descriptions":[{"lang":"en","value":"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."},{"lang":"es","value":"El Registro MCP proporciona a los clientes MCP una lista de servidores MCP, como una tienda de aplicaciones para servidores MCP. Antes de la versión 1.7.9, la validación de propiedad de OCI omite la comprobación de coincidencia de etiquetas cuando el registro OCI ascendente devuelve HTTP 429, permitiendo a cualquier editor autenticado vincular su espacio de nombres io.github.[user]/* a imágenes OCI que no controlan. internal/validators/registries/oci.go:104-119 falla de forma abierta en http.StatusTooManyRequests: cuando la obtención anónima del registro al registro OCI ascendente está limitada por tasa, ValidateOCI devuelve nulo y la publicación es aceptada sin ejecutar nunca la comprobación de coincidencia de etiquetas io.modelcontextprotocol.server.name en las líneas 122-141. Esa comprobación de etiquetas es la única prueba de propiedad entre sistemas que el registro aplica a los paquetes OCI; todos los demás tipos de registro (NPM, PyPI, NuGet, MCPB) tratan una respuesta ascendente que no es 200 como un error grave. Esta vulnerabilidad está corregida en la versión 1.7.9."}],"affected":[{"source":"security-advisories@github.com","affectedData":[{"vendor":"modelcontextprotocol","product":"registry","versions":[{"version":"< 1.7.9","status":"affected"}]}]}],"metrics":{"cvssMetricV31":[{"source":"security-advisories@github.com","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:N","baseScore":3.5,"baseSeverity":"LOW","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"REQUIRED","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"LOW","availabilityImpact":"NONE"},"exploitabilityScore":2.1,"impactScore":1.4}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-05-16T01:05:36.535544Z","id":"CVE-2026-45781","options":[{"exploitation":"poc"},{"automatable":"no"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"weaknesses":[{"source":"security-advisories@github.com","type":"Secondary","description":[{"lang":"en","value":"CWE-636"}]}],"references":[{"url":"https://github.com/modelcontextprotocol/registry/security/advisories/GHSA-2v5f-5r6w-p67r","source":"security-advisories@github.com"},{"url":"https://github.com/modelcontextprotocol/registry/security/advisories/GHSA-2v5f-5r6w-p67r","source":"134c704f-9b21-4f2e-91b3-4a467353bcc0"}]}