CVE-2016-6652 Spring Data JPA 盲注 SQL 注入漏洞

中等 | 2016年9月30日 | CVE-2016-6652

描述

当用户定义的 Spring Data 存储库查询方法使用手动声明的 JPQL 查询,并且将 Sort 实例传递给这些方法时,这些实例会被原封不动地传递给持久化提供程序,从而允许攻击者在 ORDER BY 子句中注入任意 JPQL。攻击者可以利用这一点,通过查询结果元素顺序的变化(取决于注入的 JPQL)来推断出未暴露字段的信息。

Sort 实例来自不可信的来源时(例如 Web 请求参数),这一点尤其危险。

受影响的 Spring 产品和版本

  • Spring Data JPA 1.10.2, 1.9.4
  • 其他不受支持的版本也受到影响

缓解措施

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

  • 建议用户升级到 Spring Data JPA 1.10.4 (Hopper SR4) 或 1.9.6 (Gosling SR6) 版本。这些版本对传递给数据访问层的 Sort 实例进行了净化,只允许引用域名对象字段以及 JPQL 中使用的别名来支持查询方法。
  • 如果用户仍需要将复杂的排序表达式传递给数据访问层,可以使用新引入的 JpaSort.unsafe(…) 来恢复旧行为。

致谢

该漏洞是由 Silverskin Information Security 的 Niklas Särökaari 和 Solita 的 Joona Immonen、Arto Santala、Antti Virtanen、Michael Holopainen 以及 Antti Ahola 负责任地报告的。

参考资料

历史

2016年9月30日:发布了初始漏洞报告

领先一步

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

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

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

查看所有