Spring Security 安全公告

Spring 框架中的 CVE-2015-5211 RFD 攻击

| 2015年10月15日 | CVE-2015-5211

描述

在某些情况下,Spring 框架容易受到反射文件下载 (RFD) 攻击。攻击涉及恶意用户创建包含批处理脚本扩展名的 URL,导致响应被下载而不是呈现,并且还包括响应中反映的一些输入。

有关详细信息和具体示例,请参阅 Trustwave 提供的非常有帮助的RFD 文档

受影响的 Spring 产品和版本

  • Spring 框架 3.2.0 至 3.2.14
  • Spring 框架 4.0.0 至 4.1.7
  • Spring 框架 4.2.0 至 4.2.1
  • 其他不受支持的版本也受到影响

缓解措施

受影响的 Spring 框架版本的使用者应按如下方式升级

  • 对于 3.2.x,升级到 3.2.15+。
  • 对于 4.0.x 和 4.1.x,升级到 4.1.8+。
  • 对于 4.2.x,升级到 4.2.2+。

在上述版本中,Spring MVC 会在使用 HttpMessageConverter 写入之前检查 URL 是否包含文件扩展名,如果扩展名未知,则添加“Content-Disposition”响应标头以建议下载文件名“f.txt”。默认情况下,“已知”扩展名的列表包括与内置 HttpMessageConverter 实现关联的扩展名以及为内容协商目的显式注册的任何其他扩展名。对于 4.x,修复还包括对 SockJS URL 的 URL 检查以及在支持 JSONP 的所有区域中对 JSONP 回调参数的验证。

只需升级到上述版本即可保护应用程序免受 RFD 攻击。还可以采取一些进一步的步骤

  • 对 JSON 响应进行编码而不是转义。这也是 OWASP XSS 的建议。有关如何使用 Spring 执行此操作的示例,请参阅https://github.com/rwinch/spring-jackson-owasp
  • 配置后缀模式匹配 以将其关闭或仅限于显式注册的后缀。
  • 配置内容协商,并将属性“useJaf”和“ignoreUknownPathExtension”设置为 false,这将导致对具有未知扩展名的 URL 返回 406 响应。但是请注意,如果 URL 自然地需要在末尾有句点,则这可能不是一个选项。
  • 向响应中添加“X-Content-Type-Options: nosniff”标头。Spring Security 4 默认执行此操作。

鸣谢

Trustwave 在一篇论文中描述了 RFD 攻击。Spring 框架中的问题是由 HPE 安全研究的 Alvaro Muñoz 负责任地报告给 Pivotal 的。特别感谢 NTT DATA Corporation 的 Toshiaki Maki 和 Tomoyuki Ikeya 帮助验证解决方案并识别利用漏洞的其他方法。

参考文献

历史

2015 年 10 月 15 日:发布初始漏洞报告。

领先一步

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

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部