CSRF 绕过
日期
2016 年 3 月 4 日
描述
在 Play 的 CSRF 支持中发现了一个漏洞。
Chrome 的 Beacon 扩展允许非预检的、非表单跨域 POST 请求,这使 Play CSRF 过滤器假设只有表单 POST 请求会受到 CSRF 攻击的假设失效。
影响
当受害者的浏览器是 Chrome 时,Play 的 CSRF 检查可能会被绕过。
受影响的版本
- Play 2.2.0 - 2.4.6
解决方法
在 application.conf
中设置以下配置
play.filters.csrf.contentType {
blackList = []
whiteList = ["none"]
}
请注意,这将导致所有 POST
application/json
请求都需要 CSRF 检查。
修复
升级到 Play 2.5.0。有关 Play 2.5 如何修改以提供更好的 CSRF 保护以及升级需要做什么的详细信息,请参阅 此处。
致谢
发现此漏洞的功劳归于来自 Atlassian 的 David Black。