APP下载

基于本体的网络设备脆弱性知识库构建

2022-02-17宋子繁肖美华钟逸洲罗敏

关键词:网络设备脆弱性队列

宋子繁, 肖美华, 钟逸洲, 罗敏

(华东交通大学 软件学院, 江西 南昌 330013)

0 引言

网络设备作为信息基础设施的核心部件,其脆弱性(vulnerability,也称为漏洞)数量的不断增长,导致信息安全形势日益严峻。在脆弱性、脆弱性知识库研究方面,国家互联网应急中心[1]、王辉等[2]为准确评估计算机网络的脆弱性,结合贝叶斯网络与攻击图提出一种新的评估算法;代培武等[3]针对现有漏洞检测平台无法有效识别Crash类型的问题,提出一种二进制可执行程序漏洞检测和Crash类型判定的方法,并基于该方法开发原型系统;Jiang等[4]针对脆弱性评估过程中手工分析不精确的问题,提出使用交叉链接和相关的数据库来收集、提取、过滤和可视化多个现有存储库的漏洞数据,从而推断出信息物理系统的脆弱性信息;Mishina等[5]基于脆弱性数据库,提出一种有效的威胁分析方法,用于安全至上的信息物理系统设计阶段并发现可能存在的攻击。在基于本体的关联规则挖掘方面,Agapito等[6]在其早期工作提出的一种基于本体的带注释数据集中提取加权关联规则方法GO-WAR的基础上,设计交叉本体关联规则的方法,用于挖掘生物学领域的关联规则;Kafkas等[7]为传染病及传染机制研究提供支持,提出一种利用来自本体的背景知识和统计方法来提取病原体和疾病之间的关联的方法,并将关联后的数据整合为一个公开数据库,供相关学者使用;袁柳等[8]提出一种先建立关联数据集的模式级链接,再进行关联规则挖掘的方法,同时给出了基于Hadoop的大规模关联数据集采用资源描述框架(resource description framework,RDF)数据集上关联规则挖掘的实现方案;Yang[9]提出物流金融本体,并对风险隐患数据库进行关联分析获得物流金融风险事件与风险源的关联规则,依据关联规则对相关风险源逐个进行筛选和控制,有助于物流金融的健康发展。

针对网络设备脆弱性分析与预测,本文提出基于本体的网络设备脆弱性知识库构建方法。网络设备脆弱性知识库构建包括网络设备脆弱性本体的构建、网络设备脆弱性数据库构建及网络设备和脆弱性关联规则挖掘。

1 构建网络设备脆弱性本体

网络设备脆弱性本体的构建分为定义脆弱性类别及层次体系、定义脆弱性的属性和设计脆弱性本体的存储。

1.1 定义脆弱性类别及层次体系

美国非盈利性组织MITRE创建并维护的通用缺陷列表(common weakness enumeration,CWE)是通用软件和硬件缺陷类型列表,具有脆弱性词典的性质。美国国家脆弱性数据库(national vulnerability database,NVD)及通用脆弱性披露(common vulnerabilities & exposures,CVE)均是采用CWE作为分类机制[10]。中国国家信息安全漏洞库(China national vulnerability database of information security,CNNVD)分类标准也参考了CWE。

本文定义的脆弱性类别及层次体系是基于NVD和CVE所使用的CWE分类标准,结合网络设备脆弱性特征得到。层次更深的脆弱性类别,粒度更精细。定义的脆弱性类别及层次体系共分为3个层级。第2层级的脆弱性类别24种,第3层级42种。其中第2层级的“其他”下的第3层级脆弱性类别是未包含在原CWE分类标准中的。它们是通过分析网络设备脆弱性特征,采用手动方式添加的。例如,“数据处理错误”不属于其他任何脆弱性类别中;但是网络设备中存在此类脆弱性,因此将它归入“其他”类别。脆弱性类别和层次体系如图1所示。

图1 脆弱性类别和层次体系Fig.1 Vulnerability categories and hierarchical systems

1.2 定义脆弱性的属性

CWE中,缺陷类型、性质不同,属性种类及数量也不同。本文选取具有代表性的10种属性,作为脆弱性的属性,见表1。

表1 脆弱性的属性Tab.1 Properties of vulnerability

1.3 脆弱性本体的存储

构建的网络设备脆弱性本体采用关系型数据库SQLite存储,将脆弱性层级关系通过Relation表中SuperCategory字段和SubCategory字段关联在一起。SuperCategory字段存储脆弱性父类别,SubCategory字段存储脆弱性子类别。例如,“注入”作为子类别,则父类别为“脆弱性”;“XSS注入”作为子类别,则父类别为“注入”。父类别、子类别关系如表2所示。

表2 关系表Tab.2 Table of Relation

2 构建网络设备脆弱性数据库

脆弱性数据库构建分为脆弱性数据获取和数据处理2个部分。

2.1 脆弱性数据获取

CNNVD、NVD、CVE等权威数据库没有专门的网络设备分类,无法从大量数据中直接获取网络设备数据,网络设备脆弱性数据获取难度较大。针对上述问题,本文通过开发爬虫工具和人工录入2种方法来获取脆弱性数据,其中自动化的爬虫工具为主要方式,人工录入为辅助方式。

2.1.1 爬虫工具设计

爬取CNNVD、NVD中网络设备脆弱性数据时,每个脆弱性数据都有唯一ID与之对应,因此,可以使用ID作为脆弱性数据唯一性的判断依据。在访问相关脆弱性数据过程中,也只需要使用其脆弱性ID就能访问到相关脆弱性数据。

整个爬取过程中需要维护以下2个搜索队列:待爬队列和已爬队列。初始状态下已爬队列为空,待爬队列中只有种子链接。首先取出待爬队列中的链接并加入到已爬队列,获取链接指向的内容(包含新链接和网络设备脆弱性数据)。然后对从内容中解析出数据,并进行持久化存储,内容中不存在于已爬队列的新链接则添加到待爬队列。直到待爬队列为空时,停止爬取。新链接进入待爬队列前,会先检验其是否存在于已爬队列中,如果不存在,则该新链接进入待爬队列。爬取的结束条件并不是仅是待爬队列为空时结束,当待爬队列中的链接数量达到预先设置的一个最大值的时候也会结束爬取。爬虫算法crawler的具体步骤如下:

Step1:初始化待爬队列和已爬队列,添加种子链接到待爬队列,设置最大链接数量Nmax;

Step2:若待爬队列中链接数量小于Nmax,则遍历待爬队列中所有链接,获取链接指向的内容后,将链接添加到已爬队列。若待爬队列中链接数量大于Nmax,则算法终止;

Step3:解析链接指向的内容,持久化存储解析得到的网络设备脆弱性数据。判断解析得到的新链接是否存在于已爬队列,若存在则丢弃该链接;若不存在则将该链接添加到待爬队列。完成该步骤后,从Step 2开始继续执行,当待爬队列为空时,算法终止。

由于脆弱性数据量非常大,单进程的爬虫无法快速爬取大量数据,因此本文设计并发爬虫工具,实现并发数据爬取功能,提高数据爬取效率。并发爬虫工具采用主从模式,即包含主节点和从节点。主节点负责维护整个爬虫的待爬队列以及任务分配工作,从节点负责接受主节点委派任务。每个从节点都需要维护2个队列:一个是任务队列,存放主节点分配的链接;另一个是新链接队列,存放爬取获得的链接。从节点的工作方式与crawler算法描述类似,但当从节点完成了其任务队列后会将其新链接队列合并到主节点的待爬队列。同时,主节点继续将待爬队列的链接委派到各个从节点,由从节点继续爬取新数据。并发爬虫算法concurrent crawler具体步骤如下。

Step1:设置单个进程分配的链接数N,并发线程数M。主节点线程初始化待爬队列和已爬队列,添加种子链接到待爬队列。每个从节点初始化各自的任务队列和新链接队列。设置最大链接数量Nmax;

Step2:若待爬队列中链接数量大于Nmax,则算法终止;反之则主节点从待爬队列取出M×N个链接,分配给M个从节点,每个从节点被分配N个链接。从节点接收主节点分配的链接,将链接添加到任务队列;

Step3:从节点遍历其任务队列中所有链接,并获取链接指向的内容,然后将链接发送给主节点,主节点将链接添加到已爬队列;

Step4:从节点解析链接指向的内容,持久化存储解析得到的网络设备脆弱性数据。解析得到的新链接被添加到其新链接队列,从节点将新链接队列发送给主节点;

Step5:主节点接收从节点发送来的新链接队列,然后遍历新链接队列,判断每条新链接是否存在于已爬队列,若不存在则将该链接添加到待爬队列,存在则丢弃。完成该步骤后,从Step 2开始继续执行,当待爬队列为空时,算法终止。

2.1.2 人工录入

人工录入用于扩充设备脆弱性数据库。为使脆弱性数据库中的数据尽可能完整丰富,需要从CNVD、CVE等权威数据库以及第三方脆弱性数据库检索网络设备脆弱性数据,人工录入脆弱性数据库。

2.2 数据处理

数据处理的方法分为以下2种:补全数据、删除数据。

通过2.1节中的方法得到了脆弱性数据,但部分数据的脆弱性类别属性采用CNNVD分类标准,与本文所使用的标准不同,因此,无法直接将脆弱性数据与本文定义的脆弱性类别及层次体系关联起来。针对该问题,需要使用补全数据的方法来处理数据。初步得到的脆弱性数据包含CVE编号,在NVD中检索CVE编号可以得到脆弱性数据对应的CWE编号,就能与具体的脆弱性类别对应起来,从而将脆弱性数据与建立的脆弱性类别及层次体系关联起来。

因为重复数据只需要保留一条,而缺少关键属性的数据无法进行关联规则挖掘,所以处理重复数据和缺少CVE编号、受影响设备等关键属性的数据时,采用删除数据的方法来处理数据。数据处理完成后,共得到数据743条。网络设备脆弱性数据库如图2所示。

3 基于本体的关联规则挖掘

Apriori算法是一种具有良好性能的经典关联规则挖掘算法[11],挖掘数据潜在规律对于决策制定具有重要参考价值[12]。

3.1 Apriori算法不足

Apriori算法有7个主要实现步骤[13]:扫描、计数、比较、产生频繁项集、连接、剪枝、产生强关联规则[14]。本文构建的脆弱性数据库包含大量无粒度、无层级的数据,但网络设备脆弱性存在概念上的层级关系。Apriori算法通过迭代获取频繁项集,并过滤掉不满足最小支持度的项集。上述2种原因会造成关联分析时的信息丢失,可能会造成潜在的关联规则无法被发掘[15]。例如,分析某一型号网络设备上“注入”与“内存范围内的操作不恰当”之间的关系,而脆弱性数据库中仅存在 “注入”“典型缓冲区溢出”“越界写入”等脆弱性数据。参照图1可知,“注入”属于第2层脆弱性类别,为第2层脆弱性“内存范围内的操作不恰当”的子类别。“典型缓冲区溢出”和“越界写入”属于第3层脆弱性类别。由于脆弱性类别的支持度不够,因此可能挖掘不到“注入”与“内存范围内的操作不恰当”之间的关联关系。

3.2 基于本体的关联规则挖掘

由于关联规则挖掘时存在Apriori算法的不足,因此本文提出基于网络设备脆弱性本体的关联规则挖掘方法。通过引入脆弱性领域语义知识,在数据挖掘的数据预处理阶段,基于网络设备脆弱性本体,在多层泛化的基础上进行挖掘,即将数据库中低层级的脆弱性数据提升为高层级的脆弱性数据,从而提高项集支持度,进而得到更多有意义的潜在关联规则。

具体实现时,需在挖掘关联规则前,遍历网络设备脆弱性数据库中的所有数据,筛选出所有脆弱性类别是第3层的数据。通过网络设备脆弱性本体,将这些位于第3层脆弱性类别的数据提升为其对应的第2层脆弱性类别。如数据库中存在一条CVE编号为CVE-2019-10892的数据,显示网络设备d-link DIR-806存在CWE-119类别的脆弱性,通过表1可以得出CWE-119为“典型缓冲区溢出”。通过图1可知其属于第3层脆弱性类别,根据表2可得出其父类别为“内存范围内的操作不恰当”,因此可将“典型缓冲区溢出”更改为其第2层脆弱性类别,即“内存范围内的操作不恰当”,从而提高了“内存范围内的操作不恰当”的支持度,最后就可能出现与其有关的关联规则。

4 实验与结果分析

实验以网络设备脆弱性数据库为数据源,基于网络设备脆弱性本体进行网络设备和脆弱性关联规则挖掘,包含网络设备关联规则挖掘和脆弱性关联规则挖掘2个实验。

2个实验的结果对比指标均使用xsup、xsup′、yconf、yconf′、xsup_amp、yconf_amp。xsup表示未基于本体挖掘的项集支持度,xsup′表示基于本体挖掘的项集支持度;yconf表示未基于本体挖掘的规则置信度,yconf′表示基于本体挖掘的规则置信度;xsup_amp表示基于本体挖掘的项集支持度相比未基于本体挖掘的项集支持度增幅,yconf_amp表示基于本体挖掘的规则置信度相比未基于本体挖掘的规则置信度增幅。

4.1 实验数据描述

网络设备脆弱性数据库数据来源:通过爬虫工具爬取CNNVD、NVD中属于网络设备的脆弱性数据;人工录入其他脆弱性数据库(CNVD等)中属于网络设备的脆弱性数据。数据的提交时间范围为2001年9月至2020年8月,数据总量为743条。网络设备数据库中数据详细描述如下。

根据设备厂商统计脆弱性数据。Huawei 57条、D-Link 440条、Tenda 79条、TP-Link 168条、ZTE 10条、Mercury 10条、Mi 12条。由于一条脆弱性数据可能涉及到多个厂商的设备,因此各厂商设备脆弱性数据的简单相加,不等于数据库中脆弱性数据总量。根据脆弱性类别统计脆弱性数据。详细脆弱性类别统计如图3所示。

图3 脆弱性类别统计Fig.3 Vulnerability category statistics

注入(CWE-74)4条、命令注入(CWE-77)33条、操作系统命令注入(CWE-78)80条、XSS注入(CWE-79)70条、SQL注入(CWE-89) 8条、XML注入(CWE-91)2条、代码注入(CWE-94)3条;输入验证不正确(CWE-20)60条;典型缓冲区溢出(CWE-119)70条、没有检查输入大小的缓冲区复制(CWE-120)11条、越界写入(CWE-787)9条;信息暴露(CWE-200)35条、在日志中包含敏感信息(CWE-532)2条;身份验证不正确(CWE-287)57条、访问控制不当(CWE-284)9条、授权不当(CWE-285)5条、通过捕获-重放进行身份验证绕过(CWE-294)1条、证书验证不当(CWE-295)4条、缺少关键函数的验证(CWE-306)6条、对过多身份验证尝试的限制不当(CWE-307)2条、凭据保护不足(CWE-522)13条、忘记密码的弱密码恢复机制(CWE-640)1条、使用硬编码凭证(CWE-798)24条;缺少敏感数据的加密(CWE-311)1条、敏感信息的明文存储(CWE-312)2条、敏感信息的明文传输(CWE-319)1条;权限管理不当(CWE-269)4条;使用损坏或有风险的密码算法(CWE-327)1条;伪随机数生成器中种子的错误使用(CWE-331)1条、使用加密伪随机数生成器(CWE-338)2条;密码签名的不正确验证(CWE-347)1条、跨站请求伪造(CWE-352)41条;有效生存期后缺少资源释放(CWE-772)2条;HTTP请求走私(CWE-444)1条;会话固定(CWE-384)2条、服务端请求伪造(CWE-918)2条、对已渲染的UI层或框架的限制不当(CWE-1021)1条;不安全的默认资源初始化(CWE-1188)3条;不受限制地上传危险类型文件(CWE-434)3条;路径遍历(CWE-22)24条;关键资源的错误权限分配(CWE-732)2条、不正确的默认权限(CWE-276)3条;空指针解除引用(CWE-476)1条;加密强度不足(CWE-326)5条;无限循环(CWE-835)1条;缺少授权(CWE-862)2条;错误的授权(CWE-863)错误的授权3条;其他(CWE-other)40条、数据处理错误(CWE-19)2条、凭证管理错误(CWE-225)13条、特权及访问控制(CWE-264)20条、密码问题(CWE-310)3条、密钥管理错误(CWE-320)1条、资源管理错误(CWE-399)6条、不正确比较(CWE-697)2条;缺乏脆弱性分类信息(CWE-noinfo)38条。

4.2 网络设备关联规则挖掘

本实验创建网络设备关联分析工程,根据创建的网络设备脆弱性数据库挖掘同一脆弱性类别出现在不同网络设备上的关系。即如果网络设备X上出现A类脆弱性,那么网络设备Y上出现A类脆弱性的概率。基于本体的关联规则将脆弱性类别提升至第2层,然后创建挖掘结构,进行关联分析。

实验设置最小支持度为0.11(xmin= 0.11),最小置信度为0.6(ymin=0.6)。表3、4分别列出了实验结果。

表3 网络设备项集支持度对比Tab.3 Comparison of network device itemsets support

表4 网络设备关联规则置信度对比Tab.4 Comparison of network device association rules confidence

表3、4结果表明,基于本体的挖掘对网络设备项集支持度、关联规则置信度有明显提升,同时出现了新增的项集,如表3中项集1。由于新的项集的出现,挖掘出了新的关联规则,如表4中规则1。该规则表明TP-LINK TL-WR742N和TP-LINK TL-WR842N这2个设备如果同时存在某一类别的脆弱性,那么Mercury-MAC1200R存在该类别脆弱性的概率为85.7%。针对新出现的规则1,对其进行验证。在网络设备脆弱性数据库中检索TP-LINK TL-WR742N和TP-LINK TL-WR842N这2种网络设备,发现它们存在“XSS注入”,根据关联规则预测,Mercury-MAC1200R有85.7%的概率存在该脆弱性类别。经过测试,发现在该设备配置网页内多个文本框存在“XSS注入”。

总体而言,使用网络设备脆弱性本体后,产生了新项集52项、新关联规则31条。由此可见,使用本体后,能够挖掘出更多潜在网络设备关联规则,它们对不同网络设备的同类别脆弱性分析和预测具有指导作用。

4.3 脆弱性关联规则挖掘

本实验创建脆弱性关联分析工程,同样使用创建的网络设备脆弱性数据库作为关联规则挖掘的数据集,挖掘同一网络设备出现不同脆弱性的关系,即如果网络设备X上出现A类脆弱性,那么出现B类脆弱性的概率。基于本体的关联规则将脆弱性类别提升至第2层,然后创建挖掘结构,进行关联分析。

实验设置的最小支持度为0.02(xmin=0.02),最小置信度为0.6(ymin=0.6)。表5、6分别列出了实验结果。

表5 脆弱性项集支持度对比Tab.5 Comparison of vulnerability itemsets support

表6 脆弱性关联规则置信度对比Tab.6 Comparison of vulnerability association rules confidence

表5、6结果表明,基于本体的挖掘对脆弱性项集支持度、关联规则置信度有明显提升,同时也出现了新增的项集,如表5中项集4。观察表6可以发现,由于新的项集的出现,因此挖掘出了新的关联规则,如表6中规则4。该规则表明如果某网络设备存在“内存缓冲范围内操作不恰当”和“信息暴露”,那么该网络设备存在“注入”的概率为72.7%。针对置信度最高的规则3,对其进行验证。在设备脆弱性数据库检索同时存在“身份验证不正确”和“加密强度不足”的网络设备,找到D-Link DIR-816。根据关联规则3,该设备存在“数据真实性验证不足”的概率为87.5%。经过测试,发现该设备存在“跨站请求伪造”,该脆弱性类别属于“数据真实性验证不足”的子类别。

总体而言,使用网络设备脆弱性本体后,产生了新项集53项,新关联规则45条。由此可见,使用本体后,能够挖掘出更多潜在脆弱性关联规则,它们对同种网络设备的不同类别脆弱性分析和预测具有指导作用。

5 结论

本文针对网络设备脆弱性分析与预测,提出基于本体的设备脆弱性知识库构建方法,该方法包括建立网络设备脆弱性本体、构建网络设备脆弱性数据库及基于本体的网络设备和脆弱性关联分析。构建网络设备脆弱性时,通过设计开发并发爬虫工具,解决数据量大时,传统爬虫工具效率低下的问题。关联规则挖掘时,采用基于网络设备脆弱性本体的关联规则挖掘,提升项集支持度以得到更多的潜在关联规则,提高挖掘效率。实验证明构建的网络设备脆弱性知识库中包含更多网络设备和脆弱性之间的关联规则,根据关联规则可以对网络设备脆弱性进行有效分析与预测。未来的工作将致力于网络设备脆弱性本体的优化,使其更符合网络设备脆弱性的特征;扩充网络设备脆弱数据库,挖掘出更多关联规则。

猜你喜欢

网络设备脆弱性队列
队列里的小秘密
一种基于C# 的网络设备自动化登录工具的研制
基于多队列切换的SDN拥塞控制*
在队列里
丰田加速驶入自动驾驶队列
煤矿电网脆弱性评估
杀毒软件中指令虚拟机的脆弱性分析
基于攻击图的工控系统脆弱性量化方法
数据中心唯“快”不破
基于电流介数的电力系统脆弱性评估