17年未修复的Firefox本地文件窃取漏洞分析
2019-07-12 12:05:04 Author: www.4hou.com(查看原文) 阅读量:94 收藏

近期,安全研究人员Barak Tawily对同源策略(Same Origin Policy)攻击进行了研究,发现Firefox浏览器由于对文件方案URI同源策略的不当实现,会导致Firefox浏览器受到本地文件窃取攻击。

攻击场景分析

· 攻击者发送一个含有附件的邮件给受害者;或受害者浏览恶意网站并下载恶意文件。

· 受害者打开HTML恶意文件。

· 文件会在iframe中加载包含的文件夹,Poc中的文件路径为file:///home/user/-malicious.html, iframe源为file:///home/user/

· 受害者以为点击的是恶意HTML页上的按钮,实际上点击了iframe目录列表中的恶意文件html(注:使用了ClickJacking技术来实现context switching bug)。

· 恶意iframe就可以进行权限提升,并可以读取含有恶意文件的文件夹中的所有文件(注:大多数情况下是downloads文件夹,PoC中为file:///home/user/)。

· 恶意文件可以读取其包含的文件夹中的任意文件(file:///home/user/),比如通过取回URL file:///home/user/.ssh/ida_rsa和再提取一次攻击者的恶意网站来读取SSH私钥。

· 攻击者利用该漏洞就可以获取包含恶意文件的文件夹中的所有文件

PoC

PoC视频地址:
https://youtu.be/XU223hfXUVY

漏洞根源分析

RFC对web origin概念中没有描述文件方案URI SOP的实现。

Page 10: 如果`uri-scheme`是`file`,实现可能会返回实现定义的值。注:用户代理一般会授予file scheme中的内容大类的权限。但是,授予所有本地文件这样大范围的权限会导致权限提升攻击。一些用户代理已经成功授予本地文件基于目录的权限,但该方法并没有被广泛采用。其他用户代理对每个文件URI使用全局唯一的id,这也是最安全的方法。

所以,RFC说实现可能会返回实现定义的值,研究人员认为可以理解为:可以任意实现You can do whatever you want。
另外,还有一些其他的方法:

· 授予本地文件大类的权限,这是不安全的,也没有浏览器这样实现。

· 根据目录授予本地文件权限,这也是不安全的,但要比前一种方法安全,目前只有Firefox这样实现。

· 根据文件首先本地文件权限,这种方法是安全的,目前Chromium 和Edge都是这样实现的。

image.png

从上面可以看出,除了Firefox支持基于目录的SOP外,所有的主流浏览器都不允许从文件scheme取回请求:

image.png

研究人员认为RFC可以通过强制要求用户代理(user-agent,浏览器)使用最安全的方法来实现,不允许开发者犯这样的错误,使客户端暴露到这种攻击中。
虽然RFC定义的file schemes URI的SOP实现是不安全的,但Firefox选择使用了这种不安全的方法:
这种同源策略的实现方法允许每个file:// URL访问同目录文件夹和子文件夹的所有文件。
Firefox只引用了基于目录的SOP实现,只考虑了一个文件可以读取目录中的文件,但没有考虑到还可以读取相同目录下的其他文件,这使攻击更加威胁。
研究人员发现有人17年前就报告了几乎相同的漏洞,但Firefox并没有解决。研究人员认为这是一个非常严重的问题,需要尽可能快地解决。


文章来源: https://www.4hou.com/vulnerable/19168.html
如有侵权请联系:admin#unsafe.sh