QUICK REVIEW
[论文解读] Gillian: A Multi-Language Platform for Unified Symbolic Analysis
Petar Maksimović, José Fragoso Santos|arXiv (Cornell University)|May 31, 2021
Digital Humanities and Scholarship被引用 1
一句话总结
Gillian 是一个支持多语言的符号分析平台,通过参数化中间语言(GIL)统一了 C 和 JavaScript 等编程语言的全程序与组合式符号执行。它通过基于分离逻辑的规格说明、组合式内存模型以及用户可扩展的断言,实现了可验证的程序分析,保证了正确性与框架保留,同时在真实代码库中检测到缺陷且无误报。
ABSTRACT
This is an evolving document describing the meta-theory, the implementation, and the instantiations of Gillian, a multi-language symbolic analysis platform.
研究动机与目标
- 通过基于参数化内存模型的通用中间语言(GIL),统一多编程语言的符号执行。
- 支持全程序与组合式符号执行,并提供强正确性保证。
- 通过用户可扩展的分离逻辑断言与过程规格说明,实现对真实世界代码的验证。
- 即使在递归或无限代码情况下,也确保符号执行的正确性与框架保留。
- 在生产级库(如 AWS 加密 SDK)中检测真实缺陷,且无误报报告。
提出的方法
- Gillian 使用一种中间语言 GIL,其参数化于内存操作,以建模程序与内存之间的底层交互。
- 它引入基于核心谓词、消费者与生产者的组合式内存模型,以支持模块化推理与资源框架化。
- 平台集成了一种参数化空间蕴含引擎,可在不同符号执行路径间重用函数规格说明。
- 支持用户定义的谓词与引理,以建模语言特定的数据结构与接口。
- 通过过程规格说明扩展符号执行语义,实现向后完备性,并支持递归或无限代码的验证。
- 通过前向正确性与框架保留定理建立正确性,符号执行在符号重命名下保持内存不变量。
实验结果
研究问题
- RQ1如何通过单一参数化内存模型的中间表示,统一多编程语言的符号执行?
- RQ2在存在递归或无限代码的情况下,符号执行可提供哪些形式化保证?
- RQ3如何将分离逻辑规格说明集成到符号执行中,以支持模块化验证?
- RQ4在符号执行中,哪些条件可确保框架保留与无误报缺陷报告?
- RQ5如何利用用户定义的谓词与引理验证真实世界代码中的复杂数据结构?
主要发现
- 使用 Gillian-JS 与 Gillian-C 验证了 AWS 加密 SDK 的反序列化模块,在 JavaScript 中发现两个缺陷,在 C 中发现三个缺陷,且无误报。
- 符号执行引擎具有前向正确性,即使使用过程规格说明,也不会报告误报缺陷。
- 组合式执行语义在符号重命名下保留框架,支持模块化推理。
- 用户定义的谓词与引理可集成到验证栈中,使开发人员能够表达语言特定的不变量。
- 通过经过验证的过程规格说明,平台支持递归与无限代码,实现超越有限分析的完整验证。
- 空间蕴含引擎支持在不同执行路径间重用函数规格说明,提升了可扩展性与模块化程度。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。