Spring 安全公告
此页面列出了 Spring 安全公告。
CVE-2020-5405:spring-cloud-config-server 中的目录遍历
CVE-2020-5397:通过 Spring MVC 或 Spring WebFlux 的 CORS 预检请求进行 CSRF 攻击
CVE-2020-5398:通过 Spring MVC 或 Spring WebFlux 应用程序从请求输入获取的“Content-Disposition”标头进行 RFD 攻击
描述
在 Spring Framework 5.2.x 版本(早于 5.2.3)、5.1.x 版本(早于 5.1.13)和 5.0.x 版本(早于 5.0.16)中,当应用程序在响应中设置“Content-Disposition”标头时,如果文件名属性来自用户提供的输入,则该应用程序容易受到反射文件下载 (RFD) 攻击。
具体而言,当满足以下所有条件时,应用程序容易受到攻击
- 标头使用 org.springframework.http.ContentDisposition 准备。
- 文件名通过以下之一设置
- ContentDisposition.Builder#filename(String),或
- ContentDisposition.Builder#filename(String, US_ASCII)
- 文件名的值来自用户提供的输入。
- 应用程序未对用户提供的输入进行清理。
- 攻击者通过响应的下载内容注入恶意命令(有关详细信息,请参阅 RFD 论文参考)。
如果满足以下任何条件,则应用程序不会受到攻击
- 应用程序未设置“Content-Disposition”响应标头。
- 标头未使用 org.springframework.http.ContentDisposition 准备。
- 文件名通过以下之一设置
- ContentDisposition.Builder#filename(String, UTF_8),或
- ContentDisposition.Builder#filename(String, ISO_8859_1)
- 文件名不是来自用户提供的输入。
- 文件名来自用户提供的输入,但已由应用程序清理。
受影响的 Spring 产品和版本
- Spring Framework
- 5.2.0 至 5.2.2
- 5.1.0 至 5.1.12
- 5.0.0 至 5.0.15
缓解措施
受影响版本的使用者应应用以下缓解措施。5.2.x 使用者应升级到 5.2.3。5.1.x 使用者应升级到 5.1.13。5.0.x 使用者应升级到 5.0.16。无需其他步骤。已修复此问题的版本包括
- Spring Framework
- 5.2.3
- 5.1.13
- 5.0.16
鸣谢
此问题由 EPAM 的 Roman Shalymov 发现并负责任地报告。
参考
CVE-2019-16869:Reactor Netty 使用了易受攻击版本的 Netty
CVE-2019-11284:Reactor Netty 中重定向时的身份验证泄漏
CVE-2019-11272:PlaintextPasswordEncoder 认证为 null 的编码密码
描述
Spring Security 4.2.x 版本(直至 4.2.12)以及较旧的不受支持的版本支持使用 PlaintextPasswordEncoder 的纯文本密码。如果使用受影响版本的 Spring Security 的应用程序正在利用 PlaintextPasswordEncoder,并且用户具有 null 编码密码,则恶意用户(或攻击者)可以使用“null”作为密码进行身份验证。
受影响的 Spring 产品和版本
- Spring Security 4.2 至 4.2.12
- 较旧的不受支持的版本也受到影响
- 请注意,Spring Security 5+ 不受此漏洞影响。
缓解措施
受影响版本的使用者应应用以下缓解措施
- 4.2.x 使用者应升级到 4.2.13
- 较旧的版本应升级到受支持的分支
无需其他缓解步骤。
鸣谢
此问题由 mytaxi 的 Tim Büthe 和 Daniel Neagaru 发现并负责任地报告。
历史记录
2019-06-19:发布初始漏洞报告
CVE-2019-11269:spring-security-oauth2 中的开放重定向器
描述
Spring Security OAuth 2.3 版本(早于 2.3.6)、2.2 版本(早于 2.2.5)、2.1 版本(早于 2.1.5)和 2.0 版本(早于 2.0.18)以及较旧的不受支持的版本可能容易受到开放重定向攻击,这可能导致授权代码泄漏。恶意用户或攻击者可以使用授权代码授予类型向授权端点发出请求,并通过redirect_uri
参数指定经过修改的重定向 URI。这可能导致授权服务器将资源所有者用户代理重定向到攻击者控制下的 URI,并泄漏授权代码。
此漏洞会暴露满足以下所有要求的应用程序
- 充当授权服务器的角色(例如
@EnableAuthorizationServer
) - 在
AuthorizationEndpoint
中使用DefaultRedirectResolver
此漏洞**不会**暴露以下应用程序
- 充当授权服务器的角色并使用除
DefaultRedirectResolver
之外的其他RedirectResolver
实现 - 仅充当资源服务器的角色(例如
@EnableResourceServer
) - 仅充当客户端的角色(例如
@EnableOAuthClient
)
受影响的 Spring 产品和版本
- Spring Security OAuth 2.3 至 2.3.5
- Spring Security OAuth 2.2 至 2.2.4
- Spring Security OAuth 2.1 至 2.1.4
- Spring Security OAUth 2.0 至 2.0.17
缓解措施
受影响版本的使用者应应用以下缓解措施
- 2.3.x 使用者应升级到 2.3.6
- 2.2.x 使用者应升级到 2.2.5
- 2.1.x 使用者应升级到 2.1.5
- 2.0.x 使用者应升级到 2.0.18
- 较旧的版本应升级到受支持的分支
无需其他缓解步骤。
对于使用Spring Boot 1.5.x 和 Spring IO Platform Cairo 的用户,强烈建议将spring-security-oauth
版本覆盖到包含 CVE 修复程序的最新版本。为了覆盖版本,您需要声明/设置属性spring-security-oauth.version
。
以下是Spring Boot 1.5.x 用户的说明。
要使用 Maven 覆盖属性,请在 pom 的
部分声明该属性
要使用 Gradle 覆盖属性,请在 build.gradle 脚本中配置该值
ext['spring-security-oauth.version'] = '2.0.18.RELEASE'
或在 gradle.properties 中
spring-security-oauth.version=2.0.18.RELEASE
注意:相同的说明适用于Spring IO Platform Cairo 的用户。但是,要指定的版本为2.2.5.RELEASE。
鸣谢
此问题由 Mike Noordermeer 发现并负责任地报告。
参考
- Spring Security OAuth 文档,请参阅“授权服务器配置”部分。
- 针对
@EnableAuthorizationServer
的示例配置...
使用 Spring Data JPA 示例匹配器导致的额外信息泄露
描述
这影响了 Spring Data JPA 2.1.6 及之前版本、2.0.14 及之前版本和 1.11.20 及之前版本。当提供恶意构造的示例值时,使用 ExampleMatcher.StringMatcher.STARTING、ExampleMatcher.StringMatcher.ENDING 或 ExampleMatcher.StringMatcher.CONTAINING 可能会返回比预期更多的结果。
受影响的 Spring 产品和版本
- Spring Data JPA 2.1 至 2.1.7
- Spring Data JPA 2.0 至 2.0.14
- Spring Data JPA 1.11 至 1.11.21
- 较旧的不受支持的版本也受到影响
缓解措施
受影响版本的使用者应应用以下缓解措施
- 2.1.x 用户应升级到 2.1.8(包含在 Spring Boot 2.1.5 中)
- 2.0.x 用户应升级到 2.1.8(包含在 Spring Boot 2.1.5 中)
- 1.11.x 用户应升级到 1.11.22(包含在 Spring Boot 1.5.20 中)
- 较旧的版本应升级到受支持的分支
- 没有其他缓解措施。请注意,在当前版本中,Spring Data 和 Spring Boot 的 2.0 分支已停止维护,我们强烈建议您升级。
鸣谢
此问题由 Thaveethu Vignesh 发现并负责任地报告。
参考
CVE-2019-3799:使用 spring-cloud-config-server 进行目录遍历
描述
Spring Cloud Config 2.1.2 之前的 2.1.x 版本、2.0.4 之前的 2.0.x 版本、1.4.6 之前的 1.4.x 版本以及旧的未受支持版本允许应用程序通过 spring-cloud-config-server 模块提供任意配置文件。恶意用户或攻击者可以使用精心构造的 URL 发送请求,从而导致目录遍历攻击。
受影响的 Spring 产品和版本
- Spring Cloud Config 2.1.0 至 2.1.1
- Spring Cloud Config 2.0.0 至 2.0.3
- Spring Cloud Config 1.4.0 至 1.4.5
- 较旧的不受支持的版本也受到影响
缓解措施
受影响版本的使用者应应用以下缓解措施
- 2.1.x 用户应升级到 2.1.2
- 2.0.x 用户应升级到 2.0.4
- 1.4.x 用户应升级到 1.4.6
- 较旧的版本应升级到受支持的分支
- 请注意,spring-cloud-config-server 仅应在内部网络中对需要它的客户端可用,并且应使用 Spring Security 进行保护,这将此漏洞的暴露限制在具有内部网络访问权限的用户和经过适当身份验证的用户。
鸣谢
此问题由 PingAn Galaxy Lab 的 Vern ([email protected]) 发现并负责任地报告。
参考
报告漏洞
要报告 Spring 产品组合中项目的安全漏洞,请参阅安全策略