Spring Security 安全公告

CVE-2019-3778:spring-security-oauth2中的开放重定向漏洞

严重 | 2019年2月21日 | CVE-2019-3778

描述

Spring Security OAuth 版本 **2.3** 低于 **2.3.5**,以及版本 **2.2** 低于 **2.2.4**,版本 **2.1** 低于 **2.1.4**,版本 **2.0** 低于 **2.0.17**,以及其他旧的、不受支持的版本可能容易受到开放重定向攻击,从而导致授权码泄露。恶意用户或攻击者可以利用授权码授予类型向授权端点发出请求,并通过“redirect_uri”参数指定被操纵的重定向URI。这可能导致授权服务器将资源所有者用户代理重定向到攻击者控制下的URI,并泄露授权码。

此漏洞会影响满足以下所有条件的应用程序:

  • 充当授权服务器的角色(例如,@EnableAuthorizationServer
  • AuthorizationEndpoint中使用DefaultRedirectResolver

此漏洞**不会**影响以下应用程序:

  • 充当授权服务器的角色并使用DefaultRedirectResolver以外的其他RedirectResolver实现
  • 仅充当资源服务器的角色(例如,@EnableResourceServer
  • 仅充当客户端的角色(例如,@EnableOAuthClient

受影响的Spring产品和版本

  • Spring Security OAuth **2.3** 至 **2.3.4**
  • Spring Security OAuth **2.2** 至 **2.2.3**
  • Spring Security OAuth **2.1** 至 **2.1.3**
  • Spring Security OAuth **2.0** 至 **2.0.16**
  • 旧的、不受支持的版本也受影响

缓解措施

受影响版本的使用者应采取以下缓解措施:

  • **2.3.x** 用户应升级到 **2.3.5**
  • **2.2.x** 用户应升级到 **2.2.4**
  • **2.1.x** 用户应升级到 **2.1.4**
  • **2.0.x** 用户应升级到 **2.0.17**
  • 较旧的版本应升级到受支持的分支

无需其他缓解步骤。

对于 **Spring Boot 1.5.x** 和 **Spring IO Platform Cairo** 的用户,强烈建议将 spring-security-oauth 版本覆盖到包含 CVE 修复程序的最新版本。为了覆盖版本,您需要声明/设置属性spring-security-oauth.version

以下是 **Spring Boot 1.5.x** 用户的说明。

要使用 Maven 覆盖属性,请在 pom 的部分中声明该属性


2.0.17.RELEASE

要使用 Gradle 覆盖属性,请在您的build.gradle脚本中配置该值

ext['spring-security-oauth.version'] = '2.0.17.RELEASE'

或在gradle.properties

spring-security-oauth.version=2.0.17.RELEASE

**注意:**相同的说明适用于 **Spring IO Platform Cairo** 用户。但是,要指定的版本是 **2.2.4.RELEASE**。

致谢

此问题由来自 dotloop 的 Dirk Koehler (github.com/phrinx) 识别并负责任地报告。特别感谢来自 NTT 的 Macchinetta Framework 开发团队、NTT Comware、NTT DATA Corporation 帮助验证解决方案并识别利用此漏洞的其他方法。

参考资料

历史记录

2019-02-21:发布初始漏洞报告。

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看Spring社区中所有即将举行的活动。

查看全部