[发明专利]基于代码行为单位的程序变量有效定义检测方法及装置有效
申请号: | 201910132689.6 | 申请日: | 2019-02-22 |
公开(公告)号: | CN111611149B | 公开(公告)日: | 2023-03-31 |
发明(设计)人: | 孟罡;王磊;沈亮;孙振;赵荣彩 | 申请(专利权)人: | 上海信息安全工程技术研究中心 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 周艳巧 |
地址: | 200021 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 代码 行为 单位 程序 变量 有效 定义 检测 方法 装置 | ||
本发明属于计算机应用技术领域,特别涉及一种基于代码行为单位的程序变量有效定义检测方法及装置,该方法包含:收集代码样本数据集;提取代码样本数据集中代码抽象语法树,并生成控制流图;遍历控制流图中每行代码,构建各行代码变量的有效定义集合;依据有效定义集合,分析各行代码的输入集合,构建每个定义变量的使用‑定义链,该使用‑定义链用于检测代码函数及相关联的有效变量定义。本发明中基于抽象语法树生成代码控制流图,根据控制流图路径执行过程变量定义和改变情况,以代码行为单位进行变量有效定义检测,实现自动、批量的程序变量有效定义检测,有效提高代码检测效率和质量,便于程序代码漏洞检测,对网络安全应用具有重要的意义。
技术领域
本发明属于计算机应用技术领域,特别涉及一种基于代码行为单位的程序变量有效定义检测方法及装置。
背景技术
代码是由程序员用开发工具所支持的语言编写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。在实际应用中,为确保代码的可用性,需要在代码完成开发之后,对代码进行检测,代码检测过程中较为关键的即为程序变量有效定义检测,通过检测以发现代码中存在的问题,便于代码漏洞分析,进而进一步完善代码,保证代码质量。现有技术中代码检测方法包含代码扫描和代码检查。其中,代码扫描仅用于验证代码是否符合规范、语法等问题,难以发现代码中存在的实际漏洞。代码检查可用于发现代码在逻辑、设计上存在的问题,但实施成本较高。因此,如何通过低成本代码检测以发现代码中存在的实际漏洞,成为程序开发应用过程中亟待解决的问题。
发明内容
为此,本发明提供一种基于代码行为单位的程序变量有效定义检测方法及装置,大大降低计算量,实现自动、批量的程序变量有效定义检测,效率高,通用性、适用性强。
按照本发明所提供的设计方案,一种基于代码行为单位的程序变量有效定义检测方法,包含:
A)收集用于检测的代码样本数据集;
B)针对代码样本数据集,提取代码抽象语法树,并生成控制流图;
C)遍历控制流图中每行代码,构建各行代码变量的有效定义集合;
D)依据有效定义集合,分析各行代码的输入集合,构建每个定义变量的使用-定义链,该使用-定义链用于检测代码函数及相关联的有效变量定义。
上述的,B)中,控制流图表示程序代码在执行过程中所有可能的执行路径。
上述的,B)中,控制流图包含表示进入控制流图的入口块、表示基本块的节点、表示控制流传递关系的边和表示控制流图流出的出口块。
上述的,C)中,根据控制流某条路径执行过程中,将对于执行过程中执行点的所有定义过且没有被重新复制的变量定义作为有效定义,依据该有效定义构建每行代码的有效定义集合。
上述的,C)中,有效定义集合依据变量使用和定义分为输入集合、输出集合、生成集合和销毁集合,其中,每行代码中,所有进来的变量定义归类到输入集合,通过控制流进来的变量定义且未被当前行代码重写或销毁、以及当前行变量定义归类到输出集合,当前行代码变量定义归类到生成集合,当前行代码重写的来自于其他地方的定义变量归类到销毁集。
优选的,将输入集合、输出集合、生成集合和销毁集合表示成位向量,代码中发生的每个赋值对应唯一标志位。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海信息安全工程技术研究中心,未经上海信息安全工程技术研究中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910132689.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种非线性刚度的空气弹簧
- 下一篇:折盖装置、包装机以及计算机可读介质