ISSTA 2021论文泛读记录

会议网址:https://dl.acm.org/doi/proceedings/10.1145/3460319

主要看fuzzing、dynamic analysis、symbolic execution、testing、binary analysis、bugs and analysis这几个session。

其他的session,大家感兴趣可以去上面的网址看。

fuzzing

Seed selection for successful fuzzing

类似sok的工作,系统地对模糊测试中的种子选择问题做了归纳总结。

开源于:https://github.com/HexHive/fuzzing-seed-selection

Gramatron: effective grammar-aware fuzzing

现有的语法敏感的模糊测试在触发复杂的漏洞时,效率很低。有2点原因:一是由于语法的结构,在生成输入时会引入样本偏差;二是现有的解析树编译操作的变化比较小。这篇文章采用grammar automatons来解决样本偏差,利用更激进的变异来更快地触发bug。

开源于:https://github.com/HexHive/Gramatron

QFuzz: quantitative fuzzing for side channels

一个侧信道的fuzz,开源于:https://github.com/yannicnoller/qfuzz

dynamic analysis

Runtime detection of memory errors with smart status

动态分析工具广泛应用在运行时检测内存错误,然而他们不能确定一些类型的内存错误,比如segment-confusion error,sub-object overflows,use-after-free 以及memory leak。这篇文章提出了Smatus,一个新的动态分析方法来检测这些类型的内存错误。核心思想是为每个内存对象保留一个status的节点。

开源于:https://github.com/drzchen/movec

UAFSan: an object-identifier-based dynamic approach for detecting use-after-free vulnerabilities

由于指针别名问题和指针与对象之间的复杂关系,现有的evidence-based的动态检测方法只会追踪指针或对象来记录对象的可用性,然而当内存上存储的释放过的对象重新分配后,对象的可用性就是invalid。为了解决这个问题,文章提出了UAFSan来在运行时检测UAF。具体来说,使用一个唯一的标识符来标记每个新分配的对象和指针。当指针解引用时,我们通过检查他们标识符的一致性来判断UAF是否发生了。

开源于:https://github.com/wsong-nj/UAFSan

数据集:https://zenodo.org/record/4772654

symbolic execution

Fuzzing SMT solvers via two-dimensional input space exploration

约束求解器是许多技术的核心引擎。因此确保约束求解器的鲁棒性和正确性很重要。前人对于这方面的工作主要是生成许多公式,但是无视了约束求解器的算法配置空间,就会导致许多漏报。这篇文章就提出一种fuzzing技术同时探索公式空间和算法配置空间。

开源于:https://smtfuzz.github.io/

Boosting symbolic execution via constraint solving time prediction (experience paper)

符号执行不能扩展到大型程序上的一个原因是求解复杂约束比较耗时。有时候会求解不出来,一般解决这个问题的方法是设定求解约束的时间为一个具体的值。那么设置多少时间才能提高工具的效率呢?为了解决这个问题,文章提出了一种方法来预测约束求解的时间,从而使得符号执行工具更加高效。

后面三篇文章均是来自国防科大的同一个研究团队。

Synthesize solving strategy for symbolic execution

文章发现不同程序的符号执行都是不同的约束求解问题。因此,提出了一种求解策略来帮助程序更高效地符号执行。核心是结合了线下的深度学习模型和线上的合成求解策略。

Type and interval aware array constraint solving for symbolic execution

由于要对数组精确编码是很复杂的,所以求解数组约束是个难题。本文提出了一种方法来增强符号执行和数组约束求解。首先,提出了一种轻量的方法来预检测数组约束是否可解。然后,提出 type and interval aware axiom generation。就是利用类型信息和interval信息来生成公式。

Grammar-agnostic symbolic execution by token symbolization

解析代码在软件中很经常存在。符号执行复杂的解析程序是个难题。符号执行生成的约束通常会被解析程序所拒绝,就会降低符号执行的效率。复杂的解析程序通常采用基于token的输入语法检测。一个token序列表示一种输入语法的样例。基于这个观察,提出了一种grammar-agnostic的符号执行可以自动生成token序列去测试复杂的解析程序。核心其实是符号化token,而不是符号化字节。

testing

Empirically evaluating readily available information for regression test optimization in continuous integration

回归测试会用到很多信息,比如测试轨迹,构建依赖,版本控制数据和测试历史等等。然而不是所有的信息都可以获取到。这篇文章就去实证分析回归测试中,到底有多少信息可以获取到。

Toward optimal mc/dc test case generation

针对mc/dc测试样例生成做了优化。看结果和CBMC工具做了对比,应该是类似模型检验那类的工作。

Log-based slicing for system-level test cases

回归测试开销大,因此需要将系统分块来去测试。常用的技术是动态切片。然后切片技术存在三个局限性:1.测试样例需要使用外部源。2.不能用代码插桩。3.测试执行开销太大了。因此,文章提出了DS3,能自动的将复杂系统的测试样例分成单独的测试样例切片。

Model-based testing of networked applications

针对应用层协议的自动测试框架。

Continuous test suite failure prediction

持续的集成开发需要经常性地运行项目的test suite。这个计算开销和人工开销都很大,因为开发者需要等待test suite运行完毕。然而只有4%的时候,运行test suite会出错。因此每次提交代码是否需要运行test suite呢?这篇文章就是去自动预测这个问题。

Validating static warnings via testing code fragments

用代码片段来验证静态warning。简单来说,就是将静态分析的warning切片后,自动补全为一个小程序,然后用工具(模糊测试,动态分析、符号执行)去测试小程序。数据集开源于:https://sites.google.com/view/helium-2021

Empirical evaluation of smart contract testing: what is the best choice?

智能合约安全最近几年很受重视。有很多研究者都设计开发了测试智能合约的工具。然而,评判标准都不太一样,大家用的数据集也不一样。因此,这篇文章就对这个进行了系统性地整理。

binary analysis

iDEV: exploring and exploiting semantic deviations in ARM instruction processing

有许多工具可以分析ARM的指令,但是他们在分析相同的ARM指令上存在一些差别。几乎没有工作系统地去分析这些语义上的差别,更何况这些差别带来的安全影响。这篇文章就对这个进行了系统性的整理。也是类似sok的工作。

RAProducer: efficiently diagnose and reproduce data race bugs for binaries via trace analysis

数据竞争这种bug不太好发现和复现。这篇文章提出了一种方法来复现这种数据竞争的bug。开源于:https://github.com/ICSE21-Anonymous/RAProducer

A lightweight framework for function name reassignment based on large-scale stripped binaries

一般二进制文件中去掉符号表后,就不知道这个函数是干啥用的了。这篇文章研究如何给去掉符号表的二进制中的函数重新命名来帮助大家更好地逆向。开源于:https://github.com/USTC-TTCN/NFRE

bugs and analysis

Finding data compatibility bugs with JSON subschema checking

json数据用在web API、云计算、NoSQL数据库以及机器学习中。为了确保JSON数据和应用兼容,需要定义JSON的格式并且使用验证器去检查数据是否满足格式要求。然而,由于只在执行时出现具体数据时才去验证,就会导致检测数据兼容太迟了。比如,可能中断用户应用。因此,这篇文章用JSON subschema checking来检测数据兼容性bug。开源于:https://github.com/ibm/jsonsubschema

Automated patch backporting in Linux (experience paper)

当linux内核中检测出漏洞或者bug时,内核开发者会在内核源码的主版本中引入一个补丁来修复它。然而,许多用户使用的是老版本的linux,意味着补丁需要向后兼容。这个过程通常是充满错误而且比较长的。一篇综述说大约8%的commit是向后兼容的,并且这些补丁大概都是bug出现后一个月才出现的。因此,本文提出一种自动向后兼容的方法。开源于:https://fixmorph.github.io/

Faster, deeper, easier: crowdsourcing diagnosis of microservice kernel failure from user space

检测微服务内核的工作,不太了解这方面,看摘要看的不是很懂。开源于:https://github.com/PanYicheng/dycause_rca

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破落之实

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值