CVE-2019-12592:印象笔记Chrome扩展漏洞分析
2019-06-17 07:03:00 Author: xz.aliyun.com(查看原文) 阅读量:104 收藏

Guardio研究人员发现了Evernote Web Clipper(印象笔记·剪藏)Chrome扩展存在逻辑编码错误漏洞,攻击者利用这些漏洞可以打破隔离机制并以用户的名义执行代码,并对非Evernote域名授予用户敏感信息的访问权限。财务信息、社交媒体、个人邮件等都是攻击的目标。该XSS漏洞CVE编号为CVE-2019-12592

大多数互联网用户并不下载可执行文件或安装专门的软件。除了社交账号、商城和金融数据外,浏览器内直接也能提供一些扩展类的工具,来完成类似的功能。但这对app作者带来了挑战。一些工具需要额外的访问权限来更好地执行任务,比较好的解决方案就是创建一个浏览器扩展。App作者的意图是提供更好的用户体验,扩展一般拥有访问一些敏感资源的权限,也比传统的网站安全风险要更高一些。

研究人员分析发现了Evernote Web Clipper(印象笔记·剪藏)chrome扩展的漏洞。因为Evernote用户基数庞大,因此该漏洞影响的用户数预计超过470万。
与其他扩展漏洞不同的是,该漏洞直接影响第三方服务,而且并不仅限于个人的Evernote账号。

为了模拟攻击者如何利用该漏洞,Guardio研究人员设计了一个PoC来从潜在受害者处窃取隐私数据。通过将这些步骤串起来,很容易就可以进行攻击。
PoC步骤:

  • 用户被导航到攻击者的恶意站点(通过社交媒体、邮件、被黑的博客评论等);
  • 恶意站点加载目标站点中隐藏的、合法的iframe tag;
  • 漏洞利用是由恶意网站触发的,会导致Evernote的内部基础设施注入攻击者控制的payload到iframe环境。
  • 注入的payload是为每个目标网站定制的,可以窃取cookie、凭证、隐私隐私,还可以像用户一样执行动作。

为了详细了解漏洞的情况,首先需要了解Evernote Web Clipper如何与网站和frame进行交互。
Evernote的代码注入链是从扩展的manifest (manifest.json)开始的,其中BrowserFrameLoader.js content脚本会被注入到所有页面和frame中。由于注入到frame的敏感性,只有这一个脚本使用了all_frames来减少攻击面。内容脚本的主要的主要目的是作为扩展的C2服务器来加载其他必需的代码到页面中。

对通信信道来说,脚本使用通过postMessage API的Windows消息机制(Windows Messaging)。作为一个小的注入器脚本,它只对少量的消息类型提供handler,其中一个就是installAndSerializeAll命令来注入到第二阶段FrameSerializer.js和执行序列化。该机制使用了一种弱认证方案,这种弱认证方案并不存在漏洞,但这是漏洞利用链的重要一步,因为运行在web沙箱环境中的脚本会触发命令。消息处理器(message handler)的参数作为命令请求消息的payload域。

最后,因为提供有效URL给扩展域名(chrome-extension://...)的_getBundleUrl函数中的逻辑检查和输入检查不当,研究人员发现URL的第一部分可以被handler的resourcePath输入参数进行操作。

黑客利用漏洞利用可以加载黑客远程控制的脚本到其他网站环境,只需要一个交单的window.postMessage命令即可。通过滥用Evernote的注入基础设施,恶意脚本会绕过同源策略的限制,注入到页面的所有目标frame中。

这提供了一个通用XSS注入到黑客控制的网站的所有frame的方法。

Evernote已经发布了补丁和新版本。用户可以复制chrome://extensions/?id=pioclpoplcdbaefihamjohnefbikjilc到Chrome扩展页来检查是否是最新版本,并确保版本号大于7.1.1。

https://guard.io/blog/evernote-universal-xss-vulnerability


文章来源: http://xz.aliyun.com/t/5411
如有侵权请联系:admin#unsafe.sh