会议:NDSS 2020
作者:Avinash Sudhodanan(不太认识,没有找到主页,之前是The IMDEA Software Institute的一名PHD);Soheil Khodayari(https
目录
前言
昨天我们讲了一种攻击类型XS-Leaks,在NDSS20上,有一篇对该攻击较为全面的介绍。在这里写下论文笔记。
Abstract
这篇工作显示了更加复杂的COSI攻击。
INTRO
COSI攻击目的是确定受害者在攻击页面时的状态。这可能会导致受害者的隐私泄露,通过判断出某用户是否是该网页的账户,可以将用户的信息推送给婚后事务和sq有关的网站。COSI攻击在即使受害者使用匿名工具(例如虚拟专用网络)的情况下,也可以执行。
在COSI攻击中,攻击者使受害者访问一个攻击网页,这个攻击网页包含了至少一个目标网站的state-dependent URL(SD-URL)。例如,这个SD-URL指向目标网站的一个内容,这个内容只有用户有某种身份的时候才可以被访问。尽管SOP可以阻止攻击网页直接阅读对目标网站请求回复的内容,但是攻击者利用browser leak method(XS-Leak)来获取想要的信息。
前期相关研究的缺陷:
- 仅考虑了两个状态
- 仅在一个浏览器上
- 仅关注了specific XS-Leak
作者将他们的方法在一个叫做Basta-COSI工具上实施,并作为了一个开源工具ElasTest平台的一部分。
主要的贡献:
- 一个新颖的方法可以标识和实施更复杂的COSI攻击,攻击可以辨别出更多的状态和在更多中浏览器上开展。
- 发现了一种新颖的攻击在window.postMessage上
- 提出了实施已知COSI攻击的两种技术
- 设计方法Basta-COSI用于检测COSI攻击
- 把Basta-COSI放在开源工具ElasTest上
Overview
A. User state
COSI攻击中,攻击者的目标是相对于不受攻击者控制的目标网站,推断受害用户的状态。所有权属性包括用户是否为某个特定帐户的所有者,以及他是否拥有站点中存储的某些内容(例如,会议管理系统中的PDF纸)。每个标识用户状态的属性对于每个网站都是特定的。
B. COSI Attack Overview
准备阶段:
就是一个包含SD-URL的页面。作者这里说了怎样绕过SOP,存在XS-Leaks,它可以绕过SOP提取cross-oringin的信息?例如EventsFired——onload/onerror。作者在这里提出了COSI attack class,该类定义了对SD-URL的两种不同响应,可以使用XS-Leak来区分它们,可以将这些包含方法与XS-Leak结合使用 ,并且受浏览器影响。
基于此,作者提出了用于检测COSI攻击的一个新颖的方法。作者首先收集了相同URL的不同状态下的恢复,SD-URLs将会返回不同状态的URL。然后将这些不同的URL映射到attack class中,以发现攻击向量。当状态数目大于2,且发现了足够多数量的攻击对时,那么就认为网页存在攻击。
C. Beyond 2 States
如果只考虑两个状态,则有可能限制了攻击的种类;导致假阳性。
D. Threat Model
- 攻击者 欺骗受害者控制攻击网页;使受害者访问攻击网页;识别受害者浏览器版本。
- 受害者 访问网页;全新浏览器
- 目标站点:至少一个SD-URL 没有其他漏洞
COSI ATTACK CLASSESS
A. Discovering Attck Classes
发现COSI攻击类的方法:
- Identifying attack insances 从早期的技术博客,文献等发现的已有的攻击类。
- Generalizing instances into classes (实在觉得这篇论文的英文好难读懂,长难句过多)这里主要就是对攻击类建立实例,然后用不同的方法和不同的浏览器上测试。
- Discovering new attack classes
- Overall, we discovered 21 new attack classes, of which 12 use the EventsFired (i.e., onload/onerror) XS-Leak, 8 use the Object Property XS-Leak, and 1 uses a completely novel XS-Leak based on postMessage.
B. Attack Classes Decription
表III详细列出了上述过程确定的40种攻击类别。
- EventsFired 主要是对事件触发的考察
- Object Properties 对对象属性的考察
- postMessage 对post的信息并对POST返回的消息的考察
- CCSProRead 对CSS规则的考察
- JSError 对JS文件的考察
- JSObjectRead 对JS文件属性的考察
- CSPViolation 对内容安全策略的考察
- AppCacheError 对AppCache应用的考察,还记得之前有篇论文利用了AppCache吗!!可以做个笔记了
- Timing 对时间差的考察
BASTA-COSI
Setup 选择目标站点,拥有站点的所有状态的用户。Basta-COSI支持使用Python Selenium WebDriver编写的状态脚本。 使用已经获取的各种状态的用户在站点上执行各种操作。
Architecture 有三个部分
- URL data collection URL数据收集模块对目标站点进行爬虫以发现URL。即使用不同状态来访问URL,然后看是否有什么可以可用的SD-URLs。
如下面,对HotCRP爬虫收集到的URL。(我觉得会产生误报呀)
- 然后结合之前的攻击向量来查看是否有可行的SD-URLS。
拿表IV中使用SD-URL举例。 对于api.php,来自(R1,R2)的响应匹配两个静态攻击类别:EF-StatusErrorObject(对于Firefox和Edge),EF-StatusErrorLink(对于Chrome)。 同样,来自(R2,LO)的响应与(R1,R2)匹配两个相同的静态攻击类别。 最后,状态(R1,LO)与静态攻击类EF-XctoObject和EF-XctoScript匹配。 使用其他SD-URL(offline.php)重复该过程。 由于状态R1和R2返回相同的响应,因此(R1,R2)可以忽略。 对于状态(R1,LO),攻击类别EF-XctoObject和EF-XctoScript匹配。 最后,对于状态(R2,LO),响应与(R1,LO)相同,因此无需再次检查。 - 最后设计攻击页面
Experiements
为检查Basta-COSI的可用性,所以对4个开源的web应用,Alex Top 150的58个站点进行了扫描
A. Evaluation on Web Application
B. Evaluation on Web Application
C.Example Attacks
很像诺慢写得一个工作!!!!这是一种写作手法,可以学习一下,把一些典型的事例写在上面,来说明,喔,原来这些这么著名的网站也有攻击
DEFENSES AGAINST COSI ATTACK
- SameSite cookies
只有目标页面才可以添加SameSite cookies,这样就可以辨别出来请求可能来源于非源页面。 - Session-specific URLs
让token加密一下,无法从URL辨别出用户状态。 - Cross-Oringin-Resource-Policy
设置一个HTTP响应头,在告诉浏览器不允许跨源请求 - Fetch metadata
这是一种全新的HTTP请求标头,用于发送有关请求的其他来源数据 - Cross-Oringin-Opener-Policy
关于新的HTTP响应标头的讨论正在进行中,以防止恶意网站通过在窗口中打开它们来滥用其他网站。 这种防御措施可以防止使用window.open包含方法的COSI攻击类 - Tor Browser
可以抵御基于时间的XS-Leaks攻击。但其他方法仍可能存在攻击。 - SD-URL patching
针对特定的问题修改代码
To do list
- AppCache
- 这个工具检测URL过于草率
- 新颖的写作手法
- 以后可以测一下到底有多少人用了SameSite
- Fetch metadata
- Cross-Oringin-Opener-Policy