研究员Rafay Baloch昨天披露了漏洞的细节,他曾在今年3月新加坡举行的Black Hat Asia做过关于地址栏欺骗的演讲。
漏洞原理
Baloch在个人网站中说,出现漏洞的主要原因是Chrome和Android版本的Firefox浏览器对某些Unicode字符的渲染不得当。阿拉伯语和希伯来语中会有一些字符是会从右到左显示的,比如“|”。当包含这种Unicode字符的URL和IP地址合在一起时,浏览器就会把URL从右到左显示。
举个例子,某个网址逻辑上的顺序是“127.0.0.1/|/http://example.com/”,但是浏览器会在地址栏中把网址显示成“http://example.com/|/127.0.0.1”。
经过翻转的网址IP地址部分其实是很容易隐藏的,尤其是在移动设备上,只要用一个比较长的URL(google.com/fakepath/fakepath/fakepath/… /127.0.0.1)就行了。如果要想网址看起来更真实一点,还可以弄个SSL证书。
漏洞重现
Chrome
(小编使用了PC端的Chrome访问PoC网站,没有成功,在手机端成功。)
1) 访问链接http://182.176.65.7/%EF%B9%B0/http://google.com/test
2) 应该能注意到,浏览器显示的不是google的内容,但是网址却是http://google.com/test/182.176.65.7
Android版Firefox(CVE-2016-5267)
Firefox的漏洞与Chrome相似,不过它不需要IP地址触发漏洞,只需要阿拉伯RTL字符:
http://عربي.امارات/google.com/test/test/test
当你点击链接时,访问的是عربي.امارات,但地址栏却指向google.com。
厂商修复
Mozilla称,漏洞只存在于Android版本的Firefox浏览器,桌面版本不受影响,并且在8月2日的更新中已经修复了漏洞。基金会也为此向Baloch奖励了1000美元。
而Google表示会在9月的Chrome更新中修复漏洞。
其他几款浏览器也存在漏洞,但由于厂商尚未修复漏洞,因此作者还不能透露相关细节。