CVE-2026-37977Keycloak的User-Managed Access (UMA) token endpoint存在CORS头注入漏洞。由于系统在验证JWT签名前,直接使用客户端提供的JWT中的`azp`声明来设置`Access-Control-Allow-Origin`响应头,攻击者可利用此特性反射受控的CORS源。尽管后续授权可能失败,但这仍可能导致授权服务器错误响应中的低敏感信息泄露,削弱源隔离。该漏洞仅在目标客户端被错误配置为`webOrigins: ["*"]`时才可被利用。
该漏洞的核心在于验证逻辑的时序问题。Keycloak在处理UMA token请求时,未先验证JWT签名的有效性,而是直接解析JWT载荷中的`azp` (Authorized Party) 字段,并将其值直接赋值给HTTP响应头`Access-Control-Allow-Origin`。攻击者可以构造一个包含恶意`azp`值(如`https://evil.com`)的JWT并发送给目标端点。即使该JWT的签名无效或授权被后续流程拒绝,服务器在初步处理时已经将包含恶意源的CORS头返回给客户端。此时,如果受害者的Keycloak客户端错误配置了`webOrigins: ["*"]`,浏览器将不会阻止跨域请求,允许攻击者的脚本读取服务器返回的错误详情。这可能导致内部路径信息或调试信息的泄露,削弱了浏览器的同源策略保护机制。