CVE-2015-5211 Spring Framework 中的 RFD 攻击

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

描述

在某些情况下,Spring Framework 容易受到反射型文件下载 (RFD) 攻击。这种攻击涉及恶意用户精心构造一个带有批处理脚本扩展名的 URL,导致响应被下载而不是渲染,并且响应中包含一些被反射的输入。

有关详细信息和具体示例,请参阅 Trustwave 发表的非常有用的RFD 论文

受影响的 Spring 产品和版本

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

缓解措施

受影响的 Spring Framework 版本用户应按如下方式升级

  • 对于 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 默认启用此功能。

致谢

RFD 攻击在 Trustwave 的一篇论文中有所描述。Spring Framework 中的问题由 HPE Security Research 的 Alvaro Muñoz 负责任地报告给了 Pivotal。特别感谢来自 NTT DATA Corporation 的 Toshiaki Maki 和 Tomoyuki Ikeya 协助验证解决方案并找出利用此漏洞的其他方法。

参考资料

历史记录

2015 年 10 月 15 日:首次发布漏洞报告。

领先一步

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

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部