本文叙述的是作者发现谷歌浏览器Chrome阅览辅佐插件(Read&Write Chrome extension)1.8.0.139版别同源战略(SOP)绕过缝隙的进程。该缝隙在于Read&Write插件短少对正常交互网页恳求源的安全查看,导致恣意网页都能够调用Read&Write插件的后台特权页面API来履行多种存在危险的操作。因为该版别插件的在线下载使用量较大,在缝隙上报前估量有八百万用户受到影响。
缝隙介绍
比方,使用名为 “thGetVoices”办法的后台API调用办法,能够用插件履行一个恣意URL链接的检索,并用postMessage办法来进行呼应通讯。经过这种办法的API歹意调用,攻击者能够绑架Read&Write插件去读取一些歹意且未经验证的会话数据。
作为验证,作者在文末 *** 了一个缝隙使用PoC视频,在安装了存在该缝隙的Read&Write插件之后,在进行使用操作时,能够使用缝隙长途读取到用户的Gmail邮箱地址信息。在缝隙上报之后,Read&Write插件开发方Texthelp公司敏捷修正了缝隙,并于第二天释出了更新补丁。现在,新版别的Read&Write插件已不存在该缝隙。
缝隙剖析
Chrome的Read&Write插件使用名为“inject.js”的Google浏览器内置脚本(Content Script)来向比如Google Docs在内的各种在线文档页面刺进一个自界说工具栏,以便利读者用户能够使用该插件进行文档读写。默许情况下,此脚本将会向一切HTTP和HTTPS源履行刺进,插件的使用说明中已界说了这一点:
...trimmed for brevity...
"content_scripts": [
{
"matches": [ "https://*/*", "http://*/*" ],
"js": [ "inject.js" ],
"run_at": "document_idle",
"all_frames": true
}
],
...trimmed for brevity...
在 “inject.js” 脚本文件中,存在一个事情监听函数addEventListener,任何被刺进 “inject.js” 脚本文件的交互网页,假如以“postMessage”办法向插件发送呼应音讯,都能被该函数捕获到:
window.addEventListener(“message”, this.onMessage)
这个addEventListener函数还会调用另一个名为“this.onMessage”的函数,该函数用于处理恣意发往页面窗口的postMessage音讯:
function onMessage() {
void 0 != event.source && void 0 != event.data && event.source == window && "1757FROM_PAGERW4G" == event.data.type && ("connect" == event.dat *** mand ? chrome.extension.sendRequest(event.data, onRequest) : "ejectBar" == event.dat *** mand ? ejectBar() : "th-closeBar" == event.dat *** mand ? chrome.storage.sync.set({
enabledRW4GC: !1
}) : chrome.extension.sendRequest(event.data, function(e) {
window.postMessage(e, "*")
}))
}
postMessage() 办法:window.postMessage() 办法能够安全地完成跨源通讯。一般,关于两个不同页面的脚本需求具有同源战略才干通讯。window.postMessage() 办法被调用时,会在一切页面脚本履行结束之后(e.g., 在该办法之后设置的事情、之前设置的timeout 事情,etc.)向方针窗口派发一个 MessageEvent 音讯。 该MessageEvent音讯有四个特点需求留意: message 特点表明该message 的类型; data 特点为 window.postMessage 的之一个参数;origin 特点表明调用window.postMessage() 办法时调用页面的当时状况; source 特点记载调用 window.postMessage() 办法的窗口信息。
在上述代码中,能够看到onMessage()会把一切接收到的postMessage音讯经过“chrome.extension.sendRequest”办法发送到Read&Write插件的后台页面。别的,对这些音讯的呼应将传递回onMessage()函数,然后再经过其传递回Web页面中去。这个进程,实际上就在正常的Web拜访页面和Read&Write插件后边之间形成了一个署理机制。
从Read&Write插件的使用说明中,能够发现Read&Write插件中存在许多后台页面:
...trimmed for brevity...
"background": {
"scripts": [
"assets/google- *** ytics-bundle.js",
"assets/moment.js",
"assets/thFamily3.js",
"assets/thHashing.js",
"assets/identity.js",
"assets/socketmanager.js",
"assets/thFunctionManager.js",
"assets/equatio-latex-extractor.js",
"assets/background.js",
"assets/xmlIncludes/linq.js",
"assets/xmlIncludes/jszip.js",
"assets/xmlIncludes/jszip-load.js",
"assets/xmlIncludes/jszip-deflate.js",
"assets/xmlIncludes/jszip-inflate.js",
"assets/xmlIncludes/ltxml.js",
"assets/xmlIncludes/ltxml-extensions.js",
"assets/xmlIncludes/testxml.js"
[1] [2] [3] 黑客接单网
DEFINE_PROTO_FUZZER(const test::common::http::HeaderMapImplFuzzTestCase& input) { ...一、 全体态势途径:...
在这篇文章中我将向你展现我怎么经过Fuzzing找出Firefox浏览器的多个”古怪”。一般来说,研究者Fuzzing的意图大多是找出引发内存损坏的行为,但我是个破例;我要找的是浏览器一些其他的风趣行...
B 侵略途径和歹意组件剖析13.封闭网卡:sudo ifdown eth0第3步:主机B确认ARP恳求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射增加到本地ARP缓存中。 #...
启动环境后,使用get方法传入/test/pathtraversal/master/..%252f..%252f..%252f..%252f../etc/passwd,即可读取到linux下passw...
Web 运用程序防火墙(WAF)现在现已成为许多商业 Web 网站与体系的根本维护办法,它确实在防备许多针对 Web 体系的安全进犯方面行之有用,可是 WAF 在面临进犯办法多种多样的 SQL 注入方...
有· 美国和澳大利亚的部分网站也被发现感染了加密钱银挖矿代码。 FireEye评价APT33或许是工程职业界一系列侵略和妄图侵略的暗地推手。 揭露陈述标明此活动或许与最近的破坏性进犯SHAMOON有关...