题名 基于抽象内存模型的内存相关漏洞检测方法
被引量:5
1
作者
许健
陈平华
熊建斌
机构
广东工业大学计算机学院
广东技术师范大学自动化学院
出处
《计算机工程与应用》
CSCD
北大核心
2022年第8期96-108,共13页
基金
广东省科技计划项目(2020B1010010010,2019B101001021)
广东省自然科学基金(2019A1515010700)。
文摘
针对现有的内存相关漏洞检测方法中存在依赖指针数据流而导致大量误报漏报、缺乏漏洞特征的形式化描述以及漏洞特征描述不全面的问题,提出一种基于抽象内存模型的内存相关漏洞检测方法。对抽象内存模型进行相关定义;基于抽象内存模型,对内存泄露、重复释放内存和读写释放后的内存这三种与内存相关的漏洞类型的特征进行形式化符号表示;基于代码的控制流图,利用可行路径求解算法得到代码的所有可行路径,并对所有可行路径上的抽象内存进行运行时状态判定,从而检测代码是否存在内存相关的漏洞;使用Juliet Test Suite中的CWE401、CWE415、CWE416三个内存相关漏洞的测试数据集对提出的检测方法进行验证,实验结果表明,相比依赖指针数据流的检测方法,该方法在内存相关漏洞检测的误报率和漏报率均降低。
关键词
内存 相关漏洞检测
抽象内存模型
内存 泄漏
重复释放内存
读写释放后的内存
Keywords
memory-related vulnerabilities detection
abstract memory model
memory leak
double free
use after free
分类号
TP391
[自动化与计算机技术—计算机应用技术]
题名 单元自动化测试中类的抽象内存模型研究
2
作者
杜婉莹
王雅文
机构
北京邮电大学网络与交换技术国家重点实验室
出处
《计算机测量与控制》
2022年第2期84-94,共11页
基金
国家自然科学基金项目(U1736110)。
文摘
由于面向对象程序具有多态性等复杂特性,在软件单元测试中仅凭静态分析难以判断指针和引用指向对象的具体类型,为了解决这一问题,对类的抽象内存模型进行研究,并提出类的操作语义模拟算法;在路径分析时,通过构建和更新抽象内存模型,从而对变量所属类的范围进行限定;对于单元测试,对基于输入域的随机测试进行优化,提出基于路径的随机测试方法,得到输入变量的类型集合;实验表明,类的抽象内存模型结合操作语义模拟算法能够有效提取出路径中类相关的约束,基于路径的随机测试方法比起基于输入域的随机测试方法能够明显提高测试效率。
关键词
面向对象
单元测试
抽象内存模型
符号表
静态分析
测试用例
Keywords
object-oriented
unit testing
abstract memory model
symbol table
static analysis
test case
分类号
TP3
[自动化与计算机技术—计算机科学与技术]
题名 一种面向堆操作程序内存安全性的域敏感内存模型
被引量:2
3
作者
董龙明
王戟
陈立前
刘江潮
机构
国防科技大学计算机学院并行与分布处理国家重点实验室
出处
《计算机科学》
CSCD
北大核心
2012年第9期109-114,151,共7页
基金
国家自然科学基金(61120106006
90818024)资助
文摘
堆操作程序具有通过共享易变数据结构动态操纵堆内存单元的特性,使得内存安全性难以保证。针对这个问题,提出了一种域敏感的k-limit内存抽象模型,以支持动态调整抽象的粒度,取得静态分析在精度和效率上的平衡。分别从框架、性质、操作方面介绍了该内存模型,然后结合内存安全性的定义,在基于该模型的操作语义框架内定义了4种与内存安全性相关的错误类型,最后设计了基于该模型内存安全性检测的数据流迭代算法。
关键词
堆操作程序
内存 安全性
k-limit内存 抽象 模型
动态可调节
Keywords
Heap-manipulating programs
Memory safety
k-limit abstract memory model
Dynamic adjustment
分类号
TP301
[自动化与计算机技术—计算机系统结构]
题名 面向顺序存储结构的数据流分析
被引量:5
4
作者
王淑栋
尹文静
董玉坤
张莉
刘浩
机构
中国石油大学(华东)计算机科学与技术学院
出处
《软件学报》
EI
CSCD
北大核心
2020年第5期1276-1293,共18页
基金
中央高校基本科研业务费专项资金(19CX02028A)
国家自然科学基金(61873281)。
文摘
C程序中数组、malloc动态分配后的连续内存等顺序存储结构被大量使用,但大多数传统的数据流分析方法未能充分描述其结构及其上的操作,特别是在利用指针访问顺序存储结构时,传统的分析方法只关注了指针的指向关系,而未讨论指针可能发生偏移的数值信息,且未考虑发生偏移时可能存在越界的不安全问题,导致了对顺序存储结构分析不精确.针对以上不足,首先对顺序存储结构进行抽象建模,并对顺序存储结构与指针结合使用时的指向关系与偏移量进行有效表示,建立了用于顺序存储结构的抽象内存模型SeqMM;其次,归纳总结C程序中顺序存储结构涉及的指针相关迁移操作、谓词操作及遍历顺序存储结构的循环操作,提出了安全范围判别保证操作安全性;之后,针对函数调用时形参指针引用顺序存储结构与实参的映射过程进行过程间推导规则设计;最后,基于上述分析,提出了一种内存泄漏缺陷检测算法,对5个开源C工程的内存泄漏缺陷进行检测.实验结果表明,所提出的Seq MM能够有效地刻画C程序中的顺序存储结构及其涉及的各种操作,其数据流分析结果能够用于内存泄漏的检测工作,同时在效率和精度之间取得合理的权衡.
关键词
顺序存储结构
数据流分析
抽象内存模型
过程间分析
内存 泄漏
Keywords
sequential storage structure
data flow analysis
abstract memory model
inter-prcedural analysis
memory leak
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
题名 C程序非法计算缺陷的静态检测
被引量:1
5
作者
董玉坤
机构
中国石油大学(华东)计算机与通信工程学院
出处
《计算机工程与应用》
CSCD
北大核心
2016年第19期31-36,共6页
基金
山东省自然科学基金(No.BS2015DX017)
中央高校基本科研业务费专项资金(No.15CX02050A)
中国博士后科学基金(No.2015M581032)
文摘
为实现基于静态分析技术自动的检测C程序中的非法计算缺陷,提出了一种基于区域内存模型进行非法计算缺陷检测的方法。对C程序中的非法计算缺陷操作归纳总结出其受限集,以对相应运算进行约束;通过抽象的区域内存模型表示实际的内存存储,实现了基于抽象内存区域内存模型的数据流分析;基于数据流分析的结果,判定C程序中的受限操作是否违背受限集的约束,以实现非法计算缺陷的检测。5个实际工程的检测结果分析表明,该方法可有效地检测出C程序的各类非法计算缺陷。
关键词
缺陷检测
非法计算
静态分析
抽象内存模型
Keywords
defect detection
illegal computing
static analysis
abstract memory model
分类号
TP311.5
[自动化与计算机技术—计算机软件与理论]
题名 基于符号约束集的条件表达式数据流分析
被引量:1
6
作者
董玉坤
机构
中国石油大学(华东)计算机与通信工程学院
出处
《科学技术与工程》
北大核心
2018年第7期172-178,共7页
基金
山东省自然科学基金(No.BS2015DX017)资助
文摘
C程序中的条件表达式是唯一一个由三目运算符构成的表达式;而从语义角度来说是分支语句结构,传统的数据流分析技术难以实现对其精确分析。为实现对条件表达式的精确分析,提出了一种应用区间运算的条件表达式分析方法。首先对条件表达式的语法结构进行分析,以识别不同类型的条件表达式;并采用RSTVL描述程序点上的存储状态;再按照分支语句的语义,通过分析条件表达式中的符号约束集,基于区间运算方法对条件表达式进行数据流分析,得到由RSTVL描述的条件表达式的取值。通过对构造的测试用例与实际工程的测试结果表明,可以精确地分析C程序中的条件表达式。
关键词
条件表达式
数据流分析
抽象内存模型
区间运算
符号约束集
Keywords
conditional expression
data flow analysis
abstract memory model
interval computation symbolic constraints
分类号
TP311.5
[自动化与计算机技术—计算机软件与理论]