本文介绍的研究论文《capturing invalid input manipulations for memory corruption diagnosis》由Lei Zhao、Keyang Jiang、Yuncong Zhu、Lina Wang(武汉大学国家网络安全学院)与Jiang Ming(德克萨斯大学阿灵顿分校计算机科学与工程系)合作完成,发表于2023年3月/4月的《IEEE Transactions on Dependable and Secure Computing》期刊。
该研究聚焦于内存破坏诊断(memory corruption diagnosis)领域,这是软件安全的核心问题之一。内存破坏漏洞(如缓冲区溢出、释放后使用等)长期占据网络安全威胁前列,但现有诊断技术(如模糊测试[fuzzing])仅能检测崩溃现象,无法精确定位漏洞根本原因或提供修复所需的高层语义信息。研究团队指出,现有方法存在三大局限:
1. 根因定位模糊:多数技术通过检测内存破坏的间接症状(如无效数据依赖)推断漏洞,但难以区分具体是哪个指针操作引发问题;
2. 缺乏高层抽象:二进制层面缺失源码级数据结构信息,导致诊断结果停留在低层指令,无法解释漏洞逻辑;
3. 语义信息不足:现有统计调试技术生成的谓词(predicates)缺乏与程序输入、数据结构关联的上下文,难以支持漏洞修复。
基于此,研究团队提出MemRay技术,旨在通过动态捕获程序对输入的无效操作(invalid input manipulations)实现精准诊断,同时提供丰富的漏洞语义。
MemRay的核心创新在于提出数据结构引用序列(data structure reference sequence),通过动态跟踪程序如何处理输入数据来识别内存破坏。其工作流程分为四个关键阶段:
memcpy操作时,分析其目标地址是否属于合法数据结构范围。MemRay的学术价值体现在:
1. 理论创新:提出“数据结构引用序列”作为程序语义的新表征形式,将输入操作与内存行为关联,为二进制分析提供高层抽象;
2. 实践意义:
- 助力漏洞修复:通过标识危险输入字段和脆弱代码逻辑,直接指导补丁开发;
- 增强自动化能力:为模糊测试、热补丁生成(hot patching)等下游任务提供结构化诊断结果。
MemRay的框架可扩展至其他安全场景,如:
- 漏洞防御:通过历史漏洞的语义模式训练异常检测模型;
- 补丁验证:验证补丁是否彻底消除了无效输入操作。
该研究为内存破坏诊断提供了方法论突破,其技术路线对软件安全自动化分析具有广泛启示。