Facebook近日在博客中公布了如何防御BREACH(通過自適應超文本壓縮進行的瀏覽器偵測與漏出)攻擊。
BREACH攻擊與企業處理CSRF(跨站請求偽造)攻擊時采用的安全措施有關,BREACH專門針對那些擁有用戶賬戶的網站。
在CSRF攻擊中,攻擊者會假冒用戶并讓用戶的瀏覽器發送垃圾信息或者以web請求的方式竊取用戶在網絡上的賬戶。
而Facebook這樣的公司則會利用CSRF令牌來標記真實用戶或被黑賬戶,來防止攻擊。但是在新的BREACH攻擊面前這種方法失靈了。在一些環境中,網頁獲取壓縮超文本的方式使得黑客能夠發現用戶的CSRF證書,即使用戶與網站之間的通訊采取了加密措施也無濟于事。
Facebook目前通過在CSRF令牌中增加一個新的安全層來對付BREACH攻擊,具體做法如下:
某用戶一天中如果產生了三個Facebook會話,那么每個會話都會受到一個同樣的CSRF令牌,如今Facebook的系統會為每一次用戶請求發放一個新的令牌,這些新令牌通過24位鹽化隨機產生,“鹽”是令牌結尾最后四個字母。這能夠徹底避免令牌的重復問題。新的令牌發布后,此前的令牌還將保持幾天有效期,這意味著同一時期會有多個令牌處于有效期。
據Facebook安全與基礎架構團隊介紹,在CSRF令牌中引入隨機字母序列的做法足以挫敗依賴令牌重復性的BREACH攻擊。