Ad hoc Test Generation Through Binary Rewriting

Ad hoc Test Generation Through Binary Rewriting
复制标题

DOI:
10.1109/scam51674.2020.00018
复制
发表时间:
2020-09
期刊:
2020 IEEE 20th International Working Conference on Source Code Analysis and Manipulation (SCAM)
影响因子:
--
通讯作者:
Anthony Saieva;S. Singh;G. Kaiser
Anthony Saieva;S. Singh;G. Kaiser
中科院分区:
其他
文献类型:
--
作者:
Anthony Saieva;S. Singh;G. Kaiser

文献摘要

相似文献

当开发人员的测试套件未检测到安全漏洞或其他关键错误时,开发人员必须迅速设计一个新的测试,以重现该错误行为。该错误,没有破坏其他功能,在攻击者弹起之前进行部署时,当特定用户中的因素中,这可能是挑战。环境触发了错误,但是,记录重新播放技术在开发人员环境中忠实地重播了该程序在该用户环境中执行的情况下,在与错误相同的条件下。 ,内存布局等以及许多外部可见的行为。帮助开发人员测试他们的补丁是否确实在相同的条件下消除了错误。计划状态。测试套件生成的技术,例如符号执行。使用程序的不同版本,即使差异影响程序状态,通过操纵二进制可执行文件和记录的日志来导致执行与如果在使用原始版本表现出的错误的情况下,在用户环境中执行了修补版本,这将发生的事情。并在修补版本上运行相应的临时测试,以验证补丁不会破坏其依赖的功能。
When a security vulnerability or other critical bug is not detected by the developers’ test suite, and is discovered post-deployment, developers must quickly devise a new test that reproduces the buggy behavior. Then the developers need to test whether their candidate patch indeed fixes the bug, without breaking other functionality, while racing to deploy before attackers pounce on exposed user installations. This can be challenging when factors in a specific user environment triggered the bug. If enabled, however, record-replay technology faithfully replays the execution in the developer environment as if the program were executing in that user environment under the same conditions as the bug manifested. This includes intermediate program states dependent on system calls, memory layout, etc. as well as any externally-visible behavior. Many modern record-replay tools integrate interactive debuggers, to help locate the root cause, but don’t help the developers test whether their patch indeed eliminates the bug under those same conditions. In particular, modern record-replay tools that reproduce intermediate program state cannot replay recordings made with one version of a program using a different version of the program where the differences affect program state. This work builds on record-replay and binary rewriting to automatically generate and run targeted tests for candidate patches significantly faster and more efficiently than traditional test suite generation techniques like symbolic execution. These tests reflect the arbitrary (ad hoc) user and system circumstances that uncovered the bug, enabling developers to check whether a patch indeed fixes that bug. The tests essentially replay recordings made with one version of a program using a different version of the program, even when the the differences impact program state, by manipulating both the binary executable and the recorded log to result in an execution consistent with what would have happened had the the patched version executed in the user environment under the same conditions where the bug manifested with the original version. Our approach also enables users to make new recordings of their own workloads with the original version of the program, and automatically generate and run the corresponding ad hoc tests on the patched version, to validate that the patch does not break functionality they rely on.