[发明专利]一种利用数据流分析算法分析C代码中的内存安全的方法在审

专利信息
申请号: 202111201254.6 申请日: 2021-10-15
公开(公告)号: CN114153451A 公开(公告)日: 2022-03-08
发明(设计)人: 贾枭;孙振东 申请(专利权)人: 上海那一科技有限公司
主分类号: G06F8/41 分类号: G06F8/41
代理公司: 上海国瓴律师事务所 31363 代理人: 傅耀
地址: 200240 上海市闵行*** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 利用 数据流 分析 算法 代码 中的 内存 安全 方法
【说明书】:

发明提供了一种利用数据流分析算法分析C代码中的内存安全的方法。将指令定义成形式化后的指令集,进行如下操作,静态分析出代码需要并给指针添加标记;将代码转化成抽象语法树,并对其每一个指令进行类型检查,同时对涉及到的指针权限转移或借用语句进行修改,使之在静态单赋值中有所区分;对抽象语法树进行线性化,得到静态单赋值形式的控制流图,进行数据流分析,得到收敛的权限映射表的结果;利用数据流分析算法迭代稳定后的结果,利用错误检查函数检查是否存在内存安全问题。其中本发明的有益效果是:基于C语言中一系列常见的涉及内存的指令,定义了形式化后的指令集,定义了一系列内存错误检测方法,便于检测内存安全。

技术领域

本发明涉及数据流分析算法、静态分析工具开发领域,特别涉及一种利用数据流分析算法分析C代码中的内存安全的方法。

背景技术

现代程序语言对于堆上内存空间的回收,无外乎两种方式:一种是使用者在代码中显式地调用内存回收函数,手动释放内存;另一种是引入自动的垃圾回收机制。Rust内存管理的核心是通过所有权,规定堆上的每块内存在同一时刻只具有一个所有权拥有者,Rust 通过静态分析的方法,精确分析出每个变量的作用域,当所有权拥有者的作用域结束后,堆上的这块内存空间也会被自动释放掉;而C 则需要手动地解决堆上内存空间的申请和释放,容易造成很多内存安全问题。

Rust在内存安全方面比C做得相对更好,但大部分Linux内核代码都用C写成,短时间内不会改为Rust。现存分析技术包括Plural,但它主要针对的是java的引用。另一个针对C的内存分析工具是微软的Checked-c,但它针对的是数组或缓冲区越界问题,而非变量所有权。

发明内容

为了解决上述技术问题,本发明中披露了一种利用数据流分析算法分析C代码中的内存安全的方法,本发明的技术方案是这样实施的:

一种利用数据流分析算法分析C代码中的内存安全的方法,将C 语言内存指令定义成形式化后的指令集,然后进行如下操作,

静态分析出代码需要并给对应指针添加标记的位置,并为代码自动添加标记;

将上述代码转化成抽象语法树,并对其每一个指令进行类型检查,同时对涉及到的指针权限转移或借用语句进行修改,使之在静态单赋值中有所区分;

对抽象语法树进行线性化,得到静态单赋值形式的控制流图,进行数据流分析,得到收敛的权限映射表的结果;

利用数据流分析算法迭代稳定后的结果,利用错误检查函数检查是否存在内存安全问题。

优选地,所述指针包括拥有所有权和不拥有所有权两种类型。

优选地,所述指令集包括内存分配、内存释放、内存所有权转移、内存所有权借用、强制类型转化、指针离开作用域、取指令、存指令、合并指令和函数调用指令。

优选地,错误检测方法包括内存泄漏检测、多次释放检查、在被借走时转移或释放检查、释放后使用。

优选地,所述抽象语法树包括函数参数和返回值的信息,并基于此建立了函数对应的指针权限映射表,指针权限映射表包含了所有从变量到它所具有的指针权限的映射。

优选地,分析前,对传入的文件进行预处理,遍历整个文件的代码,查找其中全部的指针并观测指针的行为,对指针是否有内存分配或释放的行为进行分析,添加不同的指针标记;如果有内存释放或分配、或对具有所有权的指针进行转移的行为,代表它对一块内存具有所有权,应为这个指针添加具有所有权的标记;反之,认为这个指针仅借走了所有权,添加不具有所有权的标记。

优选地,对于抽象语法树中的每一个函数,便利其中的每一条指令,如果涉及到所有权转移,如将拥有一块空间的指针转移给另一个拥有所有权的指针,添加指针所有权需要转移的注释;如果涉及到所有权借出,如一个没有所有权的指针借走了另一个指针的权限,添加指针所有权被借出的注释。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海那一科技有限公司,未经上海那一科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202111201254.6/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top