【技术揭秘】基于浏览器的指纹识别技术(含缓解方案)

  

  “res://”协议(漏洞CVE-2015-2413)

  “res://”协议是IE浏览器的一个内部协议,该协议允许网页直接加载本地文件资源。与此同时,IE浏览器还可以将“res://URLs”这样的资源地址视为特殊的资源引用。

  微软公司允许普通的HTTP网页使用“res://URLs”来加载资源,因为IE或Edge浏览器中的部分功能需要使用这份协议。

物联网

  图片4:检测脚本所创建的图片文件是否加载成功

  Iframe中的“res://”变种(此漏洞未修复)

  受影响的操作系统:Windows 7和Windows 10

  浏览器:Internet Explorer 10、11;Microsoft Edge (38.14393.0.0);Microsoft EdgeHTML (14.14393)。

  请注意:对Microsoft Edge浏览器而言,指纹识别技术只能在“Windows”和

  “Program Files”这两个文件夹下起作用,因为AppContainer不允许程序访问系统的其他部分。

物联网

  图片5:通过网页来确定主机“system32”文件夹下是否存在calc.exe(计算器)

  漏洞利用工具是如何使用该技术的?

  我们对Neutrino EK过滤器的运行机制进行了研究,具体内容请查看这篇文章:《 Neutrino EK:Flash中的指纹识别技术 》

物联网

  图片6:通过iframe来检测本地文件

  广大用户们应该怎么做?

  在这里,我们给大家提供一个比较好的缓解方案。为了解决目前存在的问题,用户应该只允许IE浏览器去加载类似mshtml.dll和ieframe.dll这样的只有IE浏览器会使用的资源文件,所有调用其他资源文件的操作行为都应该被阻止。

  换句话说,我们应该只允许iexplore.exe(以及其他需要使用Web浏览器进行操作的程序)加载Web浏览器引擎真正需要使用的那些资源文件。除了这些文件之外,其余的任何文件都不应该允许加载。在某些IE内部页面/对话框,或者某些旧版本的浏览器工具栏中使用res资源调用协议才是该协议合理的使用方式。除此之外,DevTools开发者工具(F12)同样需要使用这个协议。

物联网

  图片7:Microsoft Edge浏览器中的资源调用(res://)

  某些需要使用“res://”协议的旧版本浏览器工具栏可能会因此而无法正常工作,但是我们可以将其需要使用的DLL文件加入白名单,这样就可以暂时让其正常工作了。至于如何彻底修复这一问题,就交给各位程序员去解决吧。

  总结

  虽然微软公司此前已经表示,这些信息泄漏漏洞已经被修复了。但是就目前的情况来看,这些漏洞似乎并没有彻底被修复。之所以会出现这样的情况,很有可能是由于浏览器内核中存在的问题没有得到根本性的解决,因为一旦对内核进行了大规模改动,那么将有可能引起各种兼容性方面的问题。

  致谢

  在这里,我要特别感谢一下Manuel Caballero( @magicmac2000 ),感谢他一直鼓励我深入去研究这篇文章中所提到的安全问题。除此之外,我还要感谢Eric Lawrence( @ericlaw )为这篇文章所提供的帮助和贡献。

  本文由 安全客 原创发布,如需转载请注明来源及本文地址。

 

  本文地址:http://bobao.360.cn/learning/detail/2987.html