Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Exaggerated Error Handling Hurts! An In-Depth Study and Context-Aware Detection

作者:Aditya Pakki, Kangjie Lu

单位:University of Minnesota

出处:CCS 2020

资料:Paper

1. Abstract

操作系统内核里有很多的错误处理代码,本文作者发现如果过度处理错误,反而会影响安全性和可靠性,作者将这种问题命名为EEH (Exaggerated Error Handling) 。EEH可能导致DoS、数据丢失、控制流完整性破坏、内存泄露等问题。作者提出了一种检测EEH的方法:EECATCH。EECATCH以上下文感知的方式来检测EEH。作者实现了EECATCH的原型系统,通过跨过程的、域敏感、上下文敏感的静态分析进行EEH的检测。实验评估后,EECATCH总共报告了104个case,经过人工检查,确认了64个EEH Bug,其中48个已经被确认。

Typestate-Guided Fuzzer for Discovering Use-after-Free Vulnerabilities

作者:Haijun Wang^1^ ^2^, Xiaofei Xie^3^, Yi Li^3^, Cheng Wen^2^, Yuekang Li^3^, Yang Liu^3^ ^4^, Shengchao Qin^5^ ^2^, Hongxu Chen^3^, and Yulei Sui^6^

单位:^1^Ant Financial Services Group, ^2^Shenzhen University, ^3^Nanyang Technological University, ^4^Zhejiang Sci-Tech University, ^5^Teesside University, and ^6^University of Technology Sydney

出处:ICSE ‘20

原文:Typestate-Guided Fuzzer for Discovering Use-after-Free Vulnerabilities

Abstract

现有基于覆盖率的模糊测试框架通常使用控制流图覆盖率来引导模糊测试的过程。然而单一的使用控制流图覆盖率并不能有效地发现例如UaF(use-after-free)等类型的漏洞。这是因为触发UaF漏洞往往需要以某种特定的顺序执行一长串的操作序列,这对于现有的模糊测试框架来说是非常困难的。

因此作者将UaF漏洞抽象为类型状态(typestate)属性,并提出了类型状态引导的模糊测试框架UAFL来发现违反该类型状态属性的漏洞。作者首先执行静态类型状态分析来找到可能违反类型状态属性的操作序列。这些操作序列随后被用来引导UAFL逐步地生成违反该类型状态属性的测试用例。此外作者还采用了信息流分析来提升UAFL的有效性。

作者选取了14个流行的现实程序对UAFL进行了深入的评估。结果表明UAFL发现漏洞的效率要明显优于其它现有的模糊测试框架,其发现了10个之前未知的漏洞,其中包括5个新的CVE漏洞。

On Using Application-Layer Middlebox Protocols for Peeking Behind NAT Gateways

作者:Teemu Rytilahti, Thorsten Holz

单位:Ruhr University Bochum

会议:The Network and Distributed System Security Symposium (NDSS) 2020

原文:On Using Application-Layer Middlebox Protocols for Peeking Behind NAT Gateways

Abstract

由于 NAT、防火墙等原因,现有的端口扫描器并不能完整覆盖到所有连接到互联网上的设备。尤其是 NAT 的广泛部署带来了一个隐藏设备的副作用。但是由于一些需要端到端的协议的需求,很多方法被部署用来穿透网络屏障。

在这篇文章中,作者研究了攻击者是如何使用这种应用层中间件来攻击网关后面的设备的。更具体而言,作者使用合法的协议特性来调查这几种不同的应用层中间件。

  1. 持久性端口映射协议,例如 UPnP 和 NAT-PCP/PMP
  2. 非持久协议,例如 SOCKS 和 HTTP 代理

作者进行了一次互联网际的扫描并分析发现,互联网上有数十万个主机存在上述问题。而更令人担忧的是,经验性的证据表明已经有攻击者在互联网上利用这种漏洞来攻击 NAT 网关后的设备。作者还发现有至少 24% 的开放互联网代理配置有误,可以用来访问不可路由的主机的地址。

SEIMI: Efficient and Secure SMAP-Enabled Intra-process Memory Isolation

作者:Zhe Wang, Chenggang Wu, Mengyao Xie, Yinqian Zhang Kangjie Lu Xiaofeng Zhang, Yuanming Lai, Yan Kang Min Yang

单位: State Key Laboratory of Computer Architecture, Institute of Computing Technology, Chinese Academy of Sciences, University of Chinese Academy of Sciences, The Ohio State University, University of Minnesota, Fudan University

会议:IEEE Symposium on Security and Privacy 2020

原文:https://www-users.cs.umn.edu/~kjlu/papers/seimi.pdf

Abstract

为了防御内存攻击,研究者近年来提出了各种各样的内存防御技术。比如 CFI (control-flow integrity)控制流完整性, CPI (code-pointer integrity) 指针完整性, Shadow Stack 。运用了这些技术之后,确实能够大大缓解内存攻击带来的危害。但是随着这些防御技术的出现,不少研究者也发现了应对这些防御的攻击技术,比如说针对 CFI 的 data-oriented 攻击等等。为了实现这些攻击,一般情况下都需要泄露一定量的关键数据。于是研究者为了应对这些攻击,往往会应用进程内隔离技术来保护关键数据,防止它们被恶意的攻击者访问甚至是修改。但是这些内存隔离技术往往会带来不少的性能损耗,以致于大多数情况下它们都无法被应用在实际环境之中。作者为了缓解这个问题,结合虚拟化技术以及 SMAP 技术实现了一种非常高效的内存隔离技术。

KARONTE: Detecting Insecure Multi-binary Interactions in Embedded Firmware

作者:Nilo Redini1,Aravind Machiry1,Ruoyu Wang2

单位:UC Santa Barbara,Arizona State University

会议:IEEE Symposium on Security and Privacy 2020

原文:KARONTE: Detecting Insecure Multi-binary Interactions in Embedded Firmware

Abstract

​ 目前的 IOT 设备固件一般有两种实现,一种是基于 linux,由大量相互依赖的 binary 构成,另一种是编写各个模块并编译成一个巨大的单 binary 的嵌入式 OS(又称 blob firmware)。之前的有研究者分析了数万个固件,发现其中有 86% 都是第一种实现,即固件基于 linux,由大量独立的二进制文件相互通信协作实现功能。

​ 但现有的静态分析工具在面对这种由多个二进制文件协作提供服务的固件时,不能充分地建模分析,效率低且误报率高。因此作者开发了一个静态分析工具 KARONTE 来处理这类嵌入式设备固件。该工具能够通过建模和跟踪多个二进制文件的交互来分析嵌入式设备固件,其核心方法是在二进制文件之间传播污点信息,以检测不安全的交互并识别漏洞。

​ 作者利用 KARONTE 对 53 个常用的固件样本进行了测试,并发现了 46 个 0-day 和 5 个 n-day 漏洞。

Fuzzing Error Handling Code Using Context-Sensitive Software Fault Injection

作者:Zu-Ming Jiang, Jia-Ju Bai, Kangjie Lu, Shi-Min Hu

单位:Tsinghua University, University of Minnesota

会议:USENIX Security 2020

出处:Fuzzing Error Handling Code using Context-Sensitive Software Fault Injection

Abstract & Introduction

SFI (Software Fault Injection) vs SFI (Software-Based Fault Isolation) details

异常处理代码中可能存在漏洞,这些漏洞可能造成DOS、信息泄露等安全隐患。而目前的fuzzing方式很难覆盖到这些代码,因为这些异常处理代码只在某些错误发生时被调用(内存、网络、文件)。针对异常处理代码的传统测试方式为software fault injection(SFI),SFI通过向程序中引入异常,来测试程序是否能够正常处理异常。而目前的SFI技术只能进行context-insensitive的fault injection,存在较大的局限性。如下图所示,context-insensitive的SFI会将两个malloc都引入异常,因此无法触发bug。

作者提出了一种基于context-sensitive SFI的fuzzing方式,能够有效的发现异常处理代码中的bug。

作者的贡献在于:

  • 作者针对于异常处理代码进行了调研,发现42%的异常处理代码与偶尔发生的异常相关联;而现有的fuzzing工具仅能发现少量与异常处理相关的漏洞。
  • 作者提出了一个种基于context-sensitive的SFI fuzzing方式,能够动态的根据异常处理代码的上下文注入错误,以覆盖那些传统fuzzer难以触发的异常处理代码。
  • 基于该方法实现了一个fuzzing framework,FIFUZZ,能够高效的测试异常处理代码。FIFUZZ时第一个能够基于函数上下文来测试异常处理代码的fuzzing framework。
  • 作者对FIFUZZ在9个well-tested and widely-used的C语言程序上进行测试,发现了50个漏洞。并与现有的fuzzing工具进行对比,发现了需要遗漏的漏洞。

Fuzzing JavaScript Engines With Aspect-preserving Mutation

作者:Soyeon Park, Wen Xu, Insu Yun, Daehee Jang, Taesoo Kim

单位:Georgia Institute of Technology

出处:S&P ‘20

原文:Fuzzing JavaScript Engines with Aspect-preserving Mutation

Abstract

Fuzzing是一种用于发现复杂程序中的bug或漏洞的技术,但现有fuzzing技术,无论是生成类(generative)还是突变类(mutational)方法,都难以充分利用高质量输入语料库(例如PoC或单元测试)。现有的fuzzer为了提高代码覆盖率,倾向于破坏输入语料库中编码的细微语义或条件,以生成新的测试用例。但是,对于类似于JavaScript引擎这种复杂程序,这种常规设计导致测试案例只能解决复杂代码库的浅层部分,由于巨大的输入空间和复杂的逻辑关系而无法有效地解决深层错误。

在本文中,作者提出一种称为切面保持突变(aspect-preserving mutation)的新技术,该技术可随机保留希望在突变间保持的特性,即“切面”(aspect)。作者设计了DIE,在该fuzzing框架中通过两种变异策略(即结构保留和类型保留的变异)进行了切面的保留。作者的评估表明,与最新的JavaScript fuzzer相比,DIE的切面保持不变的突变在发现新错误(多出5.7倍的独特崩溃)和生成有效的测试用例(减少2.4倍的运行时错误)方面更有效。 DIE在ChakraCore,JavaScriptCore和V8中新发现了48个高影响力的bug(目前已修复38个,分配12个CVE)。 DIE的源代码已经开源。

Meddling Middlemen: Empirical Analysis of the Risks of Data-Saving Mobile Browsers

作者&组织:Brian Kondracki(Stony Brook University), Assel Aliyeva(Boston University), Manuel Egele(Boston University), Jason Polakis(University of Illinois at Chicago), Nick Nikiforakis(Boston University)

会议:IEEE Symposium on Security and Privacy 2020

链接:Link

Abstract

在本篇论文中,作者对安卓data-saving浏览器的安全和隐私问题进行了全面的研究。

Introduction

为了带给用户更流畅和快速的体验,在手机浏览器市场中占比更多,许多浏览器开启了”save data“的模式。有这种功能的浏览器被称为data-saving 浏览器(DSB)。该功能通过代理服务器分流用户流量,代理服务器处理应用程序级逻辑,并返回压缩的静态页面和资源。这可以减少用户的网络流量以及客户端设备的计算开销。

在本文中,作者去对DBS生态系统进行了全面的分析。作者首先从Google Playstore中手动选取了9个提供data saving功能的浏览器。然后对这9个浏览器从基础设施、加密、协议头、应用程序行为和用户体验5个维度进行了分析。

  • 作者首先进行了对DSB的网络基础进行了探索性调查,并找到了多个网络代理运行着严重过时的软件。
  • 作者的实验表明当允许data-saving模式时,网站的功能和行为会有所变化,这将会引入严重的脆弱性。
  • 作者建立了一个测试管道,用于比较由web服务器提供的服务与代理优化后到达终端用户设备的数据。
  • 此外,作者还强调了data-saving功能还忽略了网站的安全头,破坏了web应用程序的安全保证。

作者的实验表明了在浏览器中启用data-saving模式就相当于通过一个残破的玻璃浏览页面,使得用户在多个维度上受到了不利的影响。

作者的贡献包括

  • 作者对流行的浏览器中data-saving功能带来的安全风险进行了首次分析。
  • 作者对适用于Android的DSB进行了全面的安全性调查,并揭示了其内部的功能。实验揭示了一系列缺陷,包括错误配置和有问题的操作,这些缺陷会严重影响用户通信的安全性和隐私性。
  • 作者负责任得将实验过程提供给浏览器供应商。

TextExerciser: Feedback-driven Text Input Exercising for Android Applications

作者:Yuyu He,1, Lei Zhang,1, Zhemin Yang1, Yinzhi Cao2, Keke Lian1, Shuai Li1, Wei Yang3, Zhibo Zhang1 Min Yang1, Yuan Zhang1, Haixin Duan4

单位:1: Fudan University, 2: Johns Hopkins University, 3: University of Texas at Dalla, 4: Tsinghua University

会议:S&P’20

链接:pdf

简介

Exerciser是指经常用于动态分析框架中的,驱动Android应用程序到达不同代码分支的应用程序。例如Monkey,可以为Android app随机生成UI事件,以达到更高的代码覆盖率。

文本输入的Exerciser有两个挑战:1)无法在合理的时间内对输入进行枚举;2)输入通常需要满足非平凡的约束。

作者提出了一种基于feedback驱动的文本输入的exerciser。使用的一个重要观察是输入无论是违反了客户端还是服务器的约束,都会提供一个线索,使用这个提供的线索进行改进输入。流程是:

  1. TextExerciser根据输入返回的信息提取与格式错误的文本输入相关的所有提示。
  2. 采用自然语言处理将提示解析为语法树并理解语义。
  3. 根据提示语义生成约束,并使用约束求解器输出可能的输入。
  4. 提交可能的输入——如果输入仍然不能满足约束条件,则TextExerciser将迭代该过程,直到找到有效输入为止。

作者从Google Play收集上下载了6,000种流行应用进行TextExerciser的评估,与现有工作相比获得了更高的代码覆盖率,并且与动态分析框架结合进行评估,能挖掘到更多的漏洞。

BIAS: Bluetooth Impersonation AttackS

会议: IEEE Symposium on Security and Privacy 2020

作者: Daniele Antonioli,Nils Ole Tippenhauer, Kasper Rasmussen

单位: School of Computer and Communication Sciences EPFL

​ CISPA Helmholtz Center for Information Security

​ Department of Computer Science University of Oxford

链接: BIAS: Bluetooth Impersonation AttackS

1 Introduction

蓝牙通信标准包含LSC(传统安全连接)和SC(安全连接)两种连接机制。

在本文中,作者展示了蓝牙规范中存在一些漏洞,使得攻击者能够在安全连接建立阶段实施冒充攻击。这些漏洞包括缺少强制性双向认证、角色转换的过度授权以及身份认证过程降级。作者详细的描述了每一种漏洞,并且利用他们来实现一系列攻击。作者把此类攻击称为Bluetooth Impersonation AttackS (BIAS)。

由于作者的攻击是针对蓝牙通信标准,因此对于任何符合标准的蓝牙设备,不管其使用的蓝牙版本、安全模式、设备制造商以及实现细节,攻击都是有效的。此外,由于蓝牙标准不要求通知终端用户认证过程的结果或者缺乏双向认证,因此这种攻击是隐蔽的。

通过此类攻击,作者成功的攻击了31台蓝牙设备。

本文主要贡献如下:

(1)作者描述了BIAS攻击模型,利用蓝牙标准中的缺陷,在不知道共享长期密钥的情况下,建立安全连接。

(2)作者提供了BIAS工具包,能够自动对蓝牙设备进行BIAS攻击。

(3)作者成功的攻击了16个传统连接LSC设备以及15个安全连接SC设备,评估28个蓝牙芯片,以此说明攻击的严重性。