[NOTE] Muzz: Thread-aware Grey-box Fuzzing for Effective Bug Hunting in Multithreaded Programs (USENIX Security 20)

本文针对多线程程序的fuzz提出了几点fuzzer的改进。

过程从对目标程序的静态分析开始,获得多线程相关函数(如多线程创建函数、锁等)的出现位置;然后根据它们的位置确定suspicious interleaving scope(Lm)。

随后是三个插桩时的改进。Coverage-oriented插桩通过概率的变化对目标程序的不同位置进行插桩。简单来说,是否在Lm内,内存操作数量影响了该部分被插桩的概率。Thread-context插桩保存线程运行的上下文环境来提供feedback。Schedule-intervention插桩通过函数Fs来给不同线程分配不同优先级,并分配ID。

在动态运行阶段,种子根据当前队列的新覆盖率、新线程上下文环境概率选取;在一个种子的执行阶段,如果产生了更多的不确定运行状态,则有机会获得更多的运行次数。

concurrency vulnerability 可以在fuzz过程中捕获,而像资源竞争、死锁这样的concurrency bug则要通过fuzz后再次运行种子并用TSan检测。

No Comments

Leave a Reply

Your email address will not be published. Required fields are marked *