Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Shaping Program Repair Space With Existing Patches and Similar Code

作者:Jiajun Jiang, Yingfei Xiong, Hongyu Zhang, Qing Gao, Xiangqun Chen

单位:Peking University, The University of Newcastle

出处:The ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA) 2018

原文:https://xgdsmileboy.github.io/files/paper/simfix-issta18.pdf


Abstract

本文提出了一种新的自动化程序修复(automatic program repair,APR)技术,该技术同时基于已有的补丁(existing patches)和相似的代码(similar code)来缩小程序修复的搜索空间。一方面,该技术通过分析已有的补丁,得到一组出现频率较高的对于目标代码的抽象修正操作(abstract modifications),形成一个程序修复的抽象空间(abstract space)。另一方面,该技术通过分析在同一项目中相似的代码片段,得到一组对于目标代码的具体修正操作(concrete modifications),形成一个程序修复的具体空间(concrete space)。最后,该技术通过将抽象空间与具体空间求交集,并执行细粒度代码自适应以生成补丁。作者基于上述方案实现了SimFix工具原型,并且在Defects4J数据集上对其进行了评估。结果表明,SimFix成功修复了数据集中的34个bug,其中13个还未曾被现有的技术修复过。

Short Text, Large Effect: Measuring the Impact of User Reviews on Android App Security & Privacy

作者:Duc Cuong Nguyen, Erik Derr, Michael Backes, Sven Bugiel

单位:CISPA Helmholtz Center等

出处:IEEE Symposium on Security and Privacy (S&P) 2019

原文:https://publications.cispa.saarland/2815/1/main_sp.pdf


文章概述

应用市场提供的App评论功能,为开发者与用户的沟通建立起了通道,用户可以及时地向开发者提出反馈。但目前还不清楚用户在多大程度上会使用评论来指出他们对App相关的安全和隐私问题的担心、用户具体担心哪些方面、以及开发者是如何对此类与安全和隐私相关的评论做出反应。在这篇文章中,作者对这些问题进行了研究(第一次),使用NLP技术对Google Play上2583个App的450万条评论进行处理,识别出其中5527个与安全和隐私相关的评论(security- and privacy-related reviews, SPR)。对于与SPR相关的每一App版本,作者使用静态分析的方式提取出评论中提到的App的权限保护功能,并发现60.77%的SPR都可以对应到App中与安全和隐私相关的更新(security- and privacy-related app updates, SPU)。作者通过进一步的分析表明了SPR是预测App隐私相关更新的重要因素,用户评论能够促进App隐私保护的提升,同时大概半数的App隐私相关的更新都与三方库代码有关。

The Design and Implementation of Hyperupcalls

作者:Nadav Amit, Michael Wei

单位:VMware Research

出处:USENIX Annul Technical Conference 18 (CCF-A, 计算机体系结构/并行与分布计算/存储系统)

原文:The Design and Implementation of Hyperupcalls


简介

硬件虚拟化引入了抽象的虚拟机,使得宿主机(Hypervisor)可以运行多个客户机(Guest)操作系统。每个客户机都会认为自己运行在独立的硬件之上。虚拟化的目标就是明确区分虚拟机和真机,这带来一个语义鸿沟,就是虚拟和真机不知道对方在特定场景下做了什么选择。

解决这样的语义鸿沟往往会带来严重的性能问题,前沿的做法是半虚拟化。半虚拟化引入hypercallupcall。其中前者像是Guest向Hypervisor引起的系统调用,后者反之。这种设计有很多问题:

  • 半虚拟化机制需要做上下文切换,如果频繁地使用的话,会带来性能损耗(may be substantial )
  • 切换不能并行
  • 开发一个半虚拟化特性需要guest和hypervisor配合开发

另一类方案是虚拟机自省,这种方案的实践高度依赖于操作系统的结构,操作系统的一些微小变化可能就令其失效,甚至引入新的攻击面。最后,这类方案只能简单沦入入侵检测领域。

基于上面的问题,作者提出了用以Hypervisor和Guest通信的Hypercall这一类机制,该机制有如下特点:

  • 高效
  • 容易部署
  • 功能全面

为了证明上面三个点,作者实现了TLB Shootdown、Discarding Free Memory、Tracing、Kernel Self-Protection这4种Hyperupcall。(事实上,Hyperupcall是一个Hypervisor开发者提供给操作系统开发者的一个界面,方便操作系统开发者实现自己的某些需求)

每种Hyperupcall都通过基本框架进行部署,在基本框架中,作者实现了一个编译器和一个验证器,它们对Hyperupcall做复杂性和有限性的验证,以保证Hyperupcall不会太复杂和越过限制来执行。

REDQUEEN: Fuzzing With Input-to-State Correspondence

作者:Cornelius Aschermann, Sergej Schumilo, Tim Blazytko, Robert Gawlik and Thorsten Holz

单位:Ruhr-Universit¨at Bochum

会议:The Network and Distributed System Security Symposium 2019

链接:https://www.ei.ruhr-uni-bochum.de/media/emma/veroeffentlichungen/2018/12/17/NDSS19-Redqueen.pdf


Introduction

Smarter fuzzing

在过去几年,smarter的fuzzing无论在学术还是工业上都取得了很大进展。代表:afl。
理想的smarter fuzzing基于一个最小的先验知识集合开始fuzz,但这和高效率的fuzzing所需要的两个假设相冲突:1.从一个好的seed input合集开始,2.拥有一个输入格式的生成器产生符合格式的input。afl使用反馈驱动的fuzzing方式来解决这个问题,它使用一个队列保留在fuzzing中产生新的code coverage的输入,从而“学习”到一个更有趣的输入集合。

SPEAKER: Split-Phase Execution of Application Containers

作者: Lingguang Lei, Jianhua Sun, Kun Sun, Chris Shenefiel, Rui Ma, Yuewu Wang, and Qi Li

单位: Institute of Information Engineering, Chinese Academy of Sciences, Beijing, China

出处: DIMVA’17

原文: https://link.springer.com/chapter/10.1007/978-3-319-60876-1_11


由于syscall是进入内核的进程的入口点,Linux seccomp filter已集成到流行的容器管理工具(如Docker)中,以有效地约束容器可用的syscall。但是,Docker缺少一种方法来获取和定制给定应用程序的syscall集合。在本文中,作者提出了一种名为SPEAKER的容器安全机制,它可以通过在两个不同的执行阶段(即启动阶段和运行阶段)定制和分析其所需的syscall来显着减少对给定应用程序容器的可用系统调用数量。

Precise and Accurate Patch Presence Test for Binaries

题目:Precise and Accurate Patch Presence Test for Binaries 作者:Hang Zhang, Zhiyun Qian

单位:University of California, Riverside (加州大学河滨分校)

出处 USENIX Security Symposium (USENIX) 2018

原文:https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-zhang.pdf

相关材料:会议:USENIX 2018个人主页PPT演讲视频Github


一、背景

在软件中,如果出现漏洞或者是瑕疵,一般是使用打补丁的方式来修复或者更新软件。但是就目前的实际开发情况来看,软件代码的复用已经是一种常态,特别是针对大型的开源项目,往往会被很多不同的开发者复用。这本来不是什么严重的问题,因为开源出来的项目代码,本就是想提供给大家使用,并获得大家的认可,或者是获得大家的一些宝贵的修改意见和建议,以便于进一步完善开源项目,为开源社区提供更好的服务。开发者在遵循开源协议的前提下,既可以把开源代码应用到自己创建的新的开源项目中,也可以应用到自己的闭源项目中。因此,一个重要的问题就出现在我们眼前:当一个备受欢迎的开源项目被无数开发者所复用时,这个开源项目中所出现的任何问题(例如 BUG 或者漏洞等)都会影响到所有复用该项目的应用,当开源项目中的代码更新、或者是修复漏洞之后,那些复用该项目的应用能不能及时的更新相应的代码,这就成为一个比较严重的问题。特别的,当某一个备受欢迎的开源项目中出现严重的安全漏洞之后,该开源项目可能很快的就修复了这个漏洞,并更新了代码,但是复用该开源项目的众多应用能不能都及时的更新代码、修复漏洞,这就会严重的影响这些应用的安全性,甚至使得这些应用(未更新的应用)直接暴露在不安全的网络环境中,极易被攻击者所攻击。

因此,如何能够有效的检测目标应用中是否更新了相应的补丁,这是一个非常有意义的研究方向。就目前的研究情况而言,有两个明显的分支,一个是“源到源(Source to Source)”的检测方法,该方法操作的对象都是源代码,并且通常需要提供补丁的相应信息(例如,删除了一行代码并且添加了另一行代码);另一种方式是“二进制到二进制(Binary to Binary)”的检测方法,该方法单纯的比较二进制文件,因此,一般不需要相应的补丁信息。

VFix: Value-Flow-Guided Precise Program Repair for Null Pointer Dereferences

作者:Xuezheng Xu, Yulei Sui, Hua Yan, Jingling Xue

单位:UNSW Sydney, University of Technology Sydney

出处:ICSE’19

原文:https://yuleisui.github.io/publications/icse19.pdf


Abstract

自动化程序修复技术(APR:automated program repair)所面临的一个关键挑战就是如何从潜在的无限解空间中有效的寻找正确的补丁。多数已有的方案试图通过推导完整的解空间来寻找合适的补丁。然而,这样的方式通常来说都是不精确甚至是无效的。

文章提出了一种新的由数据流引导的APR方案:VFix,以修复程序中的空指针异常错误(NPE:null pointer exception)。VFix通过推导程序中的数据依赖和控制依赖以缩小解空间的大小,从而更加准确的识别错误相关的修复语句,并生成正确的补丁代码。

文章在Defects4j数据库上对比了VFix与其余8个已有的APR工具。VFix在精度和效率两方面都远远优于其它工具。与这8个工具中最精确的SIMFIX相比,VFix正确修复了3倍数量的NPE错误。VFix正确修复的NPE错误比这8个工具加起来修复的所有错误还要多50%。此外,VFix在几分钟的时间里便能生成正确的补丁,而其它工具则需要几个小时。

Now You See Me: Real-time Dynamic Function Call Detection

作者:Franck de Goër, Sanjay Rawat, Dennis Andriesse, Herbert Bos, Roland Groz

单位:UGA, VU Amsterdam, ANSSI | Vrije Universiteit Amsterdam | LIG, Univ. Grenoble Alpes

会议:2018 Annual Computer Security Applications Conference

原文链接:https://dl.acm.org/citation.cfm?id=3274712


作者实现了一x86平台的实时调用检测工具iCi,该工具不依赖源码和调试信息,不依赖静态分析,只用动态跑一遍,可以为CFI、Profile、逆向、调试等工作提供支持。

x86上有CALL指令用于函数调用,但编译器可能会将尾调用优化成JMP,只分析CALL会遗漏。如:

  • coreutilsgcc -O2编译,10%的调用都是JMP
  • ffmpeg使用perf不能捕捉到所有调用(1109142/1467291)

作者主要解决了识别哪些JMP指令实际上是函数调用的问题。该工具仅面向编译器生成的代码,不考虑多入口、函数交错(手写汇编才会出现);要求返回地址在栈上,不考虑混淆过的代码。

Please Forget Where I Was Last Summer: The Privacy Risks of Public Location (Meta)Data

作者:Kostas Drakonakis, Panagiotis Ilia, Sotiris Ioannidis, Jason Polakisy

单位:FORTH, University of Illinois at Chicago

出处:The Network and Distributed System Security Symposium (NDSS) 2019

原文:https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_01A-6_Drakonakis_paper.pdf


文章概述

用户位置信息的暴露会带来重大的隐私风险,攻击者利用位置信息可能推断出一些相关的敏感信息,甚至可能依此发动物理攻击。这篇文章中,作者设计并实现了LPAuditor这一工具,以推特上的数据为研究对象,对公开的位置信息可能造成的隐私泄露进行了系统的评估。通过实验,作者证明了和之前的工作相比,LPAuditor能够以更高的准确率识别出用户的家和工作场所。同时,LPAuditor也可以被用来探索用户去过的敏感位置(与健康、宗教、夜生活相关)。此外,作者对推特收集、分享用户位置信息的策略进行了讨论。

Let’s GoSSIP计算机安全研究暑期实习申请

上海交通大学蜚语软件安全研究小组(G.O.S.S.I.P)是国际安全研究界活跃的学术安全团队,从2010年,我们每年都会为热爱信息安全的同学提供暑期实习,让大家能够共聚上海,充分交流,快速提高技术水平。在实习期间,你不仅有机会与安全圈大牛近距离沟通交流,丰富你的专业技能,提高你的学习洞察力,提高你的影响力,扩大你的专业人脉关系。 同时,你还有机会:

  • 发表国际安全学术会议论文(如CCS、NDSS、ACSAC、RAID、AsiaCCS)
  • 在计算机安全展会发表演讲(Blackhat、DEF CON China、互联网安全大会、互联网安全领袖峰会、网络安全生态峰会)主题演讲
  • 在顶级计算机安全竞赛中(DEFCON CTF、Hack.lu CTF、Codegate CTF等)取得好名次
  • 参与国家重点科研项目(科技重大专项、科技支撑、973计划)