【技术实现步骤摘要】
用于代码静态分析的基于机器学习的敏感函数识别方法
[0001]本专利技术涉及代码静态分析领域,更具体地,涉及在诸如Java代码等程序代码静态分析中使用的基于机器学习算法的敏感函数识别方法,以及
技术介绍
[0002]代码静态分析也称静态分析,是指在不运行程序的情况下,通过词法分析、语法分析、控制流分析、数据流分析等技术对程序代码进行扫描,发现代码可能存在的诸如变量未定义、类型不匹配、内存泄漏等问题,从而验证代码是否满足规范性、安全性、可靠性、可维护性等一系列指标的一种代码分析技术。通常,代码静态分析工具会按照自己的规则进行问题的严重等级划分,给出不同的标识和提示。通过使用静态分析,可以在不产生测试用例编写和代码检测配置的开销的情况下识别出可能危害应用安全的缺陷和安全漏洞,因此能够较为经济地衡量和跟踪软件质量指标。
[0003]在例如Java代码静态分析中,程序代码中的函数检查点的设定对于最终的分析结果有着非常大的影响。这样的函数检查点通常是针对源函数、破发函数和净化函数这三类函数设定的。这三类函数也可以被统称为敏感函 ...
【技术保护点】
【技术特征摘要】
1.一种基于机器学习的用于代码静态分析的敏感函数识别方法,其特征在于,所述方法包括如下步骤:步骤S1:确定与所述敏感函数相关的特征类型以及各所述特征类型中包含的特征实例;步骤S2:根据各所述特征实例,使用训练集数据和部分的测试集数据组成的训练数据对基于贝叶斯网络算法的机器学习算法模型进行训练,其中,所述训练集数据抽取自训练集源代码,所述测试集数据抽取自测试集源代码;步骤S3:将所述测试集数据输入到训练好的所述机器学习算法模型中,获得所述测试集数据中的所述敏感函数的识别分类结果。2.根据权利要求1所述的敏感函数识别方法,其特征在于,在所述步骤S2中,先用标签对所述训练数据中的至少部分函数进行标签化,所述标签包括所述函数的函数名、缺陷分类和函数分类。3.根据权利要求2所述的敏感函数识别方法,其特征在于,在所述步骤S2中,进行如下的分类训练步骤:在第一分类训练步骤中,关于三个安全检查函数集合对至少部分标签化的所述训练数据中的函数进行分类,所述三个安全检查函数集合包括源函数集合、破发函数集合和净化函数集合;在第二分类训练步骤中,丢弃所述训练数据中的未被分类至所述三个安全检查函数集合中的函数,并且将所述训练数据中的被分类至所述三个安全检查函数集合中的函数与各所述特征实例相关联。4.根据权利要求3所述的敏感函数识别方法,其特征在于,在所述步骤S2中,还包括如下的对于所述机器学习算法模型的调优步骤:通过使用二维特征矩阵来对所述机器学习算法模型的输出结果进行调整,其中所述二维特征矩阵是通过针对所述训练样本的各所述函数计算相对于每个所述特征实例的0或1...
【专利技术属性】
技术研发人员:赵亮,张合磊,赵平,杨临庆,
申请(专利权)人:北京酷德啄木鸟信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。