17年未修复的Firefox本地文件窃取漏洞分析

ang010ela 嘶吼专业版

近期,安全研究人员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-schemefile,实现可能会返回实现定义的值。注:用户代理一般会授予file scheme中的内容大类的权限。但是,授予所有本地文件这样大范围的权限会导致权限提升。一些用户代理已经成功授予本地文件基于目录的权限,但该方法并没有被广泛采用。其他用户代理对每个文件URI使用全局唯一的id,这也是最安全的方法。

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

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

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

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

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

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

©著作权归作者所有:来自51CTO博客作者mob604756ebed9f的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 【linux】循序渐进学运维-基础篇-Linux系统目录
  2. 在Linux中创建 本地yum源
  3. 【linux】循序渐进学运维-基础篇-操作系统初始化
  4. 【linux】循序渐进学运维-基础篇-文件权限管理
  5. [linux]循序渐进学运维-基础命令篇-文件的归档和压缩
  6. Linux中常用压缩及解压命令
  7. 【linux-56】文件系统管理-df,du
  8. Vue(5): APP.vue引入CSS样式文件和动态切换组件的方法
  9. 【linux】循序渐进学运维-基础篇-文件的软硬链接

随机推荐

  1. EditText的用法
  2. android sdk+eclipse+adt 配置与开发
  3. Android中Touch事件的处理逻辑
  4. android手机内存中的文件操作
  5. 转-Android数据存储(总结篇)
  6. Android:ListView优化
  7. EditText的详细属性说明
  8. checkbox 与 listview 等混用焦点问题
  9. Android(安卓)drawRegion 绘制
  10. android 学习基础篇---开发环境的搭建 Ec