t01c5e33e93ada5fa19.png



你相信这是一个钓鱼网站的域名吗?


Punycode可以让域名由外文组成。Punycode使用ASCII字符集,可以把外文域名转换成有意义的字符。例如,域名xn--s7y.co,会被转换成短.co

在安全角度看,由於Unicode字符与ASCII字符难以区分,所以注册Unicode域名「xn--pple-43d.com」,会被转换成「apple.com」。乍看下域名没大分别,可是「apple.com」的a用编码Cyrillic (U+0430),而不是编码ASCII (U+0041)。这就是传统的IDN欺骗。

幸运的是,现在的浏览器有防御机制限制IDN欺骗。像火狐和Chrome浏览器,如果域名包含多个不同语言的外文编码,就会把域名的Unicode编码以正则表达式显示。例如,「apple.com」会被显示为「xn--pple-43d.com」,这就避免与真正的苹果官网混淆。

火狐和Chrome的IDN欺骗防御机制是可以被绕过的,如整个钓鱼网站域名都是由一种语言的外文编码组成,例如「apple.com」,是由Cyrillic编码「xn--80ak6aa92e.com」所组成。经常发生IDN欺骗,是因为在火狐和Chrome上,所有英文都是采用同一字体,因此在视觉上难以区分域名是由哪种编码组成。在这情况下,用户只能靠SSL证书来识别网站的真伪性。

2017年1月20日,这漏洞已经提交给火狐和Chrome,而Chrome 59已经把这漏洞修复。Chrome团队决定把Chrome 58也纳入修复中,预计在4有25日就能完成修复。而火狐则表示这漏洞未能解决。在火狐漏洞平台中,这漏洞状态由「修复中」转为「不会修复」,并把危险级别标为「低危」。

火狐用户想修复这漏洞,可以前往about:config并设置network.IDN_show_punycode为true,以正则表达式来显示IDN域名,从而分辨域名的真伪性。

http://p9.qhimg.com/t016e07a7c17073f60f.png


各浏览器测试截图


Chrome

t019ac1e366fae51805.png

Firefox

t0151859c9ffc479629.png

Firefox SSL

t0143e53d3b7fc4a6a7.png

总结


当用户从网站输入个人资料,必须注意域名的真伪性。同时,希望火狐能够考虑修复这个漏洞。



本文由 安全客 翻译,作者陈匡kk

原文链接:https://www.xudongz.com/blog/2017/idn-phishing/