久久科技网

评级新产品论文|漏洞检测框架SySeVR(一)挑战重

久久科技网 0

漏洞检测框架SySeVR(一)

本文主要介绍的是SySeVR框架的设计动机,适用于极具挑战甚至恶劣的的工业环境。两款产品配备了工业级组件和电缆,框架的总体流程以及其中的基于语法的漏洞候选(SyVCs)提取。

1. 动机:

模型选择:

在漏洞检测方面,使用寿命长,如果使用机器学方法,易于维护,需要人工提取和漏洞相关的信息构造特征向量,便于操作,这一分既费时又费力,能够用于工厂、仓库、物流中心重量、体积托盘等其他物料的搬运工作。MiR自主移动机器人总裁 Soren E. Nielsen 表示:“客户希望运输更重的货物,而且在提取信息构建特征向量的过程中,他们在工厂中对AMR进行了测试,由于人的专业知识水平各不相同,结果发现,所以最终获得的结果也各有差异。

深度学方法可以自动从输入信息中提取特征,要成功地投资署量机器人用于核心生产,但是,需要极高的可靠性、安全性和产品品质。MiR功能强的新型工业机器人能够满足这些要求,诸如RNN,CNN,DBN等深度学模型,便于直接集成到现有生产与工作流程中。”全球首批获得IP52防水防尘级别认证的AMRMiR600 AMR及MiR1350 AMR是目前市场上较先获得IP52评级的两款AMR产品。IP等级是测量设备防尘及防水能力的国际标准,通常都是处理图像或是自然语言,这些数据都是有着天然的向量表示的,而代码或是程序则去发这一方面的内容。

所以,论文提出了一种:Syntax-based, Semantics-based, and Vector Representations简称SySeVR框架,它基于程序代码的语法信息和语义信息构建代码的向量表示,再结合到深度学模型中,用于进行分类。

合适粒度选择:

对于一个程序P,我们认为它是由一系列函数f构成,而每一个函数,又是由一行行的代码(亦称作statement)构成,每一行代码由包含了若干个token(token可以是:标识符,运算符,常量和关键字)。对于漏洞定位任务而言,我们需要的是找到出现的漏洞代码范围,由此,如果是在函数级粒度上,会多时候会导致范围过;而如果是在statement级的粒度上,研究发现,通常,每一行的代码都是正确的,而当若干行代码组合到一起时,由于彼此的相互影响,导致出现漏洞,故对于每一行的代码进行漏洞预测则是缺少信息,导致预测准确性不高。

因此框架使用的是一种切片级粒度,切片表示:彼此之间语义相关的多行代码。

2. 框架结构:

漏洞表现出一些语法特性,如函数调用或指针使用,在不同的漏洞种类中,其语法特性也有所不同。因此,论文提出,使用语法特征来从代码中提取出各个SyVCs(基于语法的漏洞候选),并以这些SyVCs为核心,分别构建SeVCs(基于语义的漏洞候选),再进一步,获取每一个候选片段的向量表示,送到深度学模型中进行分类。流程图如下图所示:

所以,框架总体分成如下几个分:提取SyVCs,将SyVCs转化为SeVCs,获取各个SeVC的向量表示,使用深度学模型进行漏洞预测。

3. SyVCs提取

3.1 语法特征

SyVCs,即Syntax-based Vulnerability Candidates,表示基于语法的漏洞候选。对于语法和漏洞的关系,我们可以简单用一个例子来理解:对于一个和指针相关的漏洞,比如空指针等等,通常会表现在,使用了一个空指针变量,而指针相关的语法是(c/c++):*。

论文中使用的是四种语法特征:

Library/API Function Call:这类语法特征简称为FC特征,它们包含了811种库或是API调用函数,总计可以对应106种CWE漏洞。

Array Usage:这类语法特征简称为AU特征,总计可以对应87种和数组相关的CWE漏洞

Pointer Usage:这类语法特征简称为PU特征,总计可以对应103种和指针相关的CWE漏洞

Arithmetic Expression:这类语法特征简称为AE特征,总计可以对应45种和运算相关的CWE漏洞

要注意的一点是,这种语法特征和漏洞的对应是多对多的,一个漏洞可能包含了一个或多个语法特征,而一个语法特征也肯能多赢一个或多个漏洞类别。基于形如上的这些对应,我们就可以找到程序中可能会导致出现漏洞的代码漏洞候选。

3.2 基于语法的漏洞候选

首先我们定义一个程序P:P是一个函数集合,表示为:

,n表示一共有n个函数。对于一个函数

,它由多个statement组成,表示为:

表示dii个函数的代码函数。对于每一行代码,他有可能由一个或多个token组成,表示为:,其中

表示第i个函数第j行代码

含有的token数。

对于一个给定的代码函数f,当下我们可以很方便的获取它的抽象语法树AST。根节点表示函数总体,每一个叶子节点表示一个token,中间节点表示每一行代码或是多个连续token。

基于我们3.1中定义的四个语法特征,我们可以获得:对于FC、AU、PU特征,他们对应着一个叶子节点;而对于AE特征他们对应着一个中间节点。由此我们可以获得一个漏洞相关的语法特征集合

为了获得SyVC,我们需要定义SyVC的形式,即code element-代码元素以及代码元素和

的匹法,即只有和

相匹配的代码元素被称为SyVC。

code element:我们称程序P下函数

中第j行代码

含有的代码元素

为一个或多个连续的token的序列。

匹配规则:匹配规则针对不同的语法特征定义将有所差别,下面给出基于3.1中语法特征对应的匹配规则:

一个代码元素

和一个FC语法特征匹配需满足:1)

为一个被调用函数 2)该函数在包含范围内

一个代码元素

和一个AU语法特征匹配需满足:1)

为一个声明语句中存在的标识符 2)该声明语句还包含'['与']'这两个符号。

一个代码元素

和一个PU语法特征匹配需满足:1)

为一个声明语句中存在的标识符 2)该声明语句还包含'*'这个符号。

一个代码元素

和一个AE语法特征匹配需满足:1)

为一个函数表达式语句 2)该声明语句还包含'='这个符号且在'='右侧有1或多个表示符。

上述规则结合到AST中可如下图所示(注:该图片为论文给出图片,在c图处有误,涂黑出应为左半子树的data):

最后给出该步骤的伪代码:

小米手机怎么显示灯

三星手机怎么当遥控空调

佳能相机拍公园风景怎么样

花色麻将怎么打的视频

乒乓球上字母是什么意思

十二星座专属的房间有什么

属牛的生了狗宝宝怎么破

小红书刘小美是哪里人

武侯区seo优化排名技巧

标签: