CN116226673A - 缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置 - Google Patents
缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置 Download PDFInfo
- Publication number
- CN116226673A CN116226673A CN202310490897.XA CN202310490897A CN116226673A CN 116226673 A CN116226673 A CN 116226673A CN 202310490897 A CN202310490897 A CN 202310490897A CN 116226673 A CN116226673 A CN 116226673A
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- buffer
- feature
- code
- software sample
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Image Analysis (AREA)
Abstract
本申请提供了一种缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置。所述方法包括:采集原始软件样本及对应的原始标签;确定各原始软件样本的缓冲区溢出属性,标记对应的属性值;对各原始软件样本进行代码表征,将代码表征根据属性值映射为多维向量,为代码多维向量;将各原始软件样本的代码多维向量和对应的原始标签分为训练集和测试集;利用所述训练集对缓冲区漏洞识别模型进行训练;利用测试集对训练后的缓冲区漏洞识别模型进行评估和/或调优。以此方式,可以使缓冲区漏洞识别模型能够准确识别有漏洞风险的软件特征,提高漏洞风险识别的准确率与效率,满足对漏洞特征分析检测需求。
Description
技术领域
本申请涉及网络安全技术领域,尤其涉及一种缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置。
背景技术
目前网络中充斥着众多软件漏洞,导致网络面临的风险逐渐增加,在此背景下,必须对软件漏洞进行检测,从而避免网络中用户和应用数据遭到窃取、修改等恶意攻击。
软件漏洞挖掘是检查并发现软件***中存在安全漏洞的主要手段之一,主要通过利用各种工具对软件的代码进行审计,或者分析软件的执行过程来查找软件的设计错误、编码缺陷、运行故障。早期漏洞挖掘技术依据是否依赖程序运行划分为静态分析方法与动态分析方法。然而,静态分析法准确率较低,动态分析法则效率较低。
发明内容
本申请提供了一种缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置。
根据本申请的第一方面,提供了一种缓冲区漏洞识别模型的训练方法。该方法包括:
采集原始软件样本及对应的原始标签;
确定各原始软件样本的缓冲区溢出属性,标记对应的属性值;
对各原始软件样本进行代码表征,将代码表征映射为多维向量,为代码多维向量;
将各原始软件样本的代码多维向量和对应的原始标签分为训练集和测试集;
利用所述训练集对缓冲区漏洞识别模型进行训练;
利用测试集对训练后的缓冲区漏洞识别模型进行评估和/或调优;
其中,所述对各原始软件样本进行代码表征,包括:
从原始软件样本中提取接收器类型特征A、内存位置特征B、容器特征C,并对所述接收器类型特征、内存位置特征、容器特征分别进行编码,将编码后的接收器类型特征、内存位置特征、容器特征进行拼接,形成所述原始软件样本的代码表征;
所述将代码表征映射为多维向量,为代码多维向量,包括:
取各个所述原始软件样本对应的接收器类型特征中维度最大值作为接收器类型对齐维度值A1;取各个所述原始软件样本对应的内存位置特征中维度最大值作为内存位置对齐维度值B1;取各个所述原始软件样本对应的容器特征中维度最大值作为容器对齐维度值C1;各个所述原始软件样本对应的接收器类型特征、内存位置特征、容器特征的维度分别扩展为A1、B1、C1,扩展方式为右侧补0,即分别形成各个所述原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2;将各个原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2作为代码多维向量。
优选地,所述接收器类型特征用于表征所述原始软件样本中具有以下三种代码类型中的一个或多个,即:存在指针间接引用、存在危险函数、存在与危险函数相似度大于预设阈值的函数;所述接收器类型特征的获取方式为:对所述原始软件样本进行词法分析,获取存在指针间接引用、存在危险函数、存在与危险函数相似度大于预设阈值的函数的代码,将代码出现位置及代码类型作为数据对,将各个数据对进行拼接;其中,所述危险函数为用户定义的用于实现标准库函数功能相同的函数;
所述内存位置特征用于表征所述原始软件样本中存在以下五种情形中的一个或多个,即:内存位置出现堆栈缓冲区、内存位置出现堆缓冲区、内存位置出现数据段、内存位置出现BSS段、内存位置出现共享内存;所述内存位置特征的获取方式为:对所述原始软件样本进行语法分析,获取内存位置出现堆栈缓冲区、内存位置出现堆缓冲区、内存位置出现数据段、内存位置出现BSS段、内存位置出现共享内存的代码,将代码出现位置及内存位置出现的对象类型作为数据对,将各个数据对进行拼接;
所述容器特征用于表征所述原始软件样本的类型定义中存在以下三种中的一个,即:Struct、Union、None;所述容器特征的获取方式为:对所述原始软件样本进行语法分析,获取出现定义容器类型为Struct、Union、None的代码,将代码出现位置及容器类型作为数据对,将各个数据对进行拼接。
优选地,所述标记对应的属性值包括:
当对应缓冲区溢出属性表示有缓冲区溢出时,标注为1,当对应缓冲区溢出属性表示没有缓冲区溢出时,标注为0。
优选地,所述利用所述训练集对缓冲区漏洞识别模型进行训练包括:
将训练集样本的代码多维向量和原始标签输入缓冲区漏洞识别模型中,根据输入的原始标签与缓冲区漏洞识别模型输出的标签计算差异构建损失函数,通过优化方法来最小化损失函数,根据最小化损失函数调整模型的参数。
优选地,所述利用测试集对训练后的缓冲区漏洞识别模型进行评估和/或调优包括:
将测试集样本的代码多维向量输入缓冲区漏洞识别模型中,根据测试集样本的原始标签与缓冲区漏洞识别模型输出的标签计算缓冲区漏洞识别模型的精确率、召回率、F度量值中的一个或多个,根据精确率、召回率、F度量值中的一个或多个对模型进行评估和/或调优。
根据本申请的第二方面,提供了一种基于缓冲区漏洞识别模型的漏洞检测方法,包括:
将待检测软件的代码多维向量输入采用如前所述的缓冲区漏洞识别模型的训练方法训练得到的缓冲区漏洞识别模型,根据缓冲区漏洞识别模型输出的标签判断软件是否存在漏洞和/或漏洞类型。
根据本申请的第三方面,提供了一种基于缓冲区漏洞识别模型的漏洞检测装置,包括:
数据采集单元,用于采集原始软件样本及对应的原始标签;
属性标记单元,用于确定各原始软件样本的缓冲区溢出属性,标记对应的属性值;
代码映射单元,用于对各原始软件样本进行代码表征,将代码表征映射为多维向量,为代码多维向量;
分组单元,用于将各原始软件样本的代码多维向量和对应的原始标签分为训练集和测试集;
训练单元,用于利用所述训练集对缓冲区漏洞识别模型进行训练;
评价单元,用于利用测试集对训练后的缓冲区漏洞识别模型进行评估和/或调优;
其中,所述对各原始软件样本进行代码表征,包括:
从原始软件样本中提取接收器类型特征A、内存位置特征B、容器特征C,并对所述接收器类型特征、内存位置特征、容器特征分别进行编码,将编码后的接收器类型特征、内存位置特征、容器特征进行拼接,形成所述原始软件样本的代码表征;
所述将代码表征映射为多维向量,为代码多维向量,包括:
取各个所述原始软件样本对应的接收器类型特征中维度最大值作为接收器类型对齐维度值A1;取各个所述原始软件样本对应的内存位置特征中维度最大值作为内存位置对齐维度值B1;取各个所述原始软件样本对应的容器特征中维度最大值作为容器对齐维度值C1;各个所述原始软件样本对应的接收器类型特征、内存位置特征、容器特征的维度分别扩展为A1、B1、C1,扩展方式为右侧补0,即分别形成各个所述原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2;将各个原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2作为代码多维向量。
根据本申请的第四方面,提供了一种基于缓冲区漏洞识别模型的漏洞检测装置,该装置包括:
输入单元,将待检测软件的代码多维向量输入采用如前所述的缓冲区漏洞识别模型的训练方法训练得到的缓冲区漏洞识别模型;
测试单元,用于根据缓冲区漏洞识别模型输出的标签判断软件是否存在漏洞和/或漏洞类型。
在本申请中,根据缓冲区溢出属性对样本进行标注,并根据标注结果及代码表征训练缓冲区漏洞识别模型,使缓冲区漏洞识别模型能够准确识别有漏洞风险的软件特征,提高漏洞风险识别的准确率与效率,满足对漏洞特征分析检测需求。
应当理解,发明内容部分中所描述的内容并非旨在限定本申请的实施例的关键或重要特征,亦非用于限制本申请的范围。本申请的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本申请各实施例的上述和其他特征、优点及方面将变得更加明显。附图用于更好地理解本方案,不构成对本申请的限定在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1是本申请实施例提供的缓冲区漏洞识别模型的训练方法的流程图;
图2是本申请实施例提供的基于缓冲区漏洞识别模型的漏洞检测方法的流程图;
图3是本申请实施例提供的一种缓冲区漏洞识别模型的训练装置的框图;
图4是本申请实施例提供的一种基于缓冲区漏洞识别模型的漏洞检测装置的框图;
图5是本申请实施例提供的一种示例性电子设备的方框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本申请保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
软件漏洞识别是检查并发现软件***中存在安全漏洞的主要手段之一,软件漏洞识别主要是利用各种工具对软件的代码进行审计,或者分析软件的执行过程来查找软件的设计错误、编码缺陷、运行故障。早期漏洞挖掘技术依据是否依赖程序运行划分为静态分析方法与动态分析方法。
近年来,软件复杂性的增加,给软件安全性带来巨大的挑战。随着软件规模的不断增大以及漏洞形态多样化,传统缓冲区溢出漏洞挖掘方法由于存在高误报率和高漏报率的问题,已无法满足复杂软件的安全性分析需求。
传统的静态分析方法往往依赖于人工专家构造漏洞模式,随着软件复杂性的增加,人工构造成本过高,且人的主观性会影响误报率和漏报率。一些开源静态分析工具经常会产生过多的误报,影响漏洞识别的准确率。
而在动态分析方法中,动态测试生成通常涉及模糊测试和符号执行。为了检测漏洞,模糊测试随机生成一个测试用例来触发程序故障,而符号执行在遍历程序路径时收集约束并使用约束求解器生成相关的测试用例。 模糊测试无法彻底全面地理解程序,而符号执行在路径***、约束求解和内存建模方面存在问题,因此,动态分析方法在单独对大型软件***漏洞进行识别时仍存在较大困难。
本申请定义了一种基于机器学习的缓冲区溢出漏洞识别方法,通过对恶意源代码的样本进行特征提取,训练学习并生成模型,从而识别出计算机软件或***中存在的各种缓冲区溢出漏洞。
图1是本申请实施例提供的缓冲区漏洞识别模型的训练方法100的流程图。
如图1所示,所述缓冲区漏洞识别模型的训练方法100包括:
S101: 采集原始软件样本及对应的原始标签;
S102: 确定各原始软件样本的缓冲区溢出属性,标记对应的属性值;
S103: 对各原始软件样本进行代码表征,将代码表征映射为多维向量,为代码多维向量;
S104: 将各原始软件样本的代码多维向量和对应的原始标签分为训练集和测试集;
S105: 利用所述训练集对缓冲区漏洞识别模型进行训练;
S106: 利用测试集对训练后的缓冲区漏洞识别模型进行评估和/或调优;
其中,所述对各原始软件样本进行代码表征,包括:
从原始软件样本中提取接收器类型特征A、内存位置特征B、容器特征C,并对所述接收器类型特征、内存位置特征、容器特征分别进行编码,将编码后的接收器类型特征、内存位置特征、容器特征进行拼接,形成所述原始软件样本的代码表征;
所述将代码表征映射为多维向量,为代码多维向量,包括:
取各个所述原始软件样本对应的接收器类型特征中维度最大值作为接收器类型对齐维度值A1;取各个所述原始软件样本对应的内存位置特征中维度最大值作为内存位置对齐维度值B1;取各个所述原始软件样本对应的容器特征中维度最大值作为容器对齐维度值C1;各个所述原始软件样本对应的接收器类型特征、内存位置特征、容器特征的维度分别扩展为A1、B1、C1,扩展方式为右侧补0,即分别形成各个所述原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2;将各个原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2作为代码多维向量。
进一步地,所述接收器类型特征用于表征所述原始软件样本中具有以下三种代码类型中的一个或多个,即:存在指针间接引用、存在危险函数、存在与危险函数相似度大于预设阈值的函数;所述接收器类型特征的获取方式为:对所述原始软件样本进行词法分析,获取存在指针间接引用、存在危险函数、存在与危险函数相似度大于预设阈值的函数的代码,将代码出现位置及代码类型作为数据对,将各个数据对进行拼接;其中,所述危险函数为用户定义的用于实现标准库函数功能相同的函数;
所述内存位置特征用于表征所述原始软件样本中存在以下五种情形中的一个或多个,即:内存位置出现堆栈缓冲区、内存位置出现堆缓冲区、内存位置出现数据段、内存位置出现BSS段、内存位置出现共享内存;所述内存位置特征的获取方式为:对所述原始软件样本进行语法分析,获取内存位置出现堆栈缓冲区、内存位置出现堆缓冲区、内存位置出现数据段、内存位置出现BSS段、内存位置出现共享内存的代码,将代码出现位置及内存位置出现的对象类型作为数据对,将各个数据对进行拼接;
所述容器特征用于表征所述原始软件样本的类型定义中存在以下三种中的一个,即:Struct、Union、None;所述容器特征的获取方式为:对所述原始软件样本进行语法分析,获取出现定义容器类型为Struct、Union、None的代码,将代码出现位置及容器类型作为数据对,将各个数据对进行拼接。
在S101中,所述采集原始软件样本包括从软件数据集中采集原始软件样本。所述软件数据集中为各原始软件样本标注了原始标签,所述原始标签包括各原始软件样本是否存在漏洞,或标注软件样本的漏洞类型。
对应的,本申请所述的缓冲区漏洞识别模型的训练方法100可以训练识别软件是否存在缓冲区漏洞或软件缓冲区溢出漏洞类型。
在S102中,所述确定原始软件样本的缓冲区溢出属性包括:
若所述缓冲区漏洞识别模型的训练方法用于训练识别软件是否存在缓冲区漏洞,则所述缓冲区溢出属性为有缓冲区溢出和无缓冲区溢出,属性值对应为1和0,若所述缓冲区漏洞识别模型的训练方法用于训练识别软件缓冲区溢出漏洞类型,则所述缓冲区溢出特征包括与缓冲区溢出漏洞类型相关的特征。
在一些实施例中,所述缓冲区溢出属性包括接收器类型特征、内存位置特征、容器特征中的一个或多个。
显然,所述接收器异常会导致缓冲区边界溢出;而内存位置特征表示接收缓冲区所在的位置;容器特征描述了封装了接收缓冲区的结构,通常,容器结构越复杂,缓冲区就越容易受到攻击。本申请经过多组缓冲区溢出漏洞的分析发现,近30%的漏洞为容器特征型漏洞,因此本申请将缓冲区的容器作为缓冲区溢出属性之一。
根据本申请的实施例,根据缓冲区溢出漏洞类型相关的特征设置缓冲区溢出属性,便于缓冲区漏洞识别模型对软件漏洞进行分类训练,以区分软件漏洞类型,对症进行漏洞修补。
在一些实施例中,所述接收器类型特征包括指针是否间接引用,是否存在危险函数,是否存在与危险函数类似的函数中的一个或多个;
若一条语句在没有适当的缓冲区边界检查的情况下属于:指针间接引用、数组写入和危险函数三种接收器类型之一,则可能发生缓冲区溢出。
其中:指针间接引用:发生在应用程序间接引用其预期有效但实际为空的指针时,通常会导致崩溃或退出。
数组写入:复制或填充缓冲区的标准库或用户定义的调用。格式化的字符串输出也可能导致潜在的缓冲区溢出。
危险函数:除了所有标准库函数调用之外,一些用户定义的函数也具有相同的效果。本申请将具有相似函数名称和完全相同数量参数的用户定义函数归类为危险函数。
或,所述内存位置特征包括堆栈缓冲区、堆缓冲区、数据段、BSS段和共享内存的其中一个或多个是否有内存位置出现;
其中,堆栈缓冲区描述了本地和非静态定义的数组;
堆缓冲区描述了用于满足内存应用程序的动态分配内存;
数据段描述静态变量或全局变量;
BSS 段描述未初始化的全局或静态变量;
共享内存描述了一种进程间通信(IPC)的方法。
或,所述容器特征包括容器是否为Struct、Union、None中的一个,或者Struct、Union、None、Others中的一个。
根据本申请的实施例,从多个方向确定缓冲器溢出属性,以涵盖较多的缓冲区溢出漏洞类型,便于对模型进行识别训练。
在S102中,所述标记对应的属性值包括:
当对应缓冲区溢出属性表示有缓冲区溢出时,标注为1,当对应缓冲区溢出属性表示没有缓冲区溢出时,标注为0。
根据本申请的实施例,所述缓冲区溢出属性标注属性值,对缓冲区溢出属性进行量化,便于机器进行有针对性的学习。
本申请中,又一实施方式为,对原始软件样本提取与软件漏洞相关的源代码,保留所提取的源代码,Github提交信息等软件程序相关的文本格式数据。将处理后的样本按照代码度量、Token序列、抽象语法树和图等代码的表征形式抽取相应的代码表征。将代码表征按顺序映射为向量,则对应为代码多维向量。
根据本申请的实施例,将代码映射为代码多维向量,使原始软件样本的代码表征与属性结合,使机器能够根据原始软件样本的特征进行学习并识别其漏洞类型。
在S105中,所述利用所述训练集对缓冲区漏洞识别模型进行训练包括:
将训练集样本的代码多维向量和原始标签输入缓冲区漏洞识别模型中,根据输入的原始标签与缓冲区漏洞识别模型输出的标签计算差异构建损失函数,通过优化方法来最小化损失函数,根据最小化损失函数调整模型的参数。
所述损失函数就是用来度量模型的预测值与真实值的差异程度的运算函数,损失函数越小,模型的鲁棒性就越好。所述优化方法主要包括梯度下降法、随机梯度下降法、批量梯度下降法。
根据本申请的实施例,通过优化方法来最小化损失函数,从而不断调整模型的参数,经过若干次训练,提高缓冲区漏洞识别模型的鲁棒性,使训练得到的模型识别准确率更高。
在S106中,所述利用测试集对训练后的缓冲区漏洞识别模型进行评估和/或调优包括:
将测试集样本的代码多维向量输入缓冲区漏洞识别模型中,根据测试集样本的原始标签与缓冲区漏洞识别模型输出的标签计算缓冲区漏洞识别模型的精确率、召回率、F度量值中的一个或多个,根据精确率、召回率、F度量值中的一个或多个对缓冲区漏洞识别模型进行评估和/或调优。
所述对模型进行调优包括将模型对参数进行微调。
根据本申请的实施例,根据测试集样本对缓冲区漏洞识别模型进行评估和/或调优,了解缓冲区漏洞识别模型的的能力,以便于用户对软件漏洞识别准确率有一定认知。
图2是本申请实施例提供的基于缓冲区漏洞识别模型的漏洞检测方法200的流程图。
如图2所示,所述基于缓冲区漏洞识别模型的漏洞检测方法200包括:
S201: 将待检测软件的代码多维向量输入上述缓冲区漏洞识别模型的训练方法训练得到的缓冲区漏洞识别模型;
S202: 用于根据缓冲区漏洞识别模型输出的标签判断软件是否存在漏洞和/或漏洞类型。
在一些实施例中,还包括更新训练集样本,包括:
当缓冲区漏洞识别模型无法输出标签时,标记对应的缓冲区溢出属性,并将对应的代码多维向量、缓冲区溢出属性及标签存入训练集。
可以理解的是,当缓冲区漏洞识别模型无法输出特征时,显然对应的代码多维向量是之前没有经过训练的新代码,将其存入训练集使缓冲区漏洞识别模型根据对应的缓冲区漏洞类型进行补充训练。
根据本申请的实施例,时时更新训练集样本可以识别未出现过的缓冲区溢出特征,同时对训练集更新、存储,使缓冲区漏洞识别模型的更新速度与缓冲区溢出漏洞的变换速度相适应,实现快速且有效地检测软件是否存在漏洞。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
以上是关于方法实施例的介绍,以下通过装置实施例,对本申请所述方案进行进一步说明。
图3是本申请实施例提供的一种缓冲区漏洞识别模型的训练装置300的框图。
如图3所示,所述缓冲区漏洞识别模型的训练装置300包括:
数据采集单元301,用于采集原始软件样本及对应的原始标签;
属性标记单元302,用于确定各原始软件样本的缓冲区溢出属性,标记对应的属性值;
代码映射单元303,用于对各原始软件样本进行代码表征,将代码表征映射为多维向量,为代码多维向量;
分组单元304,用于将各原始软件样本的代码多维向量和对应的原始标签分为训练集和测试集;
训练单元305,用于利用所述训练集对缓冲区漏洞识别模型进行训练;
评价单元306,用于利用测试集对训练后的缓冲区漏洞识别模型进行评估和/或调优;
其中,所述对各原始软件样本进行代码表征,包括:
从原始软件样本中提取接收器类型特征A、内存位置特征B、容器特征C,并对所述接收器类型特征、内存位置特征、容器特征分别进行编码,将编码后的接收器类型特征、内存位置特征、容器特征进行拼接,形成所述原始软件样本的代码表征;
所述将代码表征映射为多维向量,为代码多维向量,包括:
取各个所述原始软件样本对应的接收器类型特征中维度最大值作为接收器类型对齐维度值A1;取各个所述原始软件样本对应的内存位置特征中维度最大值作为内存位置对齐维度值B1;取各个所述原始软件样本对应的容器特征中维度最大值作为容器对齐维度值C1;各个所述原始软件样本对应的接收器类型特征、内存位置特征、容器特征的维度分别扩展为A1、B1、C1,扩展方式为右侧补0,即分别形成各个所述原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2;将各个原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2作为代码多维向量。
图4是本申请实施例提供的一种基于缓冲区漏洞识别模型的漏洞检测装置400的框图。
如图4所示,所述基于缓冲区漏洞识别模型的漏洞检测装置400包括:
输入单元401,将待检测软件的代码多维向量输入上述缓冲区漏洞识别模型的训练方法训练得到的缓冲区漏洞识别模型;
测试单元402,用于根据缓冲区漏洞识别模型输出的标签判断软件是否存在漏洞和/或漏洞类型。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本申请的实施例的电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如方法100或200。例如,在一些实施例中,方法100或200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM 503并由计算单元501执行时,可以执行上文描述的方法100或200的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法100或200。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式***的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (8)
1.一种缓冲区漏洞识别模型的训练方法,其特征在于,包括:
采集原始软件样本及对应的原始标签;
确定各原始软件样本的缓冲区溢出属性,标记对应的属性值;
对各原始软件样本进行代码表征,将代码表征映射为多维向量,为代码多维向量;
将各原始软件样本的代码多维向量和对应的原始标签分为训练集和测试集;
利用所述训练集对缓冲区漏洞识别模型进行训练;
利用测试集对训练后的缓冲区漏洞识别模型进行评估和/或调优;
其中,所述对各原始软件样本进行代码表征,包括:
从原始软件样本中提取接收器类型特征A、内存位置特征B、容器特征C,并对所述接收器类型特征、内存位置特征、容器特征分别进行编码,将编码后的接收器类型特征、内存位置特征、容器特征进行拼接,形成所述原始软件样本的代码表征;
所述将代码表征映射为多维向量,为代码多维向量,包括:
取各个所述原始软件样本对应的接收器类型特征中维度最大值作为接收器类型对齐维度值A1;取各个所述原始软件样本对应的内存位置特征中维度最大值作为内存位置对齐维度值B1;取各个所述原始软件样本对应的容器特征中维度最大值作为容器对齐维度值C1;各个所述原始软件样本对应的接收器类型特征、内存位置特征、容器特征的维度分别扩展为A1、B1、C1,扩展方式为右侧补0,即分别形成各个所述原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2;将各个原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2作为代码多维向量。
2.根据权利要求1所述的缓冲区漏洞识别模型的训练方法,其特征在于,所述接收器类型特征用于表征所述原始软件样本中具有以下三种代码类型中的一个或多个,即:存在指针间接引用、存在危险函数、存在与危险函数相似度大于预设阈值的函数;所述接收器类型特征的获取方式为:对所述原始软件样本进行词法分析,获取存在指针间接引用、存在危险函数、存在与危险函数相似度大于预设阈值的函数的代码,将代码出现位置及代码类型作为数据对,将各个数据对进行拼接;其中,所述危险函数为用户定义的用于实现标准库函数功能相同的函数;
所述内存位置特征用于表征所述原始软件样本中存在以下五种情形中的一个或多个,即:内存位置出现堆栈缓冲区、内存位置出现堆缓冲区、内存位置出现数据段、内存位置出现BSS段、内存位置出现共享内存;所述内存位置特征的获取方式为:对所述原始软件样本进行语法分析,获取内存位置出现堆栈缓冲区、内存位置出现堆缓冲区、内存位置出现数据段、内存位置出现BSS段、内存位置出现共享内存的代码,将代码出现位置及内存位置出现的对象类型作为数据对,将各个数据对进行拼接;
所述容器特征用于表征所述原始软件样本的类型定义中存在以下三种中的一个,即:Struct、Union、None;所述容器特征的获取方式为:对所述原始软件样本进行语法分析,获取出现定义容器类型为Struct、Union、None的代码,将代码出现位置及容器类型作为数据对,将各个数据对进行拼接。
3.根据权利要求2所述的缓冲区漏洞识别模型的训练方法,其特征在于,所述标记对应的属性值包括:
当对应缓冲区溢出属性表示有缓冲区溢出时,标注为1,当对应缓冲区溢出属性表示没有缓冲区溢出时,标注为0。
4.根据权利要求2所述的缓冲区漏洞识别模型的训练方法,其特征在于,所述利用所述训练集对缓冲区漏洞识别模型进行训练包括:
将训练集样本的代码多维向量和原始标签输入缓冲区漏洞识别模型中,根据输入的原始标签与缓冲区漏洞识别模型输出的标签计算差异构建损失函数,通过优化方法来最小化损失函数,根据最小化损失函数调整模型的参数。
5.根据权利要求2所述的缓冲区漏洞识别模型的训练方法,其特征在于,所述利用测试集对训练后的缓冲区漏洞识别模型进行评估和/或调优包括:
将测试集样本的代码多维向量输入缓冲区漏洞识别模型中,根据测试集样本的原始标签与缓冲区漏洞识别模型输出的标签计算缓冲区漏洞识别模型的精确率、召回率、F度量值中的一个或多个,根据精确率、召回率、F度量值中的一个或多个对模型进行评估和/或调优。
6.一种基于缓冲区漏洞识别模型的漏洞检测方法,其特征在于,包括:
将待检测软件的代码多维向量输入采用权利要求1-5任一项所述的缓冲区漏洞识别模型的训练方法训练得到的缓冲区漏洞识别模型,根据缓冲区漏洞识别模型输出的标签判断软件是否存在漏洞和/或漏洞类型。
7.一种缓冲区漏洞识别模型的训练装置,其特征在于,包括:
数据采集单元,用于采集原始软件样本及对应的原始标签;
属性标记单元,用于确定各原始软件样本的缓冲区溢出属性,标记对应的属性值;
代码映射单元,用于对各原始软件样本进行代码表征,将代码表征映射为多维向量,为代码多维向量;
分组单元,用于将各原始软件样本的代码多维向量和对应的原始标签分为训练集和测试集;
训练单元,用于利用所述训练集对缓冲区漏洞识别模型进行训练;
评价单元,用于利用测试集对训练后的缓冲区漏洞识别模型进行评估和/或调优;
其中,所述对各原始软件样本进行代码表征,包括:
从原始软件样本中提取接收器类型特征A、内存位置特征B、容器特征C,并对所述接收器类型特征、内存位置特征、容器特征分别进行编码,将编码后的接收器类型特征、内存位置特征、容器特征进行拼接,形成所述原始软件样本的代码表征;
所述将代码表征映射为多维向量,为代码多维向量,包括:
取各个所述原始软件样本对应的接收器类型特征中维度最大值作为接收器类型对齐维度值A1;取各个所述原始软件样本对应的内存位置特征中维度最大值作为内存位置对齐维度值B1;取各个所述原始软件样本对应的容器特征中维度最大值作为容器对齐维度值C1;各个所述原始软件样本对应的接收器类型特征、内存位置特征、容器特征的维度分别扩展为A1、B1、C1,扩展方式为右侧补0,即分别形成各个所述原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2;将各个原始软件样本对应的对齐后的接收器类型特征A2、对齐后的内存位置特征B2、对齐后的容器特征C2作为代码多维向量。
8.一种基于缓冲区漏洞识别模型的漏洞检测装置,其特征在于,包括:
输入单元,将待检测软件的代码多维向量输入采用权利要求1-5任一项所述的缓冲区漏洞识别模型的训练方法训练得到的缓冲区漏洞识别模型;
测试单元,用于根据缓冲区漏洞识别模型输出的标签判断软件是否存在漏洞和/或漏洞类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310490897.XA CN116226673B (zh) | 2023-05-05 | 2023-05-05 | 缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310490897.XA CN116226673B (zh) | 2023-05-05 | 2023-05-05 | 缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116226673A true CN116226673A (zh) | 2023-06-06 |
CN116226673B CN116226673B (zh) | 2023-07-07 |
Family
ID=86580861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310490897.XA Active CN116226673B (zh) | 2023-05-05 | 2023-05-05 | 缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116226673B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2292041A1 (en) * | 1998-12-22 | 2000-06-22 | Scott Alan Thomson | Software program protection mechanism |
CA2326036A1 (en) * | 2000-11-16 | 2002-05-16 | Gemplus S.A. | Method for securing electronic device data processing |
JP2006246325A (ja) * | 2005-03-07 | 2006-09-14 | Tohoku Univ | ネットワーク異常検出システム |
CN101241532A (zh) * | 2008-02-15 | 2008-08-13 | 北京邮电大学 | 面向源代码的基于不等式组求解的缓冲区溢出检测方法 |
CN101630350A (zh) * | 2008-07-14 | 2010-01-20 | 西门子(中国)有限公司 | 缓冲区溢出漏洞的检测方法、装置和代码插装方法、装置 |
CN101714118A (zh) * | 2009-11-20 | 2010-05-26 | 北京邮电大学 | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 |
CN101833631A (zh) * | 2010-02-09 | 2010-09-15 | 北京理工大学 | 一种结合指针分析的软件安全漏洞动态检测方法 |
US20110161667A1 (en) * | 2009-12-24 | 2011-06-30 | Rajesh Poornachandran | Trusted graphics rendering for safer browsing on mobile devices |
US20110317756A1 (en) * | 2010-06-28 | 2011-12-29 | Sony Corporation | Coding device, imaging device, coding transmission system, and coding method |
CN102567200A (zh) * | 2011-12-14 | 2012-07-11 | 北京航空航天大学 | 基于函数调用图的并行化安全漏洞检测方法 |
CN104732152A (zh) * | 2015-04-07 | 2015-06-24 | 南京大学 | 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法 |
CA3055978A1 (en) * | 2018-11-19 | 2020-05-19 | Bmc Software, Inc. | Prioritized remediation of information security vulnerabilities based on service model aware multi-dimensional security risk scoring |
CN113704767A (zh) * | 2021-08-10 | 2021-11-26 | 北京凌云信安科技有限公司 | 融合漏洞扫描引擎和漏洞工单管理的漏洞管理*** |
-
2023
- 2023-05-05 CN CN202310490897.XA patent/CN116226673B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2292041A1 (en) * | 1998-12-22 | 2000-06-22 | Scott Alan Thomson | Software program protection mechanism |
CA2326036A1 (en) * | 2000-11-16 | 2002-05-16 | Gemplus S.A. | Method for securing electronic device data processing |
JP2006246325A (ja) * | 2005-03-07 | 2006-09-14 | Tohoku Univ | ネットワーク異常検出システム |
CN101241532A (zh) * | 2008-02-15 | 2008-08-13 | 北京邮电大学 | 面向源代码的基于不等式组求解的缓冲区溢出检测方法 |
CN101630350A (zh) * | 2008-07-14 | 2010-01-20 | 西门子(中国)有限公司 | 缓冲区溢出漏洞的检测方法、装置和代码插装方法、装置 |
CN101714118A (zh) * | 2009-11-20 | 2010-05-26 | 北京邮电大学 | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 |
US20110161667A1 (en) * | 2009-12-24 | 2011-06-30 | Rajesh Poornachandran | Trusted graphics rendering for safer browsing on mobile devices |
CN101833631A (zh) * | 2010-02-09 | 2010-09-15 | 北京理工大学 | 一种结合指针分析的软件安全漏洞动态检测方法 |
US20110317756A1 (en) * | 2010-06-28 | 2011-12-29 | Sony Corporation | Coding device, imaging device, coding transmission system, and coding method |
CN102567200A (zh) * | 2011-12-14 | 2012-07-11 | 北京航空航天大学 | 基于函数调用图的并行化安全漏洞检测方法 |
CN104732152A (zh) * | 2015-04-07 | 2015-06-24 | 南京大学 | 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法 |
CA3055978A1 (en) * | 2018-11-19 | 2020-05-19 | Bmc Software, Inc. | Prioritized remediation of information security vulnerabilities based on service model aware multi-dimensional security risk scoring |
CN113704767A (zh) * | 2021-08-10 | 2021-11-26 | 北京凌云信安科技有限公司 | 融合漏洞扫描引擎和漏洞工单管理的漏洞管理*** |
Non-Patent Citations (3)
Title |
---|
COWAN C ET AL: "Buffer overflows: Attacks and defenses for the vulnerability of the decade", 《DARPA INFORMATION SURVIVABILITY CONFERENCE AND EXPOSITION》 * |
唐聪等: "基于深度学习物体检测的视觉跟踪方法", 《红外与激光工程》, vol. 47, no. 05 * |
张祖法: "网络流量中面向缓冲区溢出漏洞的恶意程序检测方法研究", 《硕士电子期刊》, no. 02 * |
Also Published As
Publication number | Publication date |
---|---|
CN116226673B (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737899B (zh) | 一种基于机器学习的智能合约安全漏洞检测方法 | |
US8996524B2 (en) | Automatically mining patterns for rule based data standardization systems | |
CN115146282A (zh) | 基于ast的源代码异常检测方法及其装置 | |
CN113420822B (zh) | 模型训练方法和装置、文本预测方法和装置 | |
CN114036531A (zh) | 一种基于多尺度代码度量的软件安全漏洞检测方法 | |
CN115913710A (zh) | 异常检测方法、装置、设备及存储介质 | |
CN114328106A (zh) | 日志数据处理方法、装置、设备及存储介质 | |
CN112817877B (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
CN111738290B (zh) | 图像检测方法、模型构建和训练方法、装置、设备和介质 | |
CN113886832A (zh) | 智能合约漏洞检测方法、***、计算机设备和存储介质 | |
CN116226673B (zh) | 缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置 | |
Haojie et al. | Vulmg: A static detection solution for source code vulnerabilities based on code property graph and graph attention network | |
CN109784048B (zh) | 一种基于程序图的栈缓冲区溢出脆弱性检测方法 | |
CN116702157A (zh) | 一种基于神经网络的智能合约漏洞检测方法 | |
WO2023011093A1 (zh) | 任务模型的训练方法、装置、电子设备及存储介质 | |
CN116340172A (zh) | 基于测试场景的数据收集方法、装置及测试用例检测方法 | |
CN116151470A (zh) | 一种产品质量预测方法、装置、设备及存储介质 | |
CN114492364A (zh) | 相同漏洞的判断方法、装置、设备和存储介质 | |
CN115589339A (zh) | 网络攻击类型识别方法、装置、设备以及存储介质 | |
CN115601042A (zh) | 信息识别方法、装置、电子设备及存储介质 | |
CN114416422A (zh) | 问题定位方法、装置、设备、介质和程序产品 | |
CN115865409A (zh) | 一种代码风险检测方法、装置、设备及介质 | |
CN110505247A (zh) | 攻击检测方法、装置、电子设备及存储介质 | |
CN116401113B (zh) | 一种异构众核架构加速卡的环境验证方法、装置及介质 | |
Xu et al. | Software Vulnerabilities Detection Based on a Pre-trained Language Model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |