一句话:提出一种程序表示与新的依赖概念,用于推理动态代码生成器与生成代码之间的依赖和信息流关系。
动态代码(运行时创建或修改的代码)在当前软件中无处不在,其行为可能以微妙方式依赖生成器逻辑,例如 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.