Representing and reasoning about dynamic code

Representing and reasoning about dynamic code
复制标题

动态代码的表示和推理

DOI:
10.1145/3324884.3416542
复制
发表时间:
2020
期刊:
ASE '20: Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering
影响因子:
--
通讯作者:
Debray, Saumya
Debray, Saumya
中科院分区:
--
文献类型:
--
作者:
Bartels, Jesse;Stephens, Jon;Debray, Saumya

文献摘要

相似文献

动态代码,即,在运行时创建或修改的代码在当今世界中无处不在。动态代码的行为可以以微妙和非显而易见的方式取决于动态代码生成器的逻辑,例如,JIT编译器错误可能会导致JIT编译代码中存在可利用的漏洞。现有的程序分析方法不提供足够的支持推理这种行为关系。本文采取了第一步,在解决这个问题,通过描述一个程序表示和一个新的概念,使我们能够推理的依赖关系和信息流之间的关系的动态代码生成器和生成的动态代码。实验结果表明,基于这些概念的分析是能够捕获的动态代码,不能使用传统的程序分析确定的属性。
Dynamic code, i.e., code that is created or modified at runtime, is ubiquitous in today's world. The behavior of dynamic code can depend on the logic of the dynamic code generator in subtle and non-obvious ways, e.g., JIT compiler bugs can lead to exploitable vulnerabilities in the resulting JIT-compiled code. Existing approaches to program analysis do not provide adequate support for reasoning about such behavioral relationships. This paper takes a first step in addressing this problem by describing a program representation and a new notion of dependency that allows us to reason about dependency and information flow relationships between the dynamic code generator and the generated dynamic code. Experimental results show that analyses based on these concepts are able to capture properties of dynamic code that cannot be identified using traditional program analyses.