浏览器 IDN 欺骗问题
大约在一周以前,互联网上流传着一条新闻:黑客可借助IDN缺陷“钓鱼” 微软IE侥幸躲过。引述一些相关资料,希望能澄清一些问题。
IDN是Internationalized Domain Name(国际化的域名)的简称,指的是包含非 ASCII 字符的域名。比如一些包含声调的西欧字符,或者是像中文、日文这样的双字节字符所组成的域名。因为有很多这样的字符和英文字符非常相似(比如 а 和 a),攻击者就可能注册与某些网站(比如paypal.com)非常相似的国际化域名(比如paypаl.com),伪造网站来欺骗网民。
因为现有的 DNS 体系无法解析国际化的域名,这一任务便落在了应用程序(比如浏览器)的身上。应用程序根据一定的规则把域名中的非 ASCII 字符转化为现有 DNS 体系能够处理的字符,比如 paypаl.com 经过转化实际上变成了 xn–paypl-7ve.com。如果浏览器实现了 IDN 解析,则访问 paypаl.com 实际上是访问 xn–paypl-7ve.com,但浏览器的地址栏里显示的地址仍然是 paypаl.com,这(在某些字体下)和 paypal.com 非常相像。这便是问题所在。
IDNA 定义于 RFC3490 中,常见的大部分浏览器(包括Mozilla, Mozilla Firefox,Camino, Opera, Safari等等)都有实现这一功能,唯独 IE 没有。这正是为什么单单 IE 侥幸躲过 IDN 欺骗的原因。
在此问题被发现之后的六个小时,Mozilla 社区便有了一个临时的解决办法。开源社区解决问题的速度总是令人信服。
附:测试方法
如果你的浏览器访问 paypаl.com 和 xn–paypl-7ve.com 得到相同的内容,你就需要注意 IDN 欺骗了。
参考1:http://secunia.com/advisories/14163/
参考2:http://www.shmoo.com/idn/
btw: Debian 用户总是很幸福,最新的 Firefox/1.0 (Debian package 1.0+dfsg.1-6) 已经解决掉此问题了。
February 15th, 2005 at 1:50 pm
Mozilla Foundation 对 IDN Homograph 欺骗攻击的回复。
要解决这个问题,关键还是要靠域名注册商从源头上进行限制。
February 15th, 2005 at 1:52 pm
而且 IDN 的这个弱点在 2002 年就已经被提出来了,只不过一直没有得到重视而已。
http://www.icann.org/committees/idn/idn-codepoint-paper.htm
February 15th, 2005 at 8:08 pm
debian更新了,点那个连接已经找不到了。似乎解决方案就是关闭这个支持?Mozilla用字体看来也是有自己的一套,普通GTK程序已经显示不了汉字的时候,它还是没问题。
February 15th, 2005 at 10:52 pm
Paul Hoffman,IDN 标准的起草人之一,刚刚发表了一篇文章,主要谈的是如何在客户端防止 IDN 欺骗。