G.O.S.S.I.P 阅读推荐 2023-12-26 CoCo

admin 2023年12月26日18:18:26评论56 views字数 3480阅读11分36秒阅读模式

今天要为大家推荐的论文是获得今年CCS Distinguished Paper AwardCoCo: Efficient Browser Extension Vulnerability Detection via Coverage-guided, Concurrent Abstract Interpretation,由约翰霍普金斯大学Yinzhi Cao研究组完成并投稿。

G.O.S.S.I.P 阅读推荐 2023-12-26 CoCo

这篇文章的名字CoCo,是不是让你想到了皮克斯的动画电影《寻梦环游记》呢?然而此CoCo非彼CoCo🤔。在这篇论文中,CoCo是 Coverage-guided,Concurrent Abstract Interpretation 的缩写。意为以代码覆盖率为指导的、多线程同步的抽象解释。CoCo将抽象解释应用于JavaSciprt代码,用于挖掘浏览器插件中的漏洞。

本文将从威胁模型,算法设计与实验结果三方面论述该论文。

威胁模型:

浏览器插件能为浏览器提供一些额外功能。日常中比较常用的浏览器插件有:Grammarly,用于提供语法检查;AdBlock,用于屏蔽网页广告等。诸如此类的浏览器插件通过使用一些特权API,为浏览器提供一些额外功能,给用户带来不少便利。然而,在提供便利的同时,浏览器插件的漏洞也可能造成隐私泄漏、API越权访问等问题。

作者考虑威胁模型(Threat Model)如下:

存在两方势力:Adversary vs Victim。Victim插件在网页中工作,Adversary有可能以两种形态出现:

  1. 作为一个malicious插件,通过API: chrome.runtime.sendMessage向Victim插件发送一些坏消息;

  2. 作为一个malicious/compromised网页,通过激发页面中被Victim插件监听的事件来向Victim插件发送坏消息;或者同1所述,通过API向Victim插件发送一些坏消息。

无论是上述哪一种情况,都有可能造成代码执行、发送越权的AJAX请求、文件下载,以及存储访问,包括cookie、历史记录、书签、插件的本地存储等等,

下面将从一个例子入手,了解浏览器插件漏洞检测中的两大主要问题。

AliExpress to Shopify Importer 是一个帮助用户将AliExpress中的商品信息同步到Shopify中的插件。通常情况下,用户在AliExpress网页中点击选中商品,对应信息即可同步到Shopify中的对应商品中。

但是假如该插件运行的网页被compromised,那么这个网页有可能向插件发送一些坏消息,经过插件对消息的处理和后续代码的执行,最终能造成向任意网页发送ajax请求,即越权漏洞

接下来结合代码,分析这个攻击的实现过程。

G.O.S.S.I.P 阅读推荐 2023-12-26 CoCo

第一行定义actionList为一个数列,里面包含一些函数名。这些函数会在后续被定义并调用。其中,getData函数在13-23行定义。

第二行使用chrome.runtime.onMessageExternal.addListener注册插件接收外部消息的回调函数。注意到第三行回调函数的第一个参数req为外部消息,所以可能会是攻击者伪造的消息。

第七行定义一个变量名为index,用于存储req.action在actionList中的索引。第八行利用第七行的index在actionList中找到函数名,并调用这个函数,函数调用时的参数为req。

至此可见,假设攻击者发送的消息req为:

{action: "getData",product_url:"victim.com"},

第七行中index即为0,第八行就会引发getData函数的调用,并且参数为:

{action: "getData",product_url:"victim.com"}

进入getData函数以后,在第16行发送一个ajax请求,其中url地址为req.product。在此情况下即为"victim.com"。由此可见,通过伪造并发送形如{action: "getData",

product_url:"victim.com"}的消息,攻击者即可实现使AliExpress to Shopify Importer 插件向任意网页发送ajax请求的攻击,造成API越权。

算法设计:

在整个攻击过程中,结合代码,作者发现使用现有方案检测上述漏洞主要存在以下两个科学问题:

  1. 难以支持伴随数列查找的动态函数调用

  2. 代码可达性分析 (Reachability) 不精准

第一个问题主要集中在如何生成动态数列的查找以及动态函数调用的边。发表在CCS 2021的工作DoubleX无法解决该问题。

第二个问题在于,漏洞代码处在一个nested if else branch中,发表在USENIX 2022的工作ODGen由于超时问题,会卡在某个位于漏洞代码之前的if branch处而无法到达漏洞代码的位置,以至于无法检测到该漏洞。

针对这两个问题,CoCo的系统设计如下:

G.O.S.S.I.P 阅读推荐 2023-12-26 CoCo

其中Thread scheduler和Thread executor分别解决分析超时和生成动态函数调用边的问题。

在Thread executor中我们设计了Modeled Client-side APIs、Taint propagator和Vulnerability detector。其中Modeled Client-side APIs用于model客户端以及浏览器插件特有的一些API,例如chrome.runtime.onMessageExternal.addListener等。Taint propagator数据流边和动态函数调用边的生成。Vulnerability detector在代码最终运行到sink函数时检验其参数是否为tainted,并最终输出结果。

在Thread scheduler中我们设计了thread creator,用于在代码中遇到条件分支语句或者event语句时生成新的线程,并行执行该代码。Priority calculator用于计算每个生成的线程的优先级,并push进ready queue中。在遇到nested branch的时候,CoCo采用不同的政策处理。其中一个政策为,先将parent branch push进一个waiting queue中,先将child branches push进ready queue中执行。当child branch全都运行结束以后,再将parent branch push进ready queue中执行。CoCo论文中还讨论了其他两种处理parent branch和child branch的政策,具体细节可以参考论文。

实验结果:

CoCo已经开源实现。并在两个数据集上分别测试。一个数据集为大规模数据集,其中包含145,130个浏览器插件。另一个数据集为之前工作提供的漏洞数据集,其中包含250个漏洞。

在大范围数据集上的测试表明,CoCo发现了超过40个零日漏洞。CoCo的检测范围覆盖ODGen的所有检测结果。在Groundtruth数据集上的测试表明CoCo具有优于DoubleX的False Positive Rate。此外,实验表明CoCo的使用代码覆盖率为引导的、多线程并发的抽象解释对于代码覆盖率有显著提升。同时,CoCo的运行过程中具有合理的分析时间、所需线程数和内存消耗。

G.O.S.S.I.P 阅读推荐 2023-12-26 CoCo

论文链接:https://dl.acm.org/doi/10.1145/3576915.3616584

github:https://github.com/CoCoAbstractInterpretation/CoCo

 

投稿作者介绍:

余蒹葭 (https://www.cs.jhu.edu/~susuyu/),约翰霍普金斯计算机学院博士研究生,导师为曹寅志 (https://yinzhicao.org/),研究方向为网络安全,系统安全,程序分析。相关研究成果已在ACM CCS, USENIX Security等会议上发表。

李松 (https://songli.io/),浙江大学网络空间安全学院百人计划研究员,博导。研究方向包应用分析、软件漏洞挖掘、程序分析和网络隐私与安全。近年在各领域顶会(IEEE S&P、USENIX Security、NDSS、ACM CCS、ESEC/FSE)发表十余篇论文,搭建的移动应用分析平台和漏洞挖掘平台受到广泛应用,发现数百个库漏洞和数千个存在漏洞的网站,相关研究被包括纽约时报在内的数十家主流媒体报道。



原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-12-26 CoCo

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月26日18:18:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-12-26 CoCohttps://cn-sec.com/archives/2336701.html

发表评论

匿名网友 填写信息