Facebook近日在博客中公布了如何防御BREACH(通过自适应超文本压缩进行的浏览器侦测与漏出)攻击。
BREACH攻击与企业处理CSRF(跨站请求伪造)攻击时采用的安全措施有关,BREACH专门针对那些拥有用户账户的网站。
在CSRF攻击中,攻击者会假冒用户并让用户的浏览器发送垃圾信息或者以web请求的方式窃取用户在网络上的账户。
而Facebook这样的公司则会利用CSRF令牌来标记真实用户或被黑账户,来防止攻击。但是在新的BREACH攻击面前这种方法失灵了。在一些环境中,网页获取压缩超文本的方式使得黑客能够发现用户的CSRF证书,即使用户与网站之间的通讯采取了加密措施也无济于事。
Facebook目前通过在CSRF令牌中增加一个新的安全层来对付BREACH攻击,具体做法如下:
某用户一天中如果产生了三个Facebook会话,那么每个会话都会受到一个同样的CSRF令牌,如今Facebook的系统会为每一次用户请求发放一个新的令牌,这些新令牌通过24位盐化随机产生,“盐”是令牌结尾最后四个字母。这能够彻底避免令牌的重复问题。新的令牌发布后,此前的令牌还将保持几天有效期,这意味着同一时期会有多个令牌处于有效期。
据Facebook安全与基础架构团队介绍,在CSRF令牌中引入随机字母序列的做法足以挫败依赖令牌重复性的BREACH攻击。