Sys: a Static/Symbolic Tool for Finding Good Bugs in Good (Browser) Code(USENIX 2020)

作者设计了一个可扩展的漏洞发现工具(Sys),并且在已经被好多自动化工具检查过的软件中发现了一些漏洞,比如说Chrome,Firefox,以及sqlite3。

整个系统分为两个部分:首先通过静态分析定位可能存在漏洞的地方,然后在对这些备选项通过符号执行的方法进一步确认。这样就在漏洞发现的速度 和 准确率上得到了一个平衡。

阅读更多

Order Matters: Semantic-Aware Neural Networks for Binary Code Similarity Detection(AAAI 2020)

​ 二进制代码相似性检测:在没有源代码的情况下检测相似的二进制函数。传统的方法一般使用图匹配算法进行检测,但传统方法准确率低且复杂度高。深度学习的发展为这一领域提供的新的方法,根据控制流图生成CFG,并使用GNN计算图嵌入,既高效又准确。本文提出Semantic-Aware Neural Networks ,取得了不错的成果

阅读更多

LEOPARD: Identifying Vulnerable Code for Vulnerability Assessment through Program Metrics(ICSE 2019)

识别代码中的脆弱点漏洞评估的重要步骤,当前主要的两种方法为:基于度量和基于模式。前者基于机器学习,后者依赖先验知识。本文提出并实现了一个通用、轻量且具有可扩展性的基于程序指标识别漏洞函数的框架 LEOPARD,这个框架不需要任何漏洞的先验知识就能识别脆弱点。第一步,通过复杂的程序指标将目标应用的函数分类;第二步,对每个分类中的函数进行排序,并将排位靠前的函数作为漏洞函数。在实际应用中,LEOPARD将20%的函数中识别出了74%的漏洞函数,从PHP,r2等应用中找到了22个新bug,其中8个是新漏洞。

阅读更多

B2SFinder——Detecting Open-Source Software Reuse in COTS Software(ASE 2019)

B2SFinder: Detecting Open-Source Software Reuse in COTS Software

B2SFinder 主要是为了解决闭源二进制软件中对复用开源组件检测的问题,由于复用了开源组件,当开源组件发现存在漏洞时,复用它的二进制软件也会存在漏洞,即OSS复用漏洞。

PS:我挂了个n作

Abstract

虽然此前也有一些工作致力于研究二进制和源代码的匹配方法,并能进行大规模的分析,但他们只支持一些简单的特征。在他们的研究中只能近似的衡量OSS复用,忽略了项目中的代码结构。

为了解决这个问题,B2SFinder通过对二进制文件和源代码中的7种特征进行提取,并对7种特征使用三种匹配方法和两种重要性加权方法,计算匹配分数。通过这种方法,我们对1000个流行的二进制软件中的21991个二进制文件和2189个开源库的复用进行了评估。平均每个二进制文件耗时53.85秒。我们也讨论了如何使用B2SFinder检测OSS复用漏洞。

阅读更多

VUDDY A Scalable Approach for Vulnerable Code Clone Discovery(S&P 2017)

Abstract

随着开源世界的扩大,代码克隆的情况也越来越普遍,与此同时,由于代码克隆产生的1day漏洞也越来越多,因此自动化的克隆代码漏洞检测成为一大需求。

本文提出了一种大规模复用漏洞代码检测的方法——VUDDY,能在大规模的代码中精确有效的发现漏洞。

优势:

  • 十亿行量级的代码检测只需要14小时17分钟
  • 可进行传统的完全检测和部分正规化后的检测
  • 规模和准确率完胜其余的相关研究
  • 有一定的检测0 day漏洞的能力
阅读更多