Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

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计划)

DATA – Differential Address Trace Analysis: Finding Address-based Side-Channels in Binaries

作者:Samuel Weiser, Andreas Zankl, Raphael Spreitzer, Katja Miller, Stefan Mangard, and Georg Sigl

单位:Graz University of Technology, Fraunhofer AISEC, Technical University of Munich

出处:27th USENIX Security Symposium (USENIX Security 18)

链接:https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-weiser.pdf


简介

背景:内存访问模式(Memory access pattern)不同,可能导致秘密信息的泄露。在秘密信息不同的情况下,与秘密信息有关的数组读取或分支判断,会导致程序运行时的地址不同,从而导致秘密信息的泄露。因此分析程序,找到程序运行时地址相关的信息泄露很重要。

现状:现有的识别程序信息泄露的工具要么不精确要么覆盖范围不全面。

本文提出了DATA,一种差分地址轨迹分析框架(differential address trace analysis framework),可以检测程序二进制文件中基于地址的侧信道信息泄漏。使用DATA工具全自动地分析OpenSSL和PyCrypto,检测出了未知和已知的泄露。OpenSSL采纳了修改意见。

ConfLLVM: A Compiler for Enforcing Data Confidentiality in Low-Level Code

作者:Ajay Brahmakshatriya, Piyus Kedia, Derrick P. McKee, Deepak Garg, Akash Lal, Aseem Rastogi, Hamed Nemati, Anmol Panda, Pratik Bhatu

单位:MIT, IIIT Delhi, Purdue University, MPI-SWS, Microsoft Research, Saarland University, AMD

出处:EuroSys 2019

资料:Paper

1. 论文介绍

现实世界里的很多程序都不可避免地会含有很多私有数据。程序里存在的Bug和漏洞都可能导致这些私有数据被泄露出来,然后被攻击者获得(最典型的案例当然是OpenSSL Heart-bleed,可以泄露出Web服务器的私钥)。

对于这个问题,最标准的解决方法是使用静态数据流分析以及运行时污点分析来追踪私有数据。这种方案在Java和ML上效果都很好,但是在C这种不是内存安全的语言就还是很困难(原因有两点,一个追踪污点的性能开销很高,另一点是静态数据流分析没办法保证数据保密性,因为攻击者可以利用漏洞进行攻击)。

本文中作者为了解决这个问题,基于编译器设计了一套完整的实用方案。在这套方案里,程序员可以用private这样的标记在源码里标注。然后编译器就会结合静态数据流分析、运行时插桩、以及一个新式的Taint-aware CFI来保护数据在被攻击的情况下仍然不被泄露。为了减少运行时开销,编译器需要采用使用一些新的内存布局。

作者在LLVM上实现了这套方案(ConfLLVM),并且用标准SPEC-CPU Benchmard以及现实世界中的大型应用程序(例如NGINX、OpenLDAP)进行了评估,最后实验结果表明,插桩带来的运行时开销是是可以接受的(SPEC上12%),程序员需要对应用程序源码进行的移植也是很小的。

RWGuard: A Real-Time Detection System Against Cryptographic Ransomware

作者:Shagufta Mehnaz, Anand Mudgerikar, and Elisa Bertino

单位:Purdue University, West Lafayette, IN, USA

出处:International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2018)

原文:https://link.springer.com/chapter/10.1007/978-3-030-00470-5_6


本文介绍了一个启发式的勒索软件检测工具RWGuard。RWGuard通过实时地记录进程对文件的操作,对这些操作进行量化考核从而识别出勒索软件进程。

背景介绍

勒索软件是一类恶意软件,这类软件通过加密受害者机器上的文件进而向受害者勒索赎金来换取解密密钥。通常这类软件会遍历主机上的所有文件,对每个文件生成单一密钥并且使用这个密钥对该文件进行加密,然后使用恶意软件制作者的公钥进行加密密钥并保存在受害机器本地。所谓勒索受害者换取赎金指的是,在受害者支付赎金后,恶意软件制作者使用私钥对这些密钥进行解密。

On the Relation Between Outdated Docker Containers, Severity Vulnerabilities, and Bugs

作者: Ahmed Zerouali, Tom Mens, Gregorio Robles, Jesus M. Gonzalez-Barahona

单位: UMONS, Belgium and URJC, Spain

出处: SANER’19

原文: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8668013

INTRODUCTION

本文基于从Docker Hub中提取Docker镜像,识别安装在其中的软件包,并通过分析这些软件包的technical lag来计算镜像的technical lag。 根据版本更新,漏洞和bug的数量来衡量单个软件包的technical lag。 初始样本由Docker Hub中基于Debian的所有官方镜像和社区镜像组成。 因此只需要为Debian软件包计算technical lag。

Discovering Flaws in Security-Focused Static Analysis Tools for Android Using Systematic Mutation

作者:Richard Bonett, Kaushal Kafle, Kevin Moran, Adwait Nadkarni, and Denys Poshyvanyk

单位:The College of William & Mary

出处:USENIX Security 18

资料:PDF, Slides, Video


Abstract

现有移动应用程序分析工具,特别是静态分析工具虽然有很高的覆盖率,但是在分析的精度和性能上有较大的损失——这是静态分析工具trade-off的结果。但是这些工具在设计中不够合理的分析和存在的缺陷通常不会在文档中描述,也通常不被研究人员,开发者和用户所知。作者实现了一个Mutation-based soundness evaluation (µSE) 框架,旨在系统地评估现行的Android静态分析工具并发现,记录和修复存在的缺陷,最终发现了FlowDroid的13个分析缺陷,并与工具的开发人员合作成功修复了其中一个缺陷。