[发明专利]一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法在审

专利信息
申请号: 202310142983.1 申请日: 2023-02-21
公开(公告)号: CN116089302A 公开(公告)日: 2023-05-09
发明(设计)人: 朱鹏辉;王莹;于海;朱志良 申请(专利权)人: 东北大学
主分类号: G06F11/36 分类号: G06F11/36;G06F8/41
代理公司: 沈阳东大知识产权代理有限公司 21109 代理人: 李在川
地址: 110819 辽宁*** 国省代码: 辽宁;21
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 针对 rust 编程 语言 unsafe 代码 片段 缺陷 检测 方法
【权利要求书】:

1.一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法,其特征在于,具体包括以下内容:

步骤1:基于rustc_lint模块,利用HIR判断程序语言中表达式是否包含在开发者编写的unsafeblock中;

步骤2:利用HIR对表达式的结构进行解析;

步骤3:利用MIR分析识别不安全的操作;

步骤4:对在开发者编写的unsafeblock中的安全表达式或语句进行报告。

2.根据权利要求1所述的一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法,其特征在于,步骤1所述HIR为高级中间表示。

3.根据权利要求1所述的一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法,其特征在于,步骤1具体为:

Rust的源代码首先经由词法分析生成抽象语法树AST,对开发者编写的源代码进行脱糖;经过查询系统生成HIR,然后对其进行类型检查以及剥离unsafe关键字,再次经过查询系统生成中级中间表示MIR,然后进行借用检查、代码优化,最后转化为LLVM IR;

HIR包含代码的结构信息;通过HIR依次找到包含当前表达式的节点,如果该节点的类型为表达式,并且表达式的类型为block,则判断该block是否为开发者编写的unsafeblock,如果是说明当前表达式包含于开发者编写的unsafe block中,继续进行下一步处理,否则就继续对下一个表达式进行判断。

4.根据权利要求1所述的一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法,其特征在于,步骤2具体为:

Rust中表达式共计32种,表达式类型共分为两大类,一类是没有包含block的,一类是包含block的,并且block、语句、表达式三者递归地相互嵌套到任意深度;

类型为block的表达式,结构为一个语句数组和一个作为该block返回值的表达式,因此对于类型为block的表达式,分为两种情况,block中只包含expr,直接对其进行分析,如果包含stmt,对每个stmt继续解析其结构对包含其中的表达式继续进行上述相同处理方法进行分析。

5.根据权利要求1所述的一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法,其特征在于,步骤3具体为:

步骤3.1:识别解引用原始指针的操作;

首先检查表达式是否是一元操作(!x、*x、-x)并且判断是否为解引用(*x),通过rustc_mir_build得到表达式的类型检查信息,判断其是否为unsafe指针;如果是,略过包含该表达式的语句,继续对其他表达式进行相同处理;

步骤3.2:识别是否调用不安全的函数或方法;

检查表达式是否为函数调用或方法调用,通过rustc_mir_build得到表达式的类型检查信息,得到函数或方法def_id,再从TyCtxt中查询到该函数或方法的函数签名,判断其调用的是否为unsafe函数或方法;如果是,略过包含该表达式的语句,继续对其他表达式进行相同处理;

步骤3.3:识别访问可变的静态变量的操作;

对于自定义类型的变量,通过rustc_mir_build得到该变量的类型,并且得到该类型的def_id,判断其是否为可变静态变量;如果是,略过包含该表达式的语句,继续对其他表达式进行相同处理。

6.根据权利要求1所述的一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法,其特征在于,步骤4在经过步骤1-3的分析之后,将安全的表达式以语句为单位进行报告,当语句的右侧是不安全的则将语句的左侧进行报告。

7.根据权利要求6所述的一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法,其特征在于,对于整个block是安全的,就对整个块进行报告;对于if/match/while等判断条件即不会出现复杂的嵌套表达式,也直接进行报告。

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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