Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Poison Over Troubled Forwarders: A Cache Poisoning Attack Targeting DNS Forwarding Devices

作者:Xiaofeng Zheng, Chaoyi Lu, Jian Peng, Qiushi Yang, Dongjie Zhou, Baojun Liu, Keyu Man, Shuang Hao, Haixin Duan and Zhiyun Qian 单位:Tsinghua University; Qi An Xin Technology Research Institute; State Key Laboratory of Mathematical Engineering and Advanced Computing; University of California, Riverside; University of Texas at Dallas 会议:the Proceedings of the 29th USENIX Security Symposium 原文:https://www.usenix.org/system/files/sec20-zheng.pdf

[ToC]

Abstract

在当代的 DNS 基础架构中,DNS 转发器在 DNS 客户端与 DNS 递归解释器中扮演着非常重要的角色。DNS 转发器一边相对于 DNS 客户端作为 DNS 服务器,一边转发客户端的 DNS 请求到其他服务器上。由于这种优势和许多应用场景,DNS 转发器被广泛部署。但是,作者的研究显示,DNS 转发器在 DNS 基础架构中更易受攻击。

在本文中,作者介绍了一种针对 DNS 转发器的缓存投毒攻击。通过这种攻击,恶意攻击者可以通过攻击者可控的域名来对特定域名注入恶意的记录,并绕过广泛部署的缓存投毒防御措施。通过在常用的家庭路由器和 DNS 转发器上测试,作者发现即便是很大的厂商(例如 TP-Link,Linksys,dnsmasq 和 MS DNS)的产品也出现了严重的安全漏洞。作者进一步在全球范围内进行了评估,估计出使用了存在漏洞的 DNS 转发器的移动客户端。

作者最后像多个厂商报告了这些问题,并收到了较好的反馈。作者的工作同时也证明了 DNS 转发器是 DNS 基础架构中的软肋,并呼吁社区和厂商遵循 DNS 转发器实现的标准。

A Generic Technique for Automatically Finding Defense-Aware Code Reuse Attacks

作者:Edward J. Schwartz1,Cory F. Cohen1, Jeffrey S. Gennari1, Stephanie M. Schwartz2

单位:Carnegie Mellon University,Millersville University

会议:CCS 2020

论文链接:https://edmcman.github.io/papers/ccs20.pdf

Abstract

过去十年里,出现了大量针对代码重用攻击的研究。这项研究起源于早期对 ROP 攻击的研究,该攻击表明当时新提出的不可执行内存(NX)保护是可以被绕过的。在那之后防御者提出了针对 ret 指令的防御措施来防止 ROP攻击,而后攻击者又实现了 JOP 等实现等价ret 指令的攻击方法。最近几年又一些团体提出了新的防御措施防止代码重用攻击,比如控制流完整性 CFI 的检测,之后又有了对这些防御方式的攻击,比如对于 CFI 保护的绕过方法 Data-Oriented Programming。defense-aware attack 是指根据防御策略来实现特定的攻击,作者提出了一个通用的框架来实现 defense-aware attack。核心观点是,代码重用攻击可以被定义为状态可达性问题,而各种防御策略是防止状态之间的某些转换。作者实现一个名为Limbo的工具,并且对Limbo进行了评估。评估结果表明当可供重用的代码很少时,Limbo表现出色,使其成为现有技术的补充。另外,尽管Limbo没有关于ROP或DOP攻击的针对性知识和设计,但它的性能优于自动化ROP攻击的现有系统(angrop),以及针对细粒度CFI的保护下自动化DOP攻击的系统( BOPC )。

SMOKE: Scalable Path-Sensitive Memory Leak Detection for Millions of Lines of Code

作者:Gang Fan∗, Rongxin Wu∗, Qingkai Shi∗, Xiao Xiao†, Jinguo Zhou†, Charles Zhang∗

单位:∗Hong Kong University of Science and Technology , †Sourcebrella Inc.

会议:International Conference on Software Engineering 2019

论文:Scalable Path-Sensitive Memory Leak Detection for Millions of Lines of Code

Abstract

使用值流图(value-flow graph) 进行 memory leak 漏洞检测的方法存在效率低下的问题。为了提升检测的效率,SMOKE 采用自行设计的 use-flow graph ,将内存泄漏漏洞检测转换成有限状态机上的状态转换问题。实验表明,SMOKE 的运行效率比现有的工具要快上 5.2 到 22.8 倍,且误报率仅为 24.4%。

Cardpliance: PCI DSS Compliance of Android Applications

作者:Samin Yaseer Mahmud*, Akhil Acharya*, Benjamin Andow†, William Enck*, and Bradley Reaves*

单位:*North Carolina State University, †IBM T.J. Watson Research Center

出处:USENIX 2020

原文:https://www.usenix.org/conference/usenixsecurity20/presentation/mahmud

Abstract

智能手机及其应用已经自然地成为金融交易技术的重要组成部分,但是,以往的研究在很大程度上忽略了要求用户输入信用卡号的应用程序,此类应用对安全性特别敏感,并且受支付卡行业数据安全标准(PCI DSS)的约束。

在本文中,作者设计了一个名为Cardpliance的工具,该工具将图形用户界面的语义与静态程序分析相结合,以捕获PCI DSS的相关要求。作者使用Cardpliance研究了358个来自Google Play的流行应用程序,这些应用程序要求用户输入信用卡号。总体而言,发现了358个应用程序中有1.67%不符合PCI DSS,并且存在漏洞,其中包括存储信用卡号和卡验证码的方式不正确。这些发现大致反映了流行Android应用程序对PCI DSS的遵守状态。

Analyzing Third Party Service Dependencies in Modern Web Services: Have We Learned From the Mirai-Dyn Incident?

作者:Aqsa Kashaf,Vyas Sekar,Yuvraj Agarwal

单位:Carnegie Mellon University

出处:IMC 2020

资料:Paper

1 摘要

现在许多的网站都依靠第三方提供服务,但是这些第三方服务会使得原网站面临网络攻击(如DDOS)、级联故障(如GlobalSign撤销错误)的共享风险。本文主要分析了三种关键基础设施——DNS、CDN和CA的证书撤销检查,它们的流行程度及造成的影响,通过分析这些基础设施之间的直接依赖和间接依赖关系同时比对在2016年和2020年快照之间的差异得出了以下四个结论:(1)Alexa排名前十万的网站中,89%的网站严重依赖第三方的DNS、CDN或CA提供商,如果这些服务商倒闭,这些网站可能遭遇严重的服务中断;(2)第三方服务使用集中,CDN、DNS、CA服务的前三大供应商可以影响前10万网站的50%-70%;(3)间接依赖将流行的CDN和DNS提供商的影响放大了25倍;(4)2016-2020部分第三方依赖性和集中度略有增加。

Methodologies for Quantifying (Re-)randomization Security and Timing Under JIT-ROP

会议:CCS’20

论文名称:Methodologies for Quantifying (Re-)randomization Security and Timing under JIT-ROP

Introduction

linux中的ASLR属于Coarse-grained ASLR,其只会将module/segment作为整体进行随机化,然而攻击者只需要泄露出module中的一个地址,就可以知道该module的基地址,从而可以在ROP时利用整个模块中的gadget。

因此,安全研究人员设计出了多种Fine-grained ASLR,即以functions、basic blocks、instructions、machine register为粒度进行随机化,以缓解ROP类攻击。再后来,又出现了re-randomization的方案,即每间隔一定时间就重新进行随机化,以减小攻击者的时间窗口。

本文提出了一种量化评估上述随机化方案的安全性及re-randomization中间隔时间的方法。

作者的贡献包含以下几个方面:

  • 提供了一种测量JIT-ROP gadget可用性、质量和图灵完备的方法
  • 提供了一种对于re-randomization间隔时间上界t的计算方法,经过对nginx, proftpd, firefox等应用程序的测试,t的范围在1.5~3.5s。
  • 发现了在fine-grained ASLR的场景下,无论用于漏露的起始代码指针在哪里,通过JIT-ROP的方式泄露gadget,泄露出的gadget集合的收敛相同。而起始代码指针的位置与收敛的速度有关。
  • 提出了一种量化JIT-ROP gadget数量的通用量化方法。并在实验中发现单轮的instruction-level的随机化方案能够减少约90%可用gadget数量。研究发现相比与堆和data段,更容易通过栈泄露出libc的地址,栈中平均包含16个指向libc的指针。

PDiff: Semantic-based Patch Presence Testing for Downstream Kernels

作者:Zheyue Jiang,Yuan Zhang,Jun Xu,Qi Wen,Zhenghe Wang,Xiaohan Zhang,Xinyu Xing,Min Yang,Zhemin Yang

单位:复旦大学

出处:CCS 2020

论文:paper

1.Abstract

这篇文章介绍了一种从patch-related functions中提取语义信息,比较语义信息的相似性来度量开源Kernel 中目标patch存在性的方法。

iDEA: Static Analysis on the Security of Apple Kernel Drivers

作者:Xiaolong Bai, Luyi Xing, Min Zheng, Fuping Qu

单位:Orion Security Lab, Alibaba Group. Indiana University Bloomington

会议:CCS 2020

论文链接:iDEA: Static Analysis on the Security of Apple Kernel Drivers

Abstract

Apple OS(例如iOS,tvOS,iPadOS,macOS等)的driver在kernel space中运行,驱动漏洞可能招致严重的安全后果。尽管驱动漏洞比例很高,但从未有工作对Apple驱动进行系统的静态分析与漏洞检测。作者开发了第一个自动静态分析工具iDEA,用于查找Apple driver binary中的bug,并针对两种常见的安全问题(条件竞争和越界读/写)进行检测,对主流Apple OS的15个版本的共3400个Apple driver binary进行首次大规模研究,发现了35个0day。

Temporal System Call Specialization for Attack Surface Reduction

作者:Seyedhamed Ghavamnia, Tapti Palit, Shachee Mishra, Michalis Polychronakis

单位:Stony Brook University

出处:USENIX Security 2020

原文:https://www.usenix.org/system/files/sec20-ghavamnia.pdf

Introduction

通过移除应用程序不必要的组件或者代码,可以在不引入额外开销的情况下降低攻击面。 之前已经有类似的工作,例如usenix security 2018的Piece-Wise以及ACSAC 2019的Nibbler. 这两个工作分别针对源码和二进制文件进行了library debloating。但是这两个工作共有的一个缺点是他们将程序运行的生命期当作一个整体进行分析。实际上程序运行不同阶段的行为和调用的syscall均有较大差别,分阶段禁用syscall可以为减少攻击面带来更好的效果。

在本文中,作者提出了一种名为temporal specialization的新方法,通过在代码的不同执行阶段限制可用的syscall集合以减少攻击面。作者发现多数服务端代码会分为初始阶段和服务阶段(initialization and serving phases),并且一些较为敏感的syscall(类似execve)可以在初始阶段之后被禁用。 作者基于LLVM实现了方法的原型,并选取了6个流行的开源应用进行了评估。 结果显示作者的方法可以比现有的library specialization方法多禁用51%的syscall,且可以抵御13个Linux的提权漏洞。

分析程序不同阶段使用的syscall,需要通过构建可靠和准确的call graph。但是对于c和c++编写的程序,由于函数指针的存在,分析会变得比较复杂。即使是最先进的指向分析也会收到不精确和过估计的影响。作者利用类型信息和可达性信息提高了指向分析的准确度。 在对不同阶段syscall的使用分析完成后,作者用Seccomp BPF禁用了不需要的syscall,达到了降低攻击面的目的。

NativeX: Native Executioner Freezes Android

作者:Qinsheng Hou ,Yao Cheng ,Lingyun Ying

单位:QI-ANXIN Technology Research Institute,Huawei International

会议:AsiaCCS 2020

链接:pdf

简介

Android的基本资源,包括系统资源和计算资源,都是framework层和native层的应用共享的。由于异步的工作机制,如果有一个进程独占了共享的资源,那么其他的进程就会因为等待资源被阻塞。为了避免这一问题,Android提供了一些资源管理机制,比如Application Not Responding (ANR)用于处理应用没有响应的情况,Low Memory Killer (LMK) 用于在内存少的时候杀死不重要的进程,watchdog用于重要系统服务没有响应的时候重启它。

但是,作者发现这些机制都不能很好的处理native进程对资源的独占情况。Android系统上运行的native进程包括两种:一是系统的Linux可执行文件,二是通过Java API Runtime.getRuntime().exec()和native APIfork()system()启动的。

作者设计了一个分析工具NativeX(Native eXecutioner)可以识别存在威胁的Android命令并自动生成PoC。在Android版本为4.2到9.0的设备上,作者发现这种漏洞存在于99.7%的超过20亿的IoT设备和手机。