國內的安全專家最近發現一種新的釣魚攻擊,“幾乎無法檢測”,即便平時十分謹慎的用戶也可能無法逃過欺騙。黑客可利用Chrome、Firefox和Opera瀏覽器中的已知漏洞,將虛假的域名偽裝成蘋果、谷歌或者亞馬遜網站,以竊取用戶的登錄憑證、金融憑證或其他敏感信息。
防釣魚的最佳方式是什么?一般來講,我們會在頁面加載出來后檢查地址欄,看看地址是否由有效的HTTPS連接提供。對吧?
那么,在繼續深入之前,我們來看看這個頁面。頁面是由發現這一攻擊的中國安全研究員Xudong Zheng創建的,點擊去看看。
如果你的瀏覽器顯示的地址是“apple.com”,并有SSL安全認證的,但是頁面內容卻來自另一個服務器(如上圖所示),那么你的瀏覽器就易遭受“同形異義字攻擊”。
Wordfence的安全專家們也創建了另一個PoC網站,展示了同一個漏洞;這個網站仿冒的是“epic.com”的域。用Chrome、Firefox來訪問,看看是不是很神奇?
同形異義字攻擊自2001年以來就已為人所知,但是瀏覽器廠商修復該問題的過程卻很艱難。這種欺騙攻擊就是網址看起來是合法的,但實際上不是,因為其中的一個字符或者多個字符已經被Unicode字符代替了。
許多Unicode字符,代表的是國際化的域名中的希臘、斯拉夫、亞美尼亞字母,看起來跟拉丁字母一樣,但是計算機卻會把他們處理成完全不一樣網的網址。
比如說,斯拉夫字母“а” (U+0430)和拉丁字母“a”(U+0041)會被瀏覽器處理成不同的字符,但是在地址欄當中都顯示為“a”。
Punycode釣魚攻擊
在默認情況下,許多web瀏覽器使用“Punycode”編碼來表示URL中的Unicode字符,以防止同形異義字釣魚攻擊。Punycode是瀏覽器使用的特殊編碼,目的是將Unicode字符轉義成字符數目有限的ASCII 碼字符集(A-Z,0-9),由國際化域名(IDN)系統支持。
比如說,中文域名“短.co”用Punycode來表示就是“xn--s7y.co”。
根據Zheng的博客,這個漏洞所依賴的基礎是:瀏覽器只將單一語言采用的Unicode編碼轉換為Ponycode URL(比如漢語或者日語),但是如果一個域名當中包含來自多個語言的字符,瀏覽器就無法分辨了。
研究人員利用這個漏洞注冊了xn--80ak6aa92e.com域名,繞過了保護,并在所有存在上述漏洞的瀏覽器中顯示為“apple.com”,包括Chrome、Firefox和Opera,不過IE、Edge、Safari、Brave、Vivaldi并不存在該漏洞。
此處的xn前綴是一個“ASCII兼容編碼”前綴,意味著瀏覽器采用Punycode編碼來代表Unicode字符,因為Zheng用到了斯拉夫語的“а” (U+0430)而非ASCII的“a”(U+0041),瀏覽器的防御措施也就失效了。
Zheng已于一月份向受影響的瀏覽器廠商報告了該問題,包括Google和Mozilla。Mozilla目前還在商討解決方案,Google已經在Chrome Canary 59中修復了這一漏洞,而且會在本月晚些時候發布Chrome Stable 58時,給出永久的修復方案。
與此同時,建議可能受此釣魚攻擊影響的用戶暫時關閉瀏覽器中的Punycode支持,來分辨釣魚域名,緩解此攻擊。
Firefox用戶緩解方案
Firefox用戶可根據以下步驟,手動開啟緩解方法:
1. 在瀏覽器地址欄中輸入about:config,并按回車鍵。
2. 在搜索欄中輸入Punycode。
3. 瀏覽器設置將顯示network.IDN_show_punycode參數,雙擊或者右鍵選擇Toggle,將值改為“True”。
Chrome和Opera中并沒有類似的設置,來手動關閉Punycode URL轉義,所以Chrome用戶請耐心等待幾周,等待Stable 58發布。
同時也建議用戶在手動輸入重要網站URL,包括Gmail、Facebook、Twitter、Yahoo及銀行網站,不要點擊某些網站或者郵件當中的上述網站鏈接,避免遭遇此釣魚攻擊。