论文标题

强烈的乐观解决,以动态符号执行

Strong Optimistic Solving for Dynamic Symbolic Execution

论文作者

Parygina, Darya, Vishnyakov, Alexey, Fedotov, Andrey

论文摘要

动态符号执行(DSE)是自动化程序测试和错误检测的有效方法。在混合模糊过程中,复杂的分支探索增加了代码覆盖范围。 DSE工具沿着某些执行路径颠倒分支,并帮助Fuzzer检查以前不可用的程序零件。 DSE经常面临过度和欠缺问题。第一个导致重大分析并发症,而第二个则导致不准确的符号执行。 我们提出了强大的乐观解决方法,以消除目标分支反演的无关路径谓词约束。我们消除了这种符号约束,即目标分支不能控制。此外,我们分别处理具有嵌套控制传输指令的符号分支,这些分支将控制传递超出父分支范围,例如返回,goto,break等。我们在动态符号执行工具SYDR中实现了所提出的方法。 我们评估强大的乐观策略,即仅包含最后一个约束否定及其组合的乐观策略。结果表明,策略组合有助于增加代码覆盖范围或每分钟正确倒立分支的平均数量。与其他配置相比,将这两种策略一起应用在一起是最佳的。

Dynamic symbolic execution (DSE) is an effective method for automated program testing and bug detection. It is increasing the code coverage by the complex branches exploration during hybrid fuzzing. DSE tools invert the branches along some execution path and help fuzzer examine previously unavailable program parts. DSE often faces over- and underconstraint problems. The first one leads to significant analysis complication while the second one causes inaccurate symbolic execution. We propose strong optimistic solving method that eliminates irrelevant path predicate constraints for target branch inversion. We eliminate such symbolic constraints that the target branch is not control dependent on. Moreover, we separately handle symbolic branches that have nested control transfer instructions that pass control beyond the parent branch scope, e.g. return, goto, break, etc. We implement the proposed method in our dynamic symbolic execution tool Sydr. We evaluate the strong optimistic strategy, the optimistic strategy that contains only the last constraint negation, and their combination. The results show that the strategies combination helps increase either the code coverage or the average number of correctly inverted branches per one minute. It is optimal to apply both strategies together in contrast with other configurations.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源