域名釣魚攻擊

page-different

中國資安人員 Xudong Zheng 在幾日前回報一個「幾乎不可能被發現的」釣魚攻擊──IDN 欺騙(IDN homograph attacks)──,即便是在網路上極為細心的人亦有可能會被欺騙。

Principle

這項涉及 Chrome 或 Firefox 等瀏覽器的安全漏洞關鍵在於利用域名代碼(Punycode)把基於國際碼(Unicode)申請的網域名稱轉為 ASCII ,令使用者難以察覺到網址的異樣。

原本全球的網域名稱都是基於 ASCII 所建立的,但在多國語言的網域名稱興起後,為了補足字元的不足而新增 Punycode 規則。根據維基百科的解釋,Punycode 是一種表示 Unicode 碼和 ASCII 碼的有限的字符集。例如:「münchen」(德國慕尼黑)會被編碼為「mnchen-3ya」。Punycode 的目的是在於國際化域名標籤(IDNA)的框架中,使這些多語言的域名可以編碼為 ASCII,而編碼語法的規定則在文檔 RFC3492 中。

由於某些國際碼的字元與 ASCII 字元極為相似,故即使申請不同的網域名稱,但 Punycode 轉換後仍可能會被混淆。舉例而言,Cyrillic 中的 “а” (U+0430) 與 Latin “a” (U+0041) 對瀏覽器是不同的,但在網址的顯示上仍是顯示 “a”。當然這是發展 Punycode 時就曾考慮的問題,各大瀏覽器的安全政策也早已將之納入。

但 Xudong Zheng 發現 Chrome 與 Firefox 在這項政策的部署上有所缺失,於是當他以 Punycode 格式申請「xn–80ak6aa92e.com」網域名稱時,在 Chrome 與 Firefox 上出現的是以Cyrillic字母呈現的「apple.com」,而在 Safari 上則依然出現最初的 Punycode 格式「xn–80ak6aa92e.com」。

Affects Browsers

根據 Bleeping Computer 的測試發現,Chrome、Firefox 與 Opera 此三種瀏覽器存在該漏洞,而 IE、Microsoft Edge 與 Safari 則幸免於難。

Patching

目前 Chrome 團隊預計在 4/25 所推出 Chrome 58 中修補該漏洞,而 Firefox 則尚未公布修補時間。但 Firefox 使用者仍可透過以下操作作為臨時手段:

  1. 在網址列輸入 about:config 並按下 Enter。

  2. 在搜尋欄位中輸入 Punycode。

  3. 瀏覽器將會顯示 network.IDN_show_punycode 的參數,以滑鼠左鍵雙擊或是按下右鍵選擇切換來將他的數值切換成 True:

    firefox-config

References