Play 框架安全公告

CSRF 绕过

日期

2016 年 3 月 4 日

描述

在 Play 的 CSRF 支持中发现了一个漏洞。

Chrome 的 Beacon 扩展允许非预检的、非表单跨域 POST 请求,这使 Play CSRF 过滤器假设只有表单 POST 请求会受到 CSRF 攻击的假设失效。

影响

当受害者的浏览器是 Chrome 时,Play 的 CSRF 检查可能会被绕过。

受影响的版本

解决方法

application.conf 中设置以下配置

play.filters.csrf.contentType {
  blackList = []
  whiteList = ["none"]
}

请注意,这将导致所有 POST application/json 请求都需要 CSRF 检查。

修复

升级到 Play 2.5.0。有关 Play 2.5 如何修改以提供更好的 CSRF 保护以及升级需要做什么的详细信息,请参阅 此处

致谢

发现此漏洞的功劳归于来自 Atlassian 的 David Black。