去年这个时候,毫不知情的参会人员在2020年NDSS上成为了新冠病毒的宿主,复制了成千万份的病毒copy;到了2021年,安全研究人员采取了强有力的isolation措施,成功地跨年将四大安全会议全部虚拟化举行。本周G.O.S.S.I.P小组在线参加了NDSS会议,同时也将在我们接下来三天的学术论文推荐栏目中,为大家带来今年NDSS的论文精彩摘录,更全面的会议论文内容,请大家关注会议官网 https://www.ndss-symposium.org/ndss-program/ndss-2021/
今天(2月22日)的报告摘录由Erya、KLi、Pyro三位作者共同完成
开幕式
今年的NDSS会议是四大安全会议在川普卸任后的首次举行,一共收到了573份论文投稿,虽然不能和AI等领域动辄上万篇投稿论文相比,但是在安全研究领域每篇论文的工作量都是巨大的(特别是实验内容),经过审稿,最后录用了87篇论文(录用率仅为15.2%)。
Session 1A: Network Security
A Devil of a Time: How Vulnerable is NTP to Malicious Timeservers?
网络时间协议(NTP)用来同步跨计算机系统的时间,在保证互联网应用的正确性和安全性方面扮演着重要的角色。例如TLS证书,DNS,BGP安全机制和HSTS等许多应用和安全协议都依赖于NTP的准确性和安全性。但是NTP容易受到时间偏移攻击(time shifting attacks)。尽管做出了许多努力,NTP仍然会受到恶意时间服务器的攻击。作者探讨了两种攻击策略对时间的影响。
利用现有的时间服务器 。该攻击目的是使得某一特定区域的客户端时间偏移,而不针对于特定用户。攻击者控制着区域R的时间服务器池中的一部分服务器集合A,即攻击者为以下情况:
攻击者是一个组织,合法的管理NTP服务器
攻击者有能力入侵部分服务器
攻击者能够控制NTP客户端与部分服务器的流量
通过利用对时间服务器子集A的控制,以不准确的时间响应由更高层的时间服务器发出的查询请求。攻击者可以通过控制的服务器集合执行时间偏移攻击来影响其他服务器的时间。
时间注入攻击。一个新的时间服务器的注册非常容易,只需要提供IP地址和电子邮件。攻击者可以注册时间服务器,并将其netspeed设置得尽可能大,来增加分配给客户端的机会。攻击者首先控制时间服务器子集,与第一种不同的是,该服务器子集是由攻击者自己注册的,而且该服务器子集直接与客户端进行交互。这些时间服务器控制对于某些客户端返回时间的正确性,来实现对特定客户端的攻击。
作者进行实验量化了攻击者获取的时间服务器会对该区域的时间产生的影响。首先作者统计了一些地区服务器的依赖性。
作者使用时间服务器依赖图,计算影响的时间服务器的比例, 实验表明控制很小一部分时间服务器能够影响许多其他时间服务器。
作者也对于时间注入攻击中,被控制的服务器分配给客户端的概率进行了分析。
作者提出了解决方法来防御攻击。作者建议每个NTP客户端应该同时并行地运行两个进程,主同步进程用于确定本地时间,第二个进程应用Chronos的可证明安全近似一致性算法。第二个进程的时间不会偏离主进程时间太多,则继续更新本地时间。
Session 1B: Program Analysis
KUBO: Precise and Scalable Detection of User-triggerable Undefined Behavior Bugs in OS Kernel
未定义行为漏洞(Undefined Behavior bugs,UB)广泛存在于低级编程语言所编写的代码中,包括整数溢出,除零操作,空指针解引用以及越界访问等等。对于OS kernel,可以被触发的UB可能会导致严重的后果,例如从非特权的用户空间完成对内核的利用。
先前针对UB漏洞检测的工作,为提供扩展性而牺牲精确性,导致检测结果存在极高的误报,进而导致检测工具可用性的降低。
针对此问题,本文作者实现了一个新的针对Linux kernel的UB检测器KUBO,主要针对可由用户空间输入触发的UB进行检测,同时兼顾了精确性和全内核可扩展性。KUBO的准确性主要来自于其对UB触发路径以及条件可达性的验证;全内核可扩展性主要来自于其高效的过程间分析(沿调用链按需后向分析)。
作者针对多个版本的Linux kernel进行了试验评估,发现23个之前未被发现的UB漏洞,并且误报率仅为27.5%(在此之前最先进的kernel UB检测误报率为91%)。
每个类型的UB都有其相应的触发条件以及一系列特征指令(称为UB条件和UB指令),例如整数溢出对应算数指令以及计算结果超出整数类型的范围。针对UB进行检测大多遵照以下方法:对于代码中存在的UB指令,检查UB条件是否可能成立。但之前工作的动态插桩(额外开销,不完备)或者静态检测(为了扩展性只进行过程内检测)均存在一定问题,导致报告的漏洞无法被触发或者触发无害。
KUBO只针对用户空间输入触发的UB漏洞,确保检测的漏洞会造成严重后果(例如用户空间可控的除法除数,可能造成DoS)。总结来说,KUBO针对以下类型的UB以及UB条件:
针对用户空间输入,作者考虑以下三种情况:
syscall/ioctl的参数
sysctl/sysfs
memory data transfer function(例如copy_from_user())
KUBO的检测流程如下图所示:
KUBO选取UBSan所插桩的指令作为UB指令,并通过Backward Userspace Input Tracking来确认UB指令是否处理用户空间输入的数据以及UB条件是否会满足,并进行相应报告。对于更为复杂的情况,则需要利用BTI(Bug Triggerability Indicator)Calculation以及Callchain Upwalk来确认。
具体来说,
Backward Userspace Input Tracking通过污点分析为数据标记tag(Userspace Input,Const以及Not known yet)。
BTI利用符号执行以及约束求解来判断bug是否会被触发。
Callchain Upwalk在调用链中向后回溯,以解决过程间检测的问题。
最终,作者的检测结果如下图所示,共发现越界读写和拒绝服务攻击在内的23处漏洞。
Session 1C: Privacy
Tales of FAVICONS and Caches: Persistent Tracking in Modern Browsers
本文主要研究了一种新的可以持续性跟踪用户方法,该方法利用了一个简单但是及其普遍的浏览器特性:favicons。
favicons是为了帮助用户可以快速的在他们的书签里区分不同的网站。所有现代web浏览器都支持favicons的获取,呈现和使用。
之所以favicons可以被用作跟踪,在于其以下特性
favicon 缓存不是浏览器http缓存的一部分,Favicon有专门的数据库来存储,叫做F-Cache,如下表所示
具有持久性,当用户清除浏览数据时,不会被清除,且最长可以缓存一年。
在浏览器无痕模式(incognito mode)下也可用。
利用这些特性,作者提出了新的跟踪方法,通过favicon缓存项的唯一性来创建和存储唯一标识符。该标识符可以在访问期间重新识别用户。
主要思想:
首先目标是要在用户浏览器中生成和存储唯一的标识符。主要思想是利用F-Cache中不同的favicon有不同的域名或路径。
使用二进制数(ID)来表示子路径集合。例如 domain.com/A 代表ID的第一个比特,domain.com/B 代表第二个比特。
将任意的ID转化为子路径序列。例如ID=<0101>被转化P=<A,B,C,D>中的路径<B,D>。
为子路径配置不同的favicon。给定路径的favicon项在缓存中存在,则ID的对应位置为1。
具体方法:
对于第一次访问的用户,生成新的N-bit的ID,映射到子路径序列,按照序列进行连续重定向。
对于再次访问的用户,需要重构ID。服务器对于所有的favicon请求均返回404错误,这就确保了F-Cache不会被修改。客户端的JS脚本强制重定向,遍历所有可用的子路径。例如一个4-Bit ID,重定向路径为[A→B→C→D],将没有发出favicon请求的子路径编码为1,因为他们的favicon已经被缓存。这样就确定了用户ID。
作者在不同的操作系统和浏览器上做了评估。
作者的攻击在所有使用favicon缓存中都有效,包括Chrome,Safari和Brave。
可以看到,构建和重构ID的过程都需要大量的重定向,用户越多,所需ID就越长,重定向就越多,网站性能就越差。作者也提出了以下方法来解决这一问题:
标识符分配策略
利用浏览器指纹
在其他的识别用户的方法(例如cookie等)都不可用时,再使用此方法。
作者评估了攻击在不同场景下的实用和性能,以及优化后的性能。
结果显示,在网络性能较差的场景下,攻击性能也没有显著的差异,进一步证明了,在实际场景中,使用favicon作为攻击途径的鲁棒性。
Awakening the Web’s Sleeper Agents: Misusing Service Workers for Privacy Leakage
Service workers(SWs)是一个令人兴奋的强大的技术,几乎被所有主流浏览器支持。它能够提供类似于本地应用的功能来改善用户体验。在开发者社区获得巨大影响的同时,没有受到太多的安全审查。所以本文首次对SW的API的使用进行了大规模研究。
作者使用Selenium来模拟浏览行为,自动化识别设置了SW的网站。对于在新的浏览器实例中打开的每个页面,等待10s来确保SW准备就绪,然后刷新页面,作者注入的JS代码读取navigator.serviceWorker.controller对象,如果网站使用SW,则该对象包含脚本URL和SW的状态,否则该对象为null。然后,作者使用动态分析工具来记录APIs的调用。作者也通过从互联网档案(Internet Archive)中获取的网站历史快照,分析了SW随时间的演化。
作者利用SW来进行历史嗅探攻击的基本思想为,用户浏览器中SW存在表明用户过去访问过特定网站,第三方网站的iframe加载特定网站的资源时会通过SW。这种SW隔离的缺乏产生了新的攻击向量。作者展示了两种历史嗅探攻击:
基于API的攻击。workerStart属性可以来判断请求是否被截获。当没有SW时,workerStart的属性将会是零。nextHopProtocol属性返回获取资源时使用的网络协议。当SW被使用时,该属性为空字符串。这些属性可以加载隐藏的ifames来获取。
基于时间的攻击。由于从SW缓存中加载资源所需时间明显少于从网络获取资源,由此可以来判断一个网站的SW是否被安装。所以作者巧妙地构造了三个iframes,一个iframe用于引导SW,另外两个通过iframes来加载同一资源,但是其中一个ifame加载的URL会带有一个随机参数,以使得资源从网络加载。通过对比加载资源时间的差异,即可以判断是否有SW存在。作者在实验中也证实了攻击的有效性。
利用该攻击,不仅可以对访问历史嗅探,还可以推断出更加敏感的信息。作者展示了如下事例:
注册推断(Registration Inference)。在用户访问某些网站,如Tinder,Gab等,SW不会缓存所有需要的资源,某些资源在用户通过身份认证后才会被缓存。
应用级信息推断。一些网站如whatsapp,会将联系人的缩略图缓存,利用这些缩略图可以重构受害者的社交图。
作者提出的攻击方法产生的根源是浏览器对SW不适当的隔离策略,而浏览器的改变和部署需要相当长的时间。所以作者也提出了解决方案,即SW实现控制逻辑,增加访问控制域,对于非授权的域名资源的请求直接从网络获取。
Session 2A: Network Policies
Reining in the Web’s Inconsistencies with Site Policy
近年来,越来越多的安全策略被部署在HTTP头部,客户端会强制执行这些安全策略,用以保护web应用程序的安全。这些安全策略通常是以一个页面(Page)为粒度的,因此可能会导致属于一个源/站点的不同页面间的配置存在不一致问题。
本篇文章关注的安全策略包括了以下三个:Cookie的安全属性,包括HttpOnly,Secure和SameSite,它们保护了Cookie不被攻击者窃取;内容安全策略,该策略指定了浏览器可执行脚本的来源,用来防范跨站点的XSS攻击;HTTP严格传输安全协议,该策略要求客户端使用HTTPS与网站进行通信。
作者分别对以上三个安全策略的不一致性问题进行了形式化定义。之后,作者对不一致性问题做了大规模调查。作者对10,878站点的13,369,750个URL进行了不一致性分析。作者发现:78个网站上的379个domain cookie在配置安全属性时存在不一致的问题;472个源在不同的页面上部署了不同的CSP;4,351个站点的HSTS部署存在跨源不一致的情况。
最后作者参考W3C的Origin Policy提出了Site Policy(SP)的解决方案。浏览器在访问网站之前会首先下载SP清单(并缓存下来)。之后在和网站通信时,对于在HTTP Header中设有Site-Policy的网站,浏览器会识别出策略标识符,并执行网站设定的策略,对于没有设置Site-Policy的网站,浏览器会根据SP清单执行默认的安全策略。当策略发生不一致的冲突时,SP会选择最严格的安全策略,如,对于HSTS的max-age参数,如果存在不一致时,max-age会取最大值。
From WHOIS to WHOWAS: A Large-Scale Measurement Study of Domain Registration Privacy under the GDPR
这篇论文介绍了通用数据保护条例(General Data Protection Regulation,GDPR)对域名注册的影响。当用户数据从(欧盟)内部流动或向其他国家流动时,GDPR要求保护这些数据不被窃取。到目前为止,网络应用根据GDPR做出了巨大的改变,例如网站设置Cookie前会向用户发出询问等。而本文关注了域名在注册时,域名注册商会收集注册者的信息,且在注册成功后,这些信息会被保存在公开的数据集(WHOIS提供商)中以供查询,由于这些信息处于GDPR的保护范围之内,因此ICANN提出了一个临时规范,以指示其签约的域名注册管理机构和域名注册服务商从WHOIS记录中删除个人信息。在本篇文章中作者对运行WHOIS记录的多方对GDPR做出的改变进行了大规模测量。特别的,测量的三个挑战包括了:WHOIS数据格式复杂多样;WHOIS提供商遵守GDPR的时间从未公布;ICANN临时规范模糊,WHOIS提供商可以采用多种编校方法。
针对前两个问题,作者与一家网络安全公司合作,收集到了时间跨度为2018年1月至2019年12月两年的12亿条WHOIS记录,总计约2.67亿个域名,其中属于欧洲经济区域(EEA)的有超过3200万个域名。
针对第三个问题,作者发现遵从GDPR的WHOIS提供者一般会使用简单和自动化的方法来大规模替换记录值,这会导致WHOIS记录值的高度同质性,由此,编校的记录会形成带有零或少量异常值的大集群,如下图所示。
受此启发,作者利用聚类算法,并使用离群值比率作为GDPR遵从性指标,对于域名所有者注册大量域而误判为集群的情况,作者使用了轻量级的自然语言处理技术来进行过滤。综上,作者设计了GCChecker,如下图所示。
作者的主要发现有:
GDPR给WHOIS生态系统带来了重大影响:超过85%的大型WHOIS提供者(就EEA赞助域名而言)现已符合GDPR,而小型登记机的构状况则令人担忧。尽管只有属于EEA域受GDPR监管,但超过60%的大型WHOIS提供商在EEA和非EEA域上都应用了相同的保护机制。
GDPR导致WHOIS系统发生了根本性的变化,由此会导致了69%的调研论文需要更新编辑过的信息。
最后,作者向包含不合规WHOIS记录的供应商报告了他们的发现。
点击