The security development lifecycle (SDL) is becoming an industry standard. Dynamic symbolic execution (DSE) has enormous amount of applications in computer security (fuzzing, vulnerability discovery, reverse-engineering, etc.). We propose several performance and accuracy improvements for dynamic symbolic execution. Skipping non-symbolic instructions allows to build a path predicate 1.2--3.5 times faster. Symbolic engine simplifies formulas during symbolic execution. Path predicate slicing eliminates irrelevant conjuncts from solver queries. We handle each jump table (switch statement) as multiple branches and describe the method for symbolic execution of multi-threaded programs. The proposed solutions were implemented in Sydr tool. Sydr performs inversion of branches in path predicate. Sydr combines DynamoRIO dynamic binary instrumentation tool with Triton symbolic engine. We evaluated Sydr features on 64-bit Linux executables.
翻译:安全开发生命周期(SDL)正在成为一个行业标准。动态符号执行(DSE)在计算机安全方面有大量应用(模糊、脆弱性发现、反转工程等),我们建议了动态符号执行的若干性能和准确性改进。跳过非符号性执行指令可以更快地建立一个路径上游1.2-3.5倍。符号引擎在象征性执行过程中简化了公式。路径前端切除解答查询中无关的连接。我们把每个跳板(开关语句)作为多个分支处理,并描述象征性执行多读程序的方法。 Sydr 工具中应用了拟议解决方案。 Sydr 将路径前端的分支转换为反转。 Sydr 将DymomodRIO 动态二进制仪器工具与Triton 符号性引擎结合起来。我们评估了64位Linux可操作的 Sydr特性。