{"id":"GHSA-qjp4-4jvr-xqg3","summary":"Spring AI MCP Security: Unvalidated URL Fetching (SSRF)","details":"### Summary\n\nThe mcp-security framework fails to implement the mandatory SSRF mitigations outlined in the Model Context Protocol (MCP) [security specifications](https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices#mitigation-3). Specifically, it processes untrusted URLs for OAuth-related discovery and metadata without verifying if the targets are malicious or internal to the network.\n\nThis only affects installations with Dynamic Client Registration (DCR) enabled:\n\n```properties\nspring.ai.mcp.client.authorization.dynamic-client-registration.enabled=true\n```\n\nDCR does not validate URLs exposed by MCP Servers (protected resource metadata URL, authorization server URL) and Authorization Servers (all OAuth2 endpoints).\n\n### Workaround\n\nWhen users need to perform DCR, they may provide their own `McpOAuth2ClientManager`. Both `McpMetadataDiscoveryService` and `DynamicClientRegistrationService` are also affected, if used, users should provide their own subclasses.\n\nAlternatively, users can provide the default implementations of these classes with a `RestClient` that implements URL filtering through `ClientHttpRequestInterceptor`.","aliases":["CVE-2026-45609"],"modified":"2026-06-09T10:45:17.169217117Z","published":"2026-05-18T13:29:29Z","database_specific":{"github_reviewed_at":"2026-05-18T13:29:29Z","nvd_published_at":"2026-05-29T15:16:23Z","cwe_ids":["CWE-918"],"severity":"HIGH","github_reviewed":true},"references":[{"type":"WEB","url":"https://github.com/spring-ai-community/mcp-security/security/advisories/GHSA-qjp4-4jvr-xqg3"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-45609"},{"type":"WEB","url":"https://github.com/spring-ai-community/mcp-security/pull/68"},{"type":"WEB","url":"https://github.com/spring-ai-community/mcp-security/commit/e6b67d8a67cd7acbee6e4c0741c385d62e3ed576"},{"type":"PACKAGE","url":"https://github.com/spring-ai-community/mcp-security"},{"type":"WEB","url":"https://github.com/spring-ai-community/mcp-security/releases/tag/v0.1.9"}],"affected":[{"package":{"name":"org.springaicommunity:mcp-client-security","ecosystem":"Maven","purl":"pkg:maven/org.springaicommunity/mcp-client-security"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.1.9"}]}],"versions":["0.0.1","0.0.2","0.0.3","0.0.4","0.0.5","0.0.6","0.1.0","0.1.1","0.1.2","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7","0.1.8"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-qjp4-4jvr-xqg3/GHSA-qjp4-4jvr-xqg3.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N"}]}