题名 基于CEGAR的C程序空指针解引用检测
被引量:2
1
作者
段钊
田聪
段振华
机构
西安电子科技大学计算机理论与技术研究所
出处
《计算机研究与发展》
EI
CSCD
北大核心
2016年第1期155-164,共10页
基金
国家自然科学基金项目(61322202
61420106004
+2 种基金
91418201
61133001
61272117)~~
文摘
随着计算机软件规模和复杂度的日益增长,软件系统的可靠性和安全性倍受关注.空指针解引用是程序中常见的一类错误.提出了一种基于反例制导抽象精化CEGAR的C程序空指针解引用检测方法.该方法首先使用线性时序逻辑描述空指针解引用问题,然后通过抽象精化的方法检测待测程序中是否含有空指针解引用错误.为了达到完全自动验证的目标,同时针对空指针解引用问题,研究了该类性质的时序逻辑表达方法,并自动从程序中针对所有的指针变量,形成相应的时序逻辑公式.实验结果表明,所提出的方法在大规模C程序的空指针解引用检测方面有着重要的实际应用价值.
关键词
模型检测
抽象精化
空指针解引用’
程序验证
时序逻辑
Keywords
model checking
abstraction refinement
null-pointer dereference
program verification
temporal logic
分类号
TP31
[自动化与计算机技术—计算机软件与理论]
题名 基于值依赖分析的空指针解引用检测
被引量:4
2
作者
马森
赵文
习翔宇
王栋伟
机构
北京大学信息科学技术学院
北京大学软件工程国家工程研究中心
北京大学信息科学技术学院软件研究所高可信软件技术教育部重点实验室
出处
《电子学报》
EI
CAS
CSCD
北大核心
2015年第4期647-651,共5页
文摘
本文提出了一种基于程序值依赖分析的、路径敏感的空指针解引用检测方法.该方法通过结合数据流分析中的到达定值分析、区间分析及指向分析创建了值依赖分析图,该图刻画了可能产生空指针语句到其解引用语句的值依赖关系.该图中的边采用守卫标注,即描述了相邻点之间的到达条件.为了降低误报率,本文同时提出了一种需求驱动的必然别名算法.由本文所述方法实现的工具展示了良好的实验效果,在10个SPEC2000项目中发现了70余个空指针解引用缺陷,误报率仅为6%左右.
关键词
程序分析
静态缺陷检测
空 指针 解 引用 检测
需求驱动别名分析
Keywords
program analysis
static error detection
null pointer dereference detection
demand-driven alias analysis
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
题名 面向二进制程序的空指针解引用错误的检测方法
3
作者
傅玉
邓艺
孙晓山
程亮
张阳
冯登国
机构
中国科学院软件研究所可信计算与信息保障实验室
中国科学院大学
出处
《计算机学报》
EI
CSCD
北大核心
2018年第3期574-587,共14页
基金
国家自然科学基金(61471344)
国家242信息安全计划(2016A086)资助
文摘
空指针解引用是C/C++程序中常见的一类程序错误,它可让攻击者旁路安全机制或窥探操作系统敏感信息,一直是计算机安全领域的重要研究课题之一.目前已有很多(自动)分析工具对其进行检测,然而它们都在源代码层面上进行检测.大量的商业软件不公开源代码,因此基于源代码的工具无法对这类软件中空指针解引用进行检测.此外,一些空指针解引用无法在源代码层面检测,因为这些缺陷由编译选项和编译优化不当引入.因此进行基于二进制的空指针解引用检测非常必要.基于二进制的空指针解引用检测的一个优势是可以包含库函数的代码,而基于源代码的分析通常采用人工构造的库函数摘要,从而影响检测的准确性和召回率.该文首次提出并实现了面向二进制程序的空指针解引用静态检测工具NPtrChecker,直接接受二进制程序进行分析,并给出代码中出现空指针的来源和解引用的位置以及对应的路径条件.在二进制上进行空指针解引用检测的一个重要难点是二进制程序中缺少指针类型、结构体类型等相关数据类型信息.如果缺乏这类信息,会导致分析结果的准确率大大降低.但是从二进制中恢复类型、数据结构本身是非常困难的问题.针对上述问题,我们提出了一种内存模型,区分来自同一数据结构的不同域的引用,实现了针对空指针解引用检测的域敏感指针分析.为了进一步提高分析的准确率,文章在此基础上设计实现了一套基于函数摘要的上下文敏感的数据流分析算法.此外,工具采用最弱前置条件对数据流分析结果进行验证,检查从指针来源到解引用点的路径条件是否可以被满足,以降低误报率.我们应用NPtrChecker分析了SPEC2000中的11个程序,总共报告了37个可疑空指针解引用,通过人工确认,其中22个是真实的程序错误.相对于Saturn报告的92个,仅13个为真;LUKE报告的3个,2个为真,而文中的工具检测出了更多的空指针解引用错误,同时保持了较低的误报率.
关键词
空 指针 解 引用 检测
静态程序分析
二进制程序分析
最弱前置条件
数据流分析
Keywords
static program analysis
null pointer detection
binary analysis
weakest precondition
dataflow analysis
分类号
TP309
[自动化与计算机技术—计算机系统结构]
题名 空指针解引用错误检测的静态方法研究
被引量:2
4
作者
徐厚峰
马晓东
机构
并行与分布处理重点实验室
出处
《计算机工程与科学》
CSCD
北大核心
2009年第3期92-96,共5页
基金
国家自然科学基金资助项目(60725206
60673118
+3 种基金
90612009)
国家863计划资助项目(2006AA01Z429)
国家973计划资助项目(2005CB321802)
新世纪优秀人才计划资助项目(NCET-04-0996)
文摘
空指针解引用是C语言中的一类常见的动态内存错误。Manevich R等提出了一种适用于检测空指针解引用错误的后向分析方法。本文将后向分析的思想和流敏感、上下文敏感的指针分析结合在一起,给出了一种需求驱动的空指针解引用检测静态分析算法。该算法首先由指针分析获得别名信息,然后针对所关心的数据做后向数据流分析,追踪数据传递的源头,以确定程序中的表达式是否产生解引用错误。我们在SUIF2平台上实现了这一算法。实验结果表明,算法具有较高的检测精度。
关键词
空 指针 解 引用
指向图
后向分析
指针 分析
Keywords
null pointer dereference
points-to graph
backwards analysis
pointer analysis
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
题名 基于数据流追溯的空指针引用挖掘系统
5
作者
文伟平
刘成杰
时林
机构
北京大学软件与微电子学院
出处
《信息网络安全》
CSCD
北大核心
2022年第9期40-45,共6页
基金
国家自然科学基金[61872011]。
文摘
空指针异常引用是系统运行过程中的一种常见问题,该问题会引起程序崩溃或者异常退出,同时攻击者也可以利用空指针解引用来完成任意读写操作,导致信息泄露。Java作为一种广泛使用的语言,也存在空指针引用问题,主要原因是对引用变量的指向检查不足。文章提出一种基于数据流追溯的空指针引用检测系统,并设计了静态分析工具jvd。该工具通过特化追踪空指针在容器中的传播,使得空指针变量不会在容器中传播丢失,在中间语言Jimple层面上完成检测并覆盖多种空指针容器传播场景,有效降低复杂场景下的漏报率。在Juliet Test Suite的CWE476号测试集上,将文章所设计的jvd与SpotBugs、Infer等工具进行对比实验。实验结果表明,jvd能够在多种空指针传播场景下使用,在高精度场景下能够取得比其他工具更好的效果。
关键词
数据流分析
空 指针 解 引用
Jimple
容器传播
Keywords
data flow analysis
null pointer dereference
Jimple
container propagation
分类号
TP309
[自动化与计算机技术—计算机系统结构]
题名 基于最弱前置条件的静态分析误报消除技术
被引量:1
6
作者
陈杰
机构
国防科学技术大学计算机学院并行与分布处理国家重点实验室
出处
《计算机工程与应用》
CSCD
2012年第33期1-4,33,共5页
基金
国家自然科学基金(No.61120106006
No.91118007)
文摘
针对程序静态分析技术误报过多的问题,提出一种基于最弱前置条件的静态分析误报消除方法。根据不同的软件安全性质,从目标状态出发,以需求驱动的方式得到过程起始位置的最弱前置条件,判断该条件公式的可满足性来消除误报。将该方法实例化来消除静态分析工具检测数组访问越界和空指针解引用的误报,实验结果表明该方法是有效且实用的。
关键词
静态分析
误报消除
最弱前置条件
数组访问越界
空 指针 解 引用
Keywords
static analysis
reduce false alarms
weakest precondition
array bounds violation
null pointer dereference
分类号
TP311.1
[自动化与计算机技术—计算机软件与理论]