(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210931202.2 (22)申请日 2022.08.04 (71)申请人 徐文琳 地址 433000 湖北省仙桃市西流河镇 姚潭 村三组24 号 (72)发明人 徐文琳 孔若英 杨潜  (74)专利代理 机构 成都九鼎天元知识产权代理 有限公司 51214 专利代理师 和占宏 (51)Int.Cl. G06F 21/57(2013.01) G06N 20/00(2019.01) (54)发明名称 一种基于文本特征和函数依赖特征的软件 安全漏洞检测方法 (57)摘要 本发明公开一种基于文本特征和函数依赖 特征的软件安全漏洞检测方法, 该方法包括: 对 项目中的代码进行预处理, 提取项目中所有的函 数信息并保存, 对函数信息进行函数文本特征和 函数依赖关系特征提取和合并, 使用自编码 Autoencoder对合并特征向量进行降维和去噪, 最后利用局部离群因子检测方法LOF进行异常检 测, 得到含有安全漏洞的函数。 本发明基于无监 督学习进行软件安全漏洞检测, 不需要提供样本 是否含有安全漏洞的标签, 同时考虑软件的文本 特征和软件中函数之间的依 赖关系特征, 提高了 软件安全漏洞检测的正确率。 权利要求书2页 说明书7页 附图2页 CN 115186272 A 2022.10.14 CN 115186272 A 1.一种基于文本特征和函数依赖特征的软件安全漏洞检测方法, 其特征在于, 具体操 作步骤如下: 步骤1.代码预处理: 输入项目代码信 息, 对项目中的代码进行预处理, 提取项目中所有 的函数信息并保存; 步骤2.函数文本特征提取: 将步骤1中得到的函数信息利用Doc2Vec方法进行函数文本 特征提取, 得到函数文本特 征向量; 步骤3.函数依赖关系特征提取: 利用步骤1中函数之间的调用关系构建函数依赖关系 有向图, 使用邻接矩阵表征函数依赖关系有向图, 通过奇异值分解将邻接矩阵转换成函数 依赖关系特 征向量; 步骤4.函数文本特征、 函数依赖关系特征合并: 将步骤2和步骤3中分别得到的函数文 本特征向量和函数依赖关系特 征向量进行合并, 得到合并的特 征向量来表征函数 特征; 步骤5.特征降维: 使用自编码Autoencoder对步骤4得到的合并特征向量进行降维和去 噪, 自编码Aut oencoder分为编码和解码 两部分, 通过将解码结果和原始特征向量进行对比 作为损失函数进行训练, 得到最优的编码结果; 步骤6.异常检测: 使用局部离群因子检测方法LOF进行异常检测, 得到含有安全漏洞的 函数。 2.根据权利要求1所述的一种基于文本特征和函数依赖特征的软件安全漏洞检测方 法, 其特征在于, 步骤1中对项目中的代码进行 预处理, 具体步骤 包括: 步骤1.1.提取项目中的源代码文件; 步骤1.2.根据源代码文件中的代码结构信息, 提取源代码文件中所包含的函数信息, 源代码文件中包含变量和函数两种, 而安全漏洞只存在于函数中, 因此忽略变量信息, 只提 取函数信息; 步骤1.3.将提取 出的函数信息保存在名为源代码文件名加上函数名称的文本文件中。 3.根据权利要求1所述的一种基于文本特征和函数依赖特征的软件安全漏洞检测方 法, 其特征在于, 步骤2中Doc2Vec方法将函数转换成固定长度的向量, 用来表 示函数的文本 特征; 主要包括两步: 第一步是训练模 型, 对所有的函数进 行训练, 得到训练模型; 第二步是 预测过程, 得到待预测的函数的文本特 征向量。 4.根据权利要求3所述的一种基于文本特征和函数依赖特征的软件安全漏洞检测方 法, 其特征在于, 所述训练过程为: 针对输入的函数, 将函数进 行分组, 随机遮盖每个函数中 的某个单词进 行预测, 将预测的误差作为损失函数, 根据最小化损失函数原则, 采用随机梯 度下降法, 不断迭代调整模型参数值, 迭代 次数设置为10, 迭代后得到训练模型后, 保存训 练模型; 所述预测过程为: 加载训练模型, 将待预测的函数的文本特征向量进行随机初始 化, 放入到加载的训练模型中, 与训练过程一致, 将单词的预测误差作为损失函数, 采用随 机梯度下降法进行迭代, 与训练过程不同在于, 迭代过程中保持训练模型中的参数不变, 改 变文本特征向量, 预测过程中迭代的次数同样设置为10, 经过迭代后得到待预测的函数 的 文本特征向量。 5.根据权利要求1所述的一种基于文本特征和函数依赖特征的软件安全漏洞检测方 法, 其特征在于, 步骤3中函数依赖关系有向图由G来表 示, G=(V,E), 其中V表 示项目中的函 数, E表示函数之间的依赖关系; G的邻接矩阵由An×n表示, n为函数 的个数, An×n为主对角线权 利 要 求 书 1/2 页 2 CN 115186272 A 2元素为0的对阵矩阵, A(i,j)表示矩阵An×n中第i行第j列的元素, 即函数i与函数j的依赖关 系, 并且i≠j, 其中当函数i依赖函数j时, A(i,j)=1, 当函数i 不依赖函数j时, A(i,j)=0 。 6.根据权利要求5所述的一种基于文本特征和函数依赖特征的软件安全漏洞检测方 法, 其特征在于, 所述邻接矩阵An×n的算法复杂度为O(n2l), 其中n为项目中函数的个数, l为 每个函数中包含的调用函数个数; 构建完邻接矩阵后, 采用奇异 值分解SVD将邻接矩阵转换 为维度低的向量, 即函数依赖关系特 征向量。 7.根据权利要求1所述的一种基于文本特征和函数依赖特征的软件安全漏洞检测方 法, 其特征在于, 步骤4中, 将函数的文本特征和函数之间的依赖 关系特征进 行了合并, 并用 合并后的向量表示函数特征; 函数的文本特征长度为200, 函数的依赖关系特征长度为10, 函数的合并特 征的向量长度为210 。 8.根据权利要求1所述的一种基于文本特征和函数依赖特征的软件安全漏洞检测方 法, 其特征在于, 步骤5中自编码Aut oencoder是用于降维的多层神经网络, 通过最小化重 建 误差来学习一个好的降维的向量, 自编码Autoencoder包括两个部分: 编码部分z=h(x)和 解码部分x ′=g(z), 其中x为输入向量, h(x)为自编码Autoencoder里的编码过程, z为自编 码Autoencoder编码的结果, z的维度为10, g(z)为自编码Autoencoder里的解码过程, z为解 码的输入, x ′为自编码Autoencoder的输出结果, 通过将x和x ′的差异作为损失函数, 对自编 码进行训练, 调整自编码参数, 自编码Autoenco der的训练次数设置为50; 训练完成后, 取z 的值作为原始向量x的降维向量结果; 自编码Aut oencoder的隐藏层 共有7层, 每层的节 点个 数分别为500、 500、 2000、 10、 2000、 500、 500; 通过降维, 向量维度从合并后的210维变成了10 维。 9.根据权利要求1所述的一种基于文本特征和函数依赖特征的软件安全漏洞检测方 法, 其特征在于, 步骤6中将含有安全漏洞的函数作为异常函数, 采用异常检测方法局部离 群因子检测方法LOF进行异常函数的检测, 其中异常值 LOF的计算公式如下: 其中k是最近邻的个数, ARk(x)为离x最近的点的集合, ARk(x)为x到其最近k个邻居的平 均距离, y是离x最近的k个点的集合里面的每个点, ARk(y)为y到其最近的k个邻居的平均距 离。 10.根据权利要求9所述的一种基于文本特征和函数依赖特征的软件安全漏洞检测方 法, 其特征在于, 通过计算LOFk(x)得到每个函数的LOF值, 将计算后的所有函数的LOF值进 行从大到小排序, 将LOF值 排在前30%的函数视为异常点, 即为含有安全漏洞的函数。权 利 要 求 书 2/2 页 3 CN 115186272 A 3

.PDF文档 专利 一种基于文本特征和函数依赖特征的软件安全漏洞检测方法

安全报告 > 其他 > 文档预览
中文文档 12 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共12页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于文本特征和函数依赖特征的软件安全漏洞检测方法 第 1 页 专利 一种基于文本特征和函数依赖特征的软件安全漏洞检测方法 第 2 页 专利 一种基于文本特征和函数依赖特征的软件安全漏洞检测方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常2024-03-18 13:00:33上传分享
给文档打分
您好可以输入 255 个字符
网站域名是多少( 答案:github5.com )
评论列表
  • 暂时还没有评论,期待您的金玉良言
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。