Spring 安全公告

CVE-2018-1199:静态资源安全绕过

高危 | 2018年1月29日 | CVE-2018-1199

描述

Spring Security 在处理安全约束时未考虑 URL 路径参数。通过添加具有特殊编码的 URL 路径参数,攻击者可能能够绕过安全约束。此问题的根本原因是 Servlet 规范中关于处理路径参数的说明不够清晰(见下文)。一些 Servlet 容器将路径参数包含在 getPathInfo() 返回的值中,而有些则不包含。Spring Security 使用 getPathInfo() 返回的值作为将请求映射到安全约束过程的一部分。在此特定攻击中,路径参数中使用的不同字符编码允许绕过受保护的 Spring MVC 静态资源 URL。

受影响的 Spring 产品和版本

  • Spring Security
    • 4.1.0 - 4.1.4
    • 4.2.0 - 4.2.3
    • 5.0.0
  • Spring Framework
    • 5.0.0 - 5.0.2
    • 4.3.0 - 4.3.13
  • 未分析较旧的未维护版本的 Spring Security 和 Spring Framework,它们也可能受到影响。

缓解措施

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

  • Spring Security
    • 5.0.x 用户应更新到 5.0.1
    • 4.2.x 用户应更新到 4.2.4
    • 4.1.x 用户应更新到 4.1.5
  • Spring Framework
    • 5.0.x 用户应更新到 5.0.3
    • 4.3.x 用户应更新到 4.3.14

作为一般的预防措施,建议用户将公共资源和私有资源分开。例如,将静态资源分开并将其映射到 /resources/public/** 和 /resources/private/** 比使用一个包含混合公共和私有资源内容的公共根目录更好。

致谢

此问题由 NTT Comware、NTT DATA Corporation 和 NTT 的 Macchinetta Framework 开发团队发现,并已负责任地报告给 Pivotal。

历史记录

2018-01-29:发布初始漏洞报告

领先一步

VMware 提供培训和认证,以快速提升您的进度。

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看全部