专栏首页逢魔安全实验室Grammarly For Chrome扩展任意用户劫持漏洞分析

Grammarly For Chrome扩展任意用户劫持漏洞分析

01

综述

2018年02月02日,Grammarly官方更新了Grammarly for Chrome 14.826.1446版本,其中修复了一个严重漏洞,在此之前的版本中此扩展能够向所有网站曝光用户的令牌信息,导致任意网站都可以访问并修改用户在Grammarly上的文档,词典,访问历史,日志信息,用户信息等敏感数据。Grammarly官方当日立即修复此漏洞,与2月5日关闭此Bug。

攻击难度:低。

危害程度:高。

影响版本:≤ 14.826.1446。

官方修复情况如下:目前官方已经发布最新版本14.826.1446

02

什么是Grammarly

Grammarly 是一款拥有1000w+用户的国外厂商开发的语法检查应用,提供了浏览器扩展、网页版、 Mac 版和 Windows 版。如果你使用 Windows,Grammarly 还提供了 Word 插件,下载后可以在 Word 内部调用插件直接检查语法错误,我也是Grammarly的忠实用户之一。

Grammarly 可以实现实时语法检查,你边写它就边改,语法问题和修改意见会以标注的形式显示在文档的右侧,方便你去一一查看,而且在每条批注下面都会配有详细的解释,告诉你哪里错了,为什么要这样修改。当你出现错误的内容可以存入用户字典或者文档中。关于Grammarly的厉害之处请看参考链接中的视频。

03

漏洞分析

从网络上下载老版本的扩展插件,这里我们使用最新版之前的一个版本14.825.1439(参考链接中可下载历史版本),然后解压插件包,主要代码都在\extension_14_825_1439_0\src\js\Grammarly.js文件中,代码很多,但是主要核心漏洞代码如下图所示:

这里在返回的Message对象中,当返回的数据data.action=user,并且data.Grammarly=true时,调用sendUser()函数,在sendUser()函数中直接将user对象返回了,此user对象中包括了用户的所有信息,包括email,firstName,grauth等敏感信息,所以导致任意网站都可以通过触发message事件,通过postMessage操作获取Grammarly用户的敏感信息。

因为Grammarly的很多接口登录认证只需要grauth这个token值就可以直接访问,所以通过恶意获取用户grauth值之后就可以随意操作用户的数据信息了。

04

漏洞验证及利用

在官方的漏洞详情中,漏洞作者给出了在浏览器console中执行几行代码即可触发漏洞,如下图所示:

下面来解释一下这四行代码的意思:

1、将当前DOM中的节点元素置为可编辑状态(默认不可编辑); 2、返回文档中匹配指定的选择器组的第一个元素,这里返回[data-action=”editor”]的节点元素并执行点击操作; 3、返回class=gr_-ifr的iframe节点元素对象,再通过contentWindow得到iframe包含页面的window对象,最后将此对象注册到一个指定的监听器上,当该对象触发指定的事件message时,回调并执行匿名函数; 4、通过postMessage触发时间,并发送用户数据。

最后控制台上将返回用户信息中的email和grauth信息,如下图效果:

通过获取到grauth内容后,发送附带grauth cookie内容(grauth未失效)的请求到Grammarly接口即可获取对应用户数据,如下图访问用户的文档:

其他可利用接口如下:

虽然这里可以证明漏洞,但是并没有充分利用此漏洞将其危害体现出来。漏洞报告中提到任意网站都可以获取用户敏感信息,那就是说我们创建一个恶意网站,只要安装Grammarly for Chrome插件的用户访问到我们的网站就会被劫持,下面我们来实现此利用场景。

首先我们的站点页面必须存在可编辑文本的功能,比如<textarea>,这样才能自动调出Grammarly功能,所以我们构建如下页面即可:

这里已经成功指出我们的语法错误,这时点击右下角的图标即可进行相关操作了。然后我们在此页面中加入构造好的js代码,在编辑区触发此js代码即可:

最后将我们构造好的站点发送给受害者,当受害者访问此网站时,鼠标移动到编辑区即可触发漏洞,发送用户email和grauth内容到攻击者服务器,如下图我们的服务器上收到的用户信息:

备注:这里只进行局部测试,攻击方法可行,未进行任何非法操作及数据收集。

05

漏洞修复

在2018年02月02日更新的14.826.1446最新版本中,已经修复此漏洞,在代码中直接将用户的敏感信息删除掉,如下图修复代码对比:

在Chrome中安装最新版本后,通过console调试也可以看出返回的data.user信息中已经没有email和grauth等敏感信息了,如下图所示:

使用Grammarlyfor Chrome的用户请及时更新避免被恶意攻击者劫持导致信息泄露被滥用。

06

参考链接

https://youtu.be/wOxVMRwLfjU

https://www.crx4chrome.com/history/2722/

https://bugs.chromium.org/p/project-zero/issues/detail?id=1527

本文分享自微信公众号 - 逢魔安全实验室(FormSec),作者:xfkxfk

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Some Linux Hacking Tricks

    xfkxfk
  • UAF Writeup - pwnable.kr

    0x00 UAF — pwnable.kr是一个韩国的CTF练习的网站,有很多经典的CTF题目供爱好者练习。 UAF(Use After Free)释放后重用...

    xfkxfk
  • 某移动应用安全加固与脱壳技术研究与实例分析

    xfkxfk
  • 网站安全公司对于网站逻辑漏洞的修复方案分享

    在网站安全的日常安全检测当中,我们SINE安全公司发现网站的逻辑漏洞占比也是很高的,前段时间某酒店网站被爆出存在高危的逻辑漏洞,该漏洞导致酒店的几亿客户的信息遭...

    网站安全专家
  • 网站漏洞修补与网站逻辑漏洞修复加固方案

    在网站安全的日常安全检测当中,我们SINE安全公司发现网站的逻辑漏洞占比也是很高的,前段时间某酒店网站被爆出存在高危的逻辑漏洞,该漏洞导致酒店的几亿客户的信息遭...

    技术分享达人
  • 微博视听节目服务被叫停,内容平台的品质之争才刚开始?

    今天广电总局要求新浪微博、ACFUN等关停视听节目服务,这一通知一出,微博股价盘前大跌7.43%,市值蒸发12亿美金。 ? 不过即便如此,微博市值依然超过150...

    罗超频道
  • 你,渴望 Google Play 商店吗?

    由于一些众所周知而又不可描述的原因,我们的安卓手机想使用Google Play商店还是很麻烦的,需要解决环境问题,还需要解决网络问题,总之,各种问题。

    课代表
  • 交互设计流程思考范围层结构层框架层

    霖酱
  • 浅谈JavaScript如何操作html DOMJavaScript 能够改变页面中的所有 HTML 元素改变 HTML 样式** JavaScript 有能力对 HTML 事件做出反应**添加和删除

    ** 通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。**

    desperate633
  • [神经网络与深度学习] Introduction to deep learning习题解析

    这是课程[Neural Networks and Deep Learning]第1周的习题解答,共10道题。

    云水木石

扫码关注云+社区

领取腾讯云代金券