IE 的一個通用 Cookie 跨域漏洞

前言

IE cookie monster bug 已在 Win10 中修復,然而它還沒有在 Win7 和 8.1中修復。因此,區域性域名(比如 JP 頂級域名)的 Cookie 有可能被第三方修改。因此,我們應該慎重考慮該漏洞帶來的影響。

Cookies 被第三方修改所帶來的風險

當一個用戶的 Cookie 被第三方改寫時,其可能會有如下風險:

  • 會話固定攻擊
  • 某些 CSRF 防禦的繞過
  • 基於 Cookie 的 XSS

其中的"某些 CSRF 防禦"特指 Double Cookie Submit。(雙 Cookie 遞交認證,指的是在GET 參數及 HTTP 請求中同時包含一個隨機的字元串,如果伺服器判斷 GET 參數和 Cookie參數相等,那麼沒有受到 CSRF 攻擊)由於這是 OWASP 欽定的防禦方法,人們往往會忽略 IE Cookie 漏洞對其的繞過。以下框架中,IE 的 Cookie 漏洞都會帶來 CSRF 繞過:

  • Fuel PHP
  • Codelgniter
  • Django

當然,受影響的遠不止這些。

由於 Double Submit Cookie 並不需要維持狀態,這種方法在 REST 中越來越常見。

我們公司的安全審計都會指出 Double Submit Cookie 的缺陷,其具體危害視被改變的信息而定。

有哪些跨域改變 Cookie 的方法

有許許多多的方式可以從外部改變 Cookie ,不過主要的還是:

  • Cookie Monster Bug
  • 存在 XSS
  • HTTP 頭注入
  • 子域名中存在 XSS
  • 站點使用 HTTPS(參考:blog.tokumaru.org/2013/

在這其中,如果漏洞可以修復就好了 「在應用程序中沒有漏洞,但是 cookie 卻被重寫了。」 這就是使用了 cookie monster bug 和 https 的情況。後者以前做了詳細的說明,所以在本篇文章中,提到了 cookie monster bug。

什麼是 Cookie Monster 漏洞

我們拿東京的一個網站舉例子吧。東京地鐵管理局使用JP域下的區域域名metro.tokyo.jp。如果我們用 example.tokyo.jp 返回包含 domain=tokyo.jp的Set-Cookie 響應給用戶,那麼該用戶瀏覽器所儲存的東京地鐵局的Cookie(www.metro.tokyo.jp)也會被改變。

雖然這違反了SOP,但出於種種原因,IE認同這種行為。

最近,我思考 IE 的 cookie monster bug是否有效。於是我檢查了該 bug 是否能存在於Win8.1 和 Win10 的最新版本中,在 Windows 10 中, Edge 我們使用kawaguchi.tokyo.jp 和 tokumaru.bunkyo.tokyo.jp 作為我們的測試域名。結果如下:

因此,微軟最終在 Win10(IE + Edge) 里修復了這個 bug。我們不知道準確的修復時間,但是由於我們已經確認它已經從 Windows 10 的初始版本中消除。我們預計在 Windows 10 發行的時候已經解決了。

Cookie Monster還會持續多久?

然而,微軟並沒有修復 WIn7 和 Win8.1 的 Cookie Monster。因此,微軟很可能不會選擇修復了。因此,在 2023 年之前(Win8.1 停止維護時間),我們都要警惕它。

如何防禦

只要你對會話實現了正常的更新機制,會話固定攻擊就不會被 Cookie Monster 進一步利用

不要用 Double Cookie Submit 防禦 CSRF。特別是那些基於子域名的網站。

即使沒有 Cookie Monster bug,如果通信路由上有攻擊者,也可以通過中間人攻擊在 HTTP端修改 cookie。我一直在用 Double Submit Cookie 來解決 CSRF 措施(雖然風險很大),因為我考慮了這個攻擊手段。

總結

我彙報了該 bug 的當前狀態。我們仍然需要考慮最近五年內它會帶來的風險直到 Windows 8.1 的支持結束。因此,受到該類漏洞影響的網站有必要停用 Double Cookie Submit 機制。

原文:IEのクッキーモンスターバグはWindows 10で解消されていた


推薦閱讀:

有哪些值得關注的安全技術博客(上)
Nmap腳本使用指南
好的安全工具就該藏著?
你有學習的態度?黑客很近很近!

TAG:XSS | Web安全测试 | 网络安全 |