[发明专利]用于代码静态分析的基于机器学习的敏感函数识别方法在审
申请号: | 202211291256.3 | 申请日: | 2022-10-19 |
公开(公告)号: | CN115640013A | 公开(公告)日: | 2023-01-24 |
发明(设计)人: | 赵亮;张合磊;赵平;杨临庆 | 申请(专利权)人: | 北京酷德啄木鸟信息技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F18/241;G06N20/00 |
代理公司: | 北京信慧永光知识产权代理有限责任公司 11290 | 代理人: | 姚鹏;陈桂香 |
地址: | 100043 北京市石景山区八*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 代码 静态 分析 基于 机器 学习 敏感 函数 识别 方法 | ||
本发明涉及基于机器学习的用于代码静态分析的敏感函数识别方法,包括如下步骤:确定与所述敏感函数相关的特征类型以及各所述特征类型中包含的特征实例;根据各所述特征实例,使用训练集数据和部分的测试集数据组成的训练数据对基于贝叶斯网络算法的机器学习算法模型进行训练,其中,所述训练集数据抽取自训练集源代码,所述测试集数据抽取自测试集源代码;将所述测试集数据输入到训练好的所述机器学习算法模型中,获得所述测试集数据中的所述敏感函数的识别分类结果。根据本发明的敏感函数识别方法相比于现有的各类代码分析敏感函数识别方法,具有更准确的识别率和更低的漏报率。
技术领域
本发明涉及代码静态分析领域,更具体地,涉及在诸如Java代码等程序代码静态分析中使用的基于机器学习算法的敏感函数识别方法,以及
背景技术
代码静态分析也称静态分析,是指在不运行程序的情况下,通过词法分析、语法分析、控制流分析、数据流分析等技术对程序代码进行扫描,发现代码可能存在的诸如变量未定义、类型不匹配、内存泄漏等问题,从而验证代码是否满足规范性、安全性、可靠性、可维护性等一系列指标的一种代码分析技术。通常,代码静态分析工具会按照自己的规则进行问题的严重等级划分,给出不同的标识和提示。通过使用静态分析,可以在不产生测试用例编写和代码检测配置的开销的情况下识别出可能危害应用安全的缺陷和安全漏洞,因此能够较为经济地衡量和跟踪软件质量指标。
在例如Java代码静态分析中,程序代码中的函数检查点的设定对于最终的分析结果有着非常大的影响。这样的函数检查点通常是针对源函数、破发函数和净化函数这三类函数设定的。这三类函数也可以被统称为敏感函数。在分析程序时,源函数和破发函数的选择会影响分析的结果。例如,在跨站攻击中,当使用函数queryDB()作为源函数,程序分析将会把使用上述函数的缺陷识别为存储型跨站;当使用函数openUrl()作为破发函数,程序分析会将其识别为开放重定向缺陷。又例如,当分析命令注入过程中发现使用了净化函数,则认为此缺陷已经被修复可以忽略。因此,函数检查点的设置对于程序代码分析的结果准确性起着举足轻重的作用。如果配置了错误检查点集合,分析很容易导致误报和错报。因此,如何准确地识别源函数、破发函数、净化函数并分别将它们每种缺陷类型相关联,对于提高分析准确度,剔除噪音以及分析警告的分类都非常重要。
发明内容
要解决的技术问题
在当前的程序分析中,敏感函数主要是从特定的库和框架中通过人工读取函数逐条分析提出。这样的人工识别方式导致分析效率低,有效识别率低,识别程度低。随着开源商业程序框架越来越多,例如Java Spring框架包含超过5000多个程序,通过传统的人工识别方式对敏感函数进行准确地识别几乎是不可现实的。
此外,人工识别存在函数被忽略或遗漏而未被添加至规则集合中的风险。这将导致分析结果存在误报。例如,encodeHtml()等外部敏感函数或源代码中定义的自定义函数如未加入到规则集合中,则可能被审计工具忽略掉。为了提供更精准的代码审计分析,需要考虑它使用的所有的库和框架的所有函数,判断其是否可以加入敏感函数中,从而尽可能地丰富静态分析规则集。
因此,本发明旨在提供一种用于代码静态分析的敏感函数识别方法,其相比于现有的各类代码分析敏感函数识别方法,能够具有更准确的识别率和更低的漏报率。
解决问题的技术方案
为了达到上述目的,本发明提供了一种基于机器学习的用于代码静态分析的敏感函数识别方法,其特征在于,所述方法包括如下步骤:确定与所述敏感函数相关的特征类型以及各所述特征类型中包含的特征实例,即步骤S1;根据各所述特征实例,使用训练集数据和部分的测试集数据组成的训练数据对基于贝叶斯网络算法的机器学习算法模型进行训练,其中,所述训练集数据抽取自训练集源代码,所述测试集数据抽取自测试集源代码,即步骤S2;将所述测试集数据输入到训练好的所述机器学习算法模型中,获得所述测试集数据中的所述敏感函数的识别分类结果,即步骤S3。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京酷德啄木鸟信息技术有限公司,未经北京酷德啄木鸟信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211291256.3/2.html,转载请声明来源钻瓜专利网。