Executive brief
The MCP Registry, a tool for managing and publishing software packages, contains a flaw in how it handles GitHub authentication. Because different installations of the registry share the same identification settings, a security token used for one registry can be reused on another. This could allow a malicious or compromised registry to impersonate a legitimate user and publish unauthorized software updates under that user's name on a different registry instance.
Technical details
The MCP Registry's GitHub OIDC implementation uses a hardcoded global audience string ('mcp-registry') for both client-side token requests and server-side validation. When a user authenticates to a registry (e.g., a staging or attacker-controlled instance), the publisher requests a GitHub ID token with this shared audience. Because the server-side validation logic in 'internal/api/handlers/v0/auth/github_oidc.go' only checks for this fixed string and does not verify the specific registry instance URL, the token can be replayed to any other MCP Registry deployment. An attacker who observes this token can exchange it for a registry JWT, gaining 'io.github.<owner>/*' publish permissions on the victim registry. This has been patched in version 1.7.6 by implementing instance-specific audience validation.
Affected products
- modelcontextprotocol registry < 1.7.6
Timeline
- 2026-05-04: disclosed
- 2026-05-08: advisory
- 2026-05-08: patched: Fixed in version 1.7.6