2. 中国移动通信集团有限公司, 信息安全管理与运行中心, 北京 100053
2. Information Security Center, China Mobile Group Co., Ltd., Beijing 100053, China
近年来,越来越多的个人、企业、政府依赖于信息技术和网络空间所提供的设施和服务。然而,随着大量新漏洞的不断出现,信息与计算机资产受到的威胁也在不断增加[1]。在软件产品的设计、维护和更新中,维护人员需要耗费大量的经济和时间成本去搜寻、识别、预防或修补各种类型的漏洞。
面对不断扩大的漏洞规模,软件产品的维护人员和漏洞爱好者们越来越难以发现最感兴趣或最需要关注的漏洞信息。在海量漏洞数据面前,推荐算法[2]可以通过提供个性化的建议来协助高效地获取最有价值的漏洞信息,从而帮助产品维护人员节约时间、减少工作量,更全面、细致地考虑安全问题。
然而还没有研究直接把漏洞本身作为推荐的项目,目前与漏洞相关的推荐算法主要集中于推荐漏洞的评分、修补方案和关联特征等等。
Linus等[3]结合了基于领域、知识和内容的推荐算法,设计了一个根据用户的兴趣选择和行为学习进行漏洞评分的推荐系统。Yang等[4]提出了一个漏洞安全机制的推荐系统,该系统考虑了漏洞严重性分数、操作系统、安全机制的防御等级和兼容性等因素,并设计了计算公式来对不同的操作系统进行推荐。Franco等[5]设计了一个Mentor系统用于给客户推荐攻击保护服务,该系统从客户处收集威胁或攻击发生时的元数据进行分析,结合客户的预算、防护效果等需求进行推荐和匹配。Nembhard等[6]设计了基于知识的推荐系统,采用了文本挖掘技术分析用户代码中的潜在漏洞,并提供修补方案的推荐。Nadeem等[7]根据技术开发人员代码中的漏洞信息,采用词频—逆文本频率(term frequency-inverse document frequency,TF-IDF)技术对知识库中漏洞方面的文章进行处理,搜寻最相关的漏洞文章推荐给技术开发人员参考。
目前与漏洞相关的推荐系统普遍存在分析角度片面、实现方法复杂、专业性强和数据私密性强等问题。首先,大多数的研究方案仅仅关注漏洞代码与补丁方面,忽略了漏洞本身的特征;其次,研究人员采取的推荐方法往往针对特定领域,不仅实现复杂度高,而且具有很强的领域知识专业性,普通人难以轻易使用;最后,绝大多数的研究没有采取公开的数据集,而是采取企业或客户的私密数据,普适性低,应用范围窄。
本文与之前漏洞相关推荐算法研究不同,选择将漏洞本身直接作为推荐的“商品”,从美国国家漏洞数据库(national vulnerability database,NVD)、微软官网、看雪论坛等公开数据库和网站收集用户与漏洞的交互信息,采取简捷而高效的推荐算法进行漏洞的个性化推荐,具有较好的普适性,是漏洞推荐领域的一次新的尝试。
协同过滤推荐算法[8-13]作为经典的推荐算法,在书籍[14]、电影[15]和电子商务推荐[16]等领域应用广泛。相比这些领域的用户—项目交互矩阵,由于漏洞本身的产生环境具有特定性,即很多软件产品与漏洞的联系是独立的,用户—漏洞交互矩阵具有更高稀疏性,会使得协同过滤算法的推荐效果和用户满意度急速下降。
本文引入基于内容的推荐算法,并结合之前对于漏洞相似性计算的研究[17],更全面严谨地衡量漏洞之间的联系,解决了协同过滤推荐算法的交互矩阵高稀疏性和冷启动等问题。
本文提出的推荐算法适用于多种用户场景。将各类软件产品的开发人员、维护人员等负责的各类软件产品设立为产品类用户,将软件产品的漏洞历史记录作为推荐依据;将漏洞爱好者、漏洞挖掘专家等用户独立作为个人类用户,将自身漏洞兴趣和漏洞交互行为作为推荐依据。对于这2类用户,本文所提出的推荐算法可以从各自推荐依据中进行分析和挖掘,从而实现漏洞的Top-N推荐。
1 数据集本文自主收集了数据用于漏洞推荐算法的实践和评估实验,主要包括3部分:产品类用户数据、个人类用户数据和漏洞数据。
1.1 产品类用户数据集产品类用户数据主要包括产品名称、产品类用户id和该产品曾经出现过的漏洞记录集3部分。其中,以各家公司的软件产品名称作为该产品类用户的名称。每个产品类用户所代表的产品都必须有至少1个曾经出现过的漏洞。同时,对所有产品类用户进行编号,形成产品类用户id。
为了生成离线数据集进行推荐算法的实验,本文主要从2个数据来源收集产品类用户信息:
从某些软件产品和公司官网(主要有火狐浏览器、微软公司等)公布的漏洞记录中提取;
从NVD中各个漏洞的通用平台枚举(common platform enumeration,CPE)特征中提取受漏洞影响的产品信息。
为了更精炼地表示产品类用户,将所有CPE特征中的产品信息去除版本号,整理为公司—软件的组合。通过统计,将每一个公司—软件组合作为一个产品类用户,并将该公司—软件组合所有出现过的漏洞标记为该产品类用户曾经出现过的漏洞。
表 1中,漏洞CVE-2018-8781在NVD记录的CPE特征共计11条,分别对应6个公司—软件组合,即6个产品类用户。在这6个产品类用户的历史漏洞记录上,就可以找到CVE-2018-8781的漏洞id。
| CVE-2018-8781的受影响的软件合集(CPE 2.2) | 对应的公司—软件组合 | 产品类用户id |
| cpe: 2.3:o: linux: linux_kernel: : : : : : : : from (including) 3.4 up to (including) 4.15 |
linux: linux_kernel | 8307 |
| cpe: 2.3:o: canonical: ubuntu_linux: 12.04:: : : esm: : : | canonical: ubuntu_linux | 1826 |
| cpe: 2.3:o: canonical: ubuntu_linux: 14.04:: : : lts: : : | ||
| cpe: 2.3:o: canonical: ubuntu_linux: 16.04:: : : lts: : : | ||
| cpe: 2.3:o: canonical: ubuntu_linux: 17.10:: : : : : : | ||
| cpe: 2.3:o: debian: debian_linux: 7.0:: : : : : : | debian: debian_linux | 2 757 |
| cpe: 2.3:o: debian: debian_linux: 8.0:: : : : : : | ||
| cpe: 2.3:o: debian: debian_linux: 9.0:: : : : : : | ||
| cpe: 2.3:o: redhat: enterprise_linux_desktop: 7.0:: : : : : : | redhat: enterprise_linux_desktop | 11 756 |
| cpe: 2.3:o: redhat: enterprise_linux_server: 7.0:: : : : : : | redhat: enterprise_linux_server | 11 772 |
| cpe: 2.3:o: redhat: enterprise_linux_workstation: 7.0:: : : : : : | redhat: enterprise_linux_workstation | 11 781 |
为了控制数据量,每个漏洞仅考虑前15项CPE特征记录。同时,对于每个产品类用户最多保留发现时间最近的255个漏洞记录。通过收集与整理,收集到产品类用户共计14 856个,漏洞记录共75 093条。
1.2 个人类用户数据集个人类用户数据集主要包括用户个人信息、漏洞兴趣标签和用户漏洞交互记录3部分。对于初始用户,需要登记其用户名、邮箱等基础信息,同时每个用户需要选择感兴趣的漏洞类型标签和漏洞产品标签,这2种标签统称为漏洞兴趣标签。漏洞兴趣标签作为个人用户兴趣喜好的基础,是解决冷启动问题的方法之一。
对于每位用户,记录其与漏洞之间的交互记录,包括发帖、评论、打赏等。为了收集真实的互动记录信息进行实验,本文对微博、看雪论坛等社交平台进行搜索和爬虫,统计带有CVE编号的漏洞的相关博文和发帖,并收集每一个发布用户的发帖时间、评论、打赏记录。
通过整理和统计,总计统计了1 054名个人类用户,他们共与208个漏洞产生了1 836条交互记录。
1.3 漏洞数据集漏洞数据集主要收集了2011—2018年间NVD、国家信息漏洞安全共享平台(China national vulnerability database,CNVD)和国家信息安全漏洞库(China national vulnerability database of information security,CNNVD)中的45 966个漏洞,每一个漏洞都包括漏洞id和特征属性2部分信息,其中漏洞id是按照其CVE-id的降序生成的。
漏洞的特征属性与文[17]中的漏洞相似性研究采取的六大类特征相同,分别为漏洞类型、CVSSv2基本指标、CVSSv2基本评分、漏洞严重性评分、受漏洞影响的产品集合(CPE)和漏洞中文描述文本。
2 协同过滤推荐算法在漏洞推荐中的应用 2.1 基于用户的协同过滤算法协同过滤推荐算法是根据用户—项目交互矩阵,计算用户(或项目)的相似度,利用与目标用户(或项目)相似性较高的用户对其他项目(或用户)的交互来进行预测和推荐[18-21]。根据相似性计算对象的不同,可分为基于用户和基于项目的协同过滤推荐算法。
基于用户的协同过滤推荐算法更适合用户数量少于项目数量的情形,可以减少计算量、提升推荐效率[22]。本文收集的用户数量少于漏洞数量,因此选用该算法。
仿照传统用于影视、电子商务的推荐算法,在漏洞推荐场景下,基于用户的协同过滤推荐算法根据用户—漏洞交互矩阵,寻找与目标用户有相似漏洞兴趣的用户集,将他们感兴趣的漏洞推荐给目标用户。针对产品类用户,用户—漏洞交互矩阵可以使用用户漏洞记录集进行填充;针对个人类用户,则可以直接根据用户漏洞交互行为,建立用户—漏洞交互矩阵。
无论是产品类用户还是个人类用户,基于用户的协同过滤算法步骤一致,区别在于对用户兴趣数据的处理,具体实现分为4步:
1) 填充用户—漏洞交互矩阵,生成用户评分表和漏洞id表。
对于产品类用户,以用户出现过某个漏洞用1表示,未出现过用0表示,填充进用户—漏洞交互矩阵,并将其设定为用户评分表。同时,从漏洞数据库中提取漏洞id表。
对于个人类用户,提取其与漏洞的交互行为数据并进行量化处理。针对每个用户—漏洞组合,将每次发帖计5分、评论计1分、打赏以金额的3倍计分,分数累计最高10分,并将总分填入用户—漏洞交互矩阵的对应位置。个人用户的用户评分表是将用户—漏洞交互矩阵进行归一化处理之后得到的。个人类用户与产品类用户采取一样的漏洞id表。
2) 数据初始化。
将用户评分表数据整理为用户字典和项目字典。
用户字典表示了每个用户的所有评分不为0的漏洞的评分集合。个人类用户的评分范围是0—1, 则其用户字典具体形式为:{‘用户1’: [(漏洞1, 0.5), (漏洞3, 0.7)…], ‘用户2’: [(漏洞2, 1), (漏洞9, 0.3)…] …};产品类用户的评分为0或1,则其用户字典具体形式为{‘用户1’: [(漏洞6, 1), (漏洞14, 1)…], ‘用户2’: [(漏洞9, 1), (漏洞11, 1)…] …}
项目字典表示了对每个漏洞有非0评分的所有用户的集合,具体形式为:{‘漏洞1’:[用户1, 用户3, …], ‘漏洞2’:[用户2, 用户7, …] …}。
3) 计算所有用户与目标用户的相似度。
首先根据项目字典找出所有出现漏洞与目标用户出现的漏洞有交集的用户;
其次计算交集用户与目标用户的相似度。具体计算方式为:根据用户字典获取交集用户与目标用户的漏洞并集,表示格式为:{‘漏洞id’, [交集用户评分, 目标用户评分] },没有评分则记为0分。
据此并集,计算目标用户与交集用户的余弦相似度:
| $ \operatorname{COSsim}(a, b)=\frac{\sum\limits_{w_i \in W_{a b}} r_{a i} r_{b i}}{\sqrt{\sum\limits_{w_i \in W_{a b}} r_{a i}^2} \sqrt{\sum\limits_{w_i \in W_{a b}} r_{b i}^2}} . $ | (1) |
其中:COSsim(a, b)表示用户a和b之间的相似度,Wab表示用户a和b的漏洞并集,rai和rbi分别表示用户a和b对漏洞i的评分。
余弦相似度相比于Euclid距离等计算绝对差异的相似度公式,更注重方向上的差异,对绝对数值不敏感,更多地用于用户对内容评分的场景,用以评估兴趣的相似度。余弦相似度越大,说明二者越相似。在本文的实现方法中,评分都是由各种交互行为直接定义的,不存在不同用户主观评分的差异性,所以不需要进行差异性的去除。
4) 根据用户相似度生成推荐列表。
交集用户和目标用户的相似度被赋予到交集用户的每个喜好漏洞上,并将每个漏洞获取到的相似度叠加后的结果作为推荐值。所有漏洞以推荐度降序生成推荐列表。基于用户的协同过滤推荐算法会将推荐列表中推荐度最高的10个漏洞推荐给用户。
2.2 交互矩阵稀疏性及协同过滤推荐算法的缺陷在漏洞推荐中,基于用户的协同过滤推荐算法不一定能够成功推荐出足够数量的漏洞结果。这是由于协同过滤推荐算法是在用户对于漏洞评价的交集中进行计算的。如果某个漏洞只有极少数的用户对其进行评价,且这些用户对于其他漏洞的评价也很少时,算法就难以捕捉到这些用户的兴趣取向。
这种情况往往会发生在用户兴趣爱好独特、用户互动数据稀少等情形下,而这些情况正是用户—漏洞交互的突出特点,尤其是很多漏洞只发生在特定的软件环境下,导致用户与漏洞的互动相对独立,缺少交叉性,造成了交互矩阵的高稀疏性。
表 2记录了一些常用于推荐算法模型训练的经典数据集的交互矩阵稀疏度。该稀疏度是用户—项目交互矩阵中不为0的交互记录数量占矩阵元素总数的比例,矩阵元素总数可由矩阵行数(用户数量)乘以列数(项目数量)计算得到。表 2显示,本文所采用的数据集交互矩阵稀疏度是最小的,几乎仅有Yelp数据集的十分之一。
| 数据集名称 | 用户数量 | 项目数量 | 交互记录数量 | 交互矩阵稀疏度 |
| MovieLens_latest | 610 | 193 609 | 100 836 | 8.54×10-4 |
| Yelp | 31 667 | 38 047 | 1 237 259 | 1.03×10-3 |
| Amazon_book | 52 642 | 91 598 | 2 380 729 | 4.94×10-4 |
| Gowalla | 29 857 | 40 980 | 810 127 | 6.62×10-4 |
| 本文所采用的数据集 | 15 910 | 45 966 | 76 929 | 1.05×10-4 |
3 基于相似性的多用户漏洞推荐算法
协同过滤推荐算法所不可避免的用户—漏洞交互矩阵高稀疏性难题,可以通过基于内容的推荐算法解决。基于内容的推荐算法主要是根据推荐项目的特征发现其本身相关性,参考用户以往的兴趣,为用户推荐相似的项目[23-24],而这种方法受交互矩阵稀疏性的影响较小。本文将文[17]中漏洞相似性计算的方法融入基于内容的推荐算法,强调漏洞本身特征之间的相关性,最终形成基于相似性的多用户漏洞推荐算法。
3.1 漏洞相似性计算把漏洞作为推荐项目进行基于内容的推荐算法,需要有合适的方法衡量漏洞之间的相似关系。
在文[17]中,针对漏洞的严重性、类型等13项特征属性和描述文本,选择了不同的相似度公式和自然语言处理(natural language processing,NLP)词嵌入方法,设计了完整的漏洞相似性计算方法,并实验评估了该方法的合理性。
3.2 基于漏洞相似性的内容推荐算法根据文[17]中的漏洞相似性算法,对目标用户出现过或交互过的每一个漏洞,与漏洞数据库中的所有漏洞分别进行相似度计算,得到最相似的10个漏洞和对应的相似度,并以列表形式进行汇总。对于列表中重复出现的相似漏洞,以其所获得的所有相似度的叠加值作为其最终相似度。基于内容的推荐算法会将相似漏洞列表中相似度最高的10个漏洞推荐给目标用户。
对于新的个人类用户,算法由于缺少具体的漏洞交互记录,无法直接进行内容推荐,从而产生冷启动问题。为此本文设计了个人用户的漏洞兴趣标签选择,以标签的匹配推荐作为内容推荐的结果,从而解决冷启动问题。
4 推荐算法评估本节以基于用户的协同过滤推荐算法在漏洞推荐中的结果为基准,评估本文提出的基于相似性的多用户漏洞推荐算法的准确性、排序有效性、覆盖率等指标,衡量其使用效果。
4.1 评估指标当进行Top-N推荐时,为了衡量推荐结果的准确性,往往在用户实际的漏洞兴趣和推荐结果中采用准确率(Precision)、召回率(Recall)和F1分数(F1-score)进行度量。
| $ \text { Precision }=\frac{\text { Count }}{\operatorname{Min}(M, N)}, $ | (2) |
| $ \text { Recall }=\frac{\text { Count }}{N}, $ | (3) |
| $ \begin{gathered} \text { F1-score }=\frac{2 \times \text { Precision } \times \text { Recall }}{\text { Precision }+ \text { Recall }} . \end{gathered} $ | (4) |
其中:M指用户真正的漏洞兴趣的数量,而N指每个推荐算法的推荐结果数量,前者是变化的,后者在每次推荐中是固定的;Count是正确推荐的漏洞数量。
为了评估推荐列表的排序有效性,可以采用归一化折损累积增益(normalized discounted cumulative gain,NDCG):
| $\mathrm{NDCG}=\frac{1}{K} \sum\limits_{j=1}^K \frac{\operatorname{rel}(j)}{\mathrm{lb}(j+1)} $ | (5) |
其中:K指推荐列表中的项目数量,j表示其在列表中的位置,rel(j) 指该位置的推荐结果的相关性分数,即该结果与用户真正的兴趣关联程度如何。在本文中,可以通过协同过滤推荐算法的步骤1,提取用户的漏洞评分表中用户对自己喜好的漏洞的评分作为该漏洞的相关性分数,没有评分的漏洞的相关性分数记0。
在NDCG指标的计算中,与用户兴趣有高关联度的结果比一般关联度的结果更影响最终的指标得分。当有高关联度的结果出现在更靠前的位置的时候,NDCG指标会越高,即推荐结果越有效。
除了上述比例,还有覆盖率(Coverage)也常作为推荐算法的评价指标。覆盖率描述了一个推荐算法所有推荐出的结果中包含的项目总数占总项目数量的比例[22, 25]:
| $\text { Coverage }=\frac{\mid U_{u \in U} R(u)}{|I|} \text {. } $ | (6) |
其中:U为推荐算法的用户集合,u为集合U中的用户,R(u)为给用户u的推荐列表,I为项目集合,|·|表示集合中元素的数量。
4.2 推荐算法准确性实验分别取推荐数目为3、5、10个,针对所有产品类用户和个人类用户,分别获取基于用户的协同过滤推荐算法CF和基于相似性的内容推荐算法sim_CB的推荐结果,并计算推荐结果的准确率、召回率和F1分数,如表 3所示。
| 用户类型 | 推荐数目 | 准确率/% | 召回率/% | F1分数 | |||||
| CF | sim_CB | CF | sim_CB | CF | sim_CB | ||||
| 个人类用户 | 3 | 94.05 | 96.05 | 87.66 | 93.41 | 0.894 9 | 0.943 0 | ||
| 5 | 93.98 | 97.56 | 89.04 | 96.81 | 0.904 3 | 0.970 6 | |||
| 10 | 94.45 | 98.92 | 89.89 | 98.78 | 0.911 7 | 0.988 3 | |||
| 产品类用户 | 3 | 38.75 | 98.95 | 34.52 | 90.89 | 0.354 5 | 0.927 4 | ||
| 5 | 38.98 | 98.41 | 36.19 | 93.81 | 0.368 0 | 0.948 6 | |||
| 10 | 39.39 | 98.25 | 37.57 | 96.10 | 0.379 6 | 0.965 7 | |||
表 3中,sim_CB对2类用户的推荐准确性都得到了良好提升,尤其是对产品类用户,F1分数最高提高了0.586 1。原因是对于产品类用户而言,很多漏洞都是产品独有的,没有用户间交互的过程,交互矩阵稀疏度更小,使得CF效果不佳,而sim_CB能很好地解决这个问题。随着推荐数目的上升,sim_CB整体的推荐准确性基本呈现上升趋势。
4.3 推荐算法排序有效性实验取推荐数目为3、5、10个,将所有产品类用户和个人类用户,分别获取CF和sim_CB的推荐结果,并计算推荐结果的NDCG,如表 4所示。
| 用户类型 | 推荐数目 | NDCG | |
| CF | sim_CB | ||
| 个人类用户 | 3 | 0.914 5 | 0.920 6 |
| 5 | 0.923 0 | 0.941 0 | |
| 10 | 0.926 9 | 0.951 1 | |
| 产品类用户 | 3 | 0.351 5 | 0.928 5 |
| 5 | 0.363 0 | 0.951 2 | |
| 10 | 0.371 0 | 0.967 5 | |
表 4中,相比CF,sim_CB的推荐列表顺序更能满足用户的喜好,尤其是对产品类用户,该算法的提升效果更加明显。当推荐数目为10个时,sim_CB的NDCG更高,证明了其排序有效性更佳。
4.4 推荐算法覆盖率实验覆盖率越高的推荐算法可以将越多的项目推荐给用户,而覆盖率过低的推荐算法则说明有很大比例的项目从来没有给用户进行过推荐。如果覆盖率持续过低,则会造成整个算法的项目流行度[22]不平衡,热门的项目越来越热门,冷门的项目越来越无人问津。
在4.2和4.3节实验的基础上,采取表现最佳的10个推荐数目,计算推荐结果的覆盖率指标。图 1展示了原始兴趣数据覆盖率和不同推荐算法结果覆盖率的对比情况。
|
| 图 1 原始兴趣数据与推荐算法结果覆盖率对比图 |
由于产品类用户本身是由漏洞数据集中每个受漏洞影响的产品中提取而来,所以产品类用户原始的漏洞兴趣覆盖率为100%;而个人类用户的数目相对漏洞数据集的数目来说较小,所以个人类用户的原始漏洞兴趣覆盖率较低,只有0.45%。
由图 1可见,sim_CB结果的覆盖率比CF高很多。对于个人类用户来说,sim_CB结果的覆盖率是原始兴趣数据的覆盖率的7.6倍。这一结果显示,sim_CB成功地调动了更多的用户没有交互过的漏洞进行推荐。
5 用户标签与冷启动问题针对冷启动问题,sim_CB特别设置了漏洞兴趣标签选择机制。在新用户注册时,除了用户基本账户信息之外,还需要用户手动选择其感兴趣的3~ 5个漏洞类型标签和1~3个漏洞产品标签。
漏洞类型标签共有48个,与漏洞数据集中最常见的漏洞类型匹配,包括缓冲区溢出、SQL注入、越界读取、访问控制错误等。漏洞产品标签共有62个,代表了NVD库中出现漏洞记录超过100次的不同领域的软件公司、产品或操作系统等。表 5和6分别展示了漏洞类型标签和漏洞产品标签的名称和编号信息。
| 编号 | 类型标签 | 编号 | 类型标签 | 编号 | 类型标签 | 编号 | 类型标签 | |||
| 1 | 配置错误 | 13 | LDAP注入 | 25 | 访问控制错误 | 37 | 任意文件上传 | |||
| 2 | 代码注入 | 14 | XML注入 | 26 | 授权问题 | 38 | HTTP请求走私 | |||
| 3 | 数据处理错误 | 15 | CRLF注入 | 27 | 加密问题 | 39 | 代码问题 | |||
| 4 | 输入验证错误 | 16 | 缓冲区溢出 | 28 | 随机数问题 | 40 | 开放重定向 | |||
| 5 | 路径遍历 | 17 | 越界读取 | 29 | 跨站请求伪造 | 41 | XML外部实体注入 | |||
| 6 | 后置链接 | 18 | 验证问题 | 30 | 竞争条件 | 42 | 会话劫持 | |||
| 7 | 注入 | 19 | 格式化字符串 | 31 | 会话固定 | 43 | 类型混淆漏洞 | |||
| 8 | 命令注入 | 20 | 数字错误 | 32 | 错误处理 | 44 | 越界写入 | |||
| 9 | 操作系统命令注入 | 21 | 信息泄露 | 33 | 资源管理错误 | 45 | 硬编码问题 | |||
| 10 | 跨站脚本 | 22 | 安全特征问题 | 34 | 双重释放 | 46 | 服务端请求伪造 | |||
| 11 | 参数注入 | 23 | 信任管理 | 35 | 内存错误引用 | 47 | HTTP响应拆分 | |||
| 12 | SQL注入 | 24 | 权限许可访问控制 | 36 | 搜索路径问题 | 48 | 其他 |
| 编号 | 产品标签 | 编号 | 产品标签 | 编号 | 产品标签 | 编号 | 产品标签 | |||
| 1 | Microsoft | 17 | Foxitsoftware | 33 | Vmware | 49 | Trendmicro | |||
| 2 | Apple | 18 | Qualcomm | 34 | Ffmpeg | 50 | Tcpdump | |||
| 3 | Oracle | 19 | Siemens | 35 | Symantec | 51 | Asus | |||
| 4 | 20 | Novell | 36 | Openstack | 52 | Openssl | ||||
| 5 | Adobe | 21 | Imagemagick | 37 | Moxa | 53 | Lenovo | |||
| 6 | Ibm | 22 | Tp-link | 38 | Drupal | 54 | Sma | |||
| 7 | Redhat | 23 | Emc | 39 | Irfanview | 55 | Libtiff | |||
| 8 | Linux | 24 | Gnu | 40 | Nvidia | 56 | Mediawiki | |||
| 9 | Mozilla | 25 | Wireshark | 41 | Mcafee | 57 | Owncloud | |||
| 10 | Debian | 26 | Suse | 42 | Intel | 58 | Atlassian | |||
| 11 | Hp | 27 | Juniper | 43 | Fortinet | 59 | Joomla | |||
| 12 | Cisco | 28 | Fedoraproject | 44 | Advantech | 60 | Mysql | |||
| 13 | Canonical | 29 | D-link | 45 | Phpmyadmin | 61 | Wordpress | |||
| 14 | Opensuse | 30 | Php | 46 | Dell | 62 | 其他 | |||
| 15 | Huawei | 31 | Moodle | 47 | Cybozu | |||||
| 16 | Apache | 32 | Sun | 48 | F5 |
漏洞数据库中每个漏洞的对应的漏洞类型只有1个,但是对应的产品可能不止1个,因为漏洞的CPE特征可能会涉及多家公司或产品。为此,赋予每个漏洞1个漏洞类型标签和不少于1个漏洞产品标签。
根据个人类用户选择的漏洞类型和漏洞产品2项标签,可以进行基于漏洞相似性的内容匹配。首先,将漏洞数据库中满足目标用户漏洞类型标签的漏洞一一过滤出来。接着,采取式(7)计算目标用户的漏洞产品标签和漏洞数据库中的每个漏洞产品标签的Jaccard相似度[26]:
| $ \operatorname{Jacsim}(u, v)=\frac{\left|L_u \cap L_v\right|}{\left|L_u \cup L_v\right|} . $ | (7) |
其中:u表示目标用户,Lu表示u选择的漏洞产品标签集合,v表示漏洞数据库中的漏洞,Lv表示v的产品标签集合。
根据相似度找到与该目标用户的漏洞标签需求最相似的10个漏洞并进行推荐。通过该方式可以有效缓解新用户缺少漏洞交互记录的问题,从而解决sim_CB的冷启动问题。
6 结论本文将漏洞作为推荐项目,为多类型用户进行漏洞的推荐,提出了基于相似性的多用户漏洞推荐算法。该算法引入漏洞相似度计算方法,融入基于内容的推荐算法中,强调了漏洞之间的普遍联系,同时结合标签机制,有效解决了基于用户的协同过滤推荐算法的用户—漏洞交互矩阵高稀疏性和冷启动等问题,提升了推荐的准确性和有效性。下一步可以尝试探索用户与漏洞之间的高阶联通性。
| [1] |
DE MOURA DEL ESPOSTE A, CAMPIOLO R, KON F, et al. A collaboration model to recommend network security alerts based on the mixed hybrid approach[EB/OL]. [2022-10-13]. https://www.researchgate.net/publication/305338541
|
| [2] |
SHAH K, SALUNKE A, DONGARE S, et al. Recommender systems: An overview of different approaches to recommendations[C]//2017 International Conference on Innovations in Information, Embedded and Communication Systems. Coimbatore, India: IEEE, 2017: 1-4.
|
| [3] |
KARLSSON L, BIDEN P N, HELL M. A recommender system for user-specific vulnerability scoring[C]//14th International Conference on Risks and Security of Internet and Systems. Hammamet, Tunisia: Springer, 2020: 355-364.
|
| [4] |
YANG M T, WU J Z, WU Y J, et al. Policykeeper: Recommending proper security mechanisms based on the severity of vulnerability considering user experience[C]//7th International Conference on Software Security and Reliability. Gaithersburg, USA: IEEE, 2013: 227-228.
|
| [5] |
FRANCO M F, RODRIGUES B, STILLER B. Mentor: The design and evaluation of a protection services recommender system[C]//15th International Conference on Network and Service Management. Halifax, Canada: IEEE, 2019: 1-7.
|
| [6] |
NEMBHARD F D, CARVALHO M M, ESKRIDGE T C. Towards the application of recommender systems to secure coding[J]. EURASIP Journal on Information Security, 2019, 2019: 9. DOI:10.1186/s13635-019-0092-4 |
| [7] |
NADEEM M, ALLEN E B, WILLIAMS B J. A method for recommending computer-security training for software developers: Leveraging the power of static analysis techniques and vulnerability repositories[C]//12th International Conference on Information Technology-New Generations. Las Vegas, USA: IEEE, 2015: 534-539.
|
| [8] |
黄睿. 基于在线评论的消费者偏好与认知衡量及其在个性化推荐中的应用[D]. 天津: 天津大学, 2019. DOI: 10.27356/d.cnki.gtjdu.2019.002809. HUANG R. Consumer preferences and cognition measurement based on online reviews and the application in personalized recommendations[D]. Tianjin: Tianjin University, 2019. DOI: 10.27356/d.cnki.gtjdu.2019.002809.(inChinese) |
| [9] |
陶永才, 火昊, 石磊, 等. 基于时间因子的个性化新闻混合推荐研究[J]. 小型微型计算机系统, 2018, 39(8): 1794-1798. TAO Y C, HUO H, SHI L, et al. Hybrid news recommendation based on time factor[J]. Journal of Chinese Computer Systems, 2018, 39(8): 1794-1798. (in Chinese) |
| [10] |
李宁. 基于个性化资源推荐的学习平台的研究与设计[D]. 绵阳: 西南科技大学, 2015. LI N. Research and design of the learning platform based on personalized resources recommended[D]. Mianyang: Southwest University of Science and Technology, 2015. (in Chinese) |
| [11] |
苑振霞. 基于迁移学习的知识推荐方法研究[D]. 天津: 天津大学, 2014. YUAN Z X. Research on knowledge recommender method based on transfer learning[D]. Tianjin: Tianjin University, 2014. (in Chinese) |
| [12] |
苗东方. 基于深度神经网络的创业项目推荐系统研究[D]. 成都: 电子科技大学, 2018. MIAO D F. Research on entrepreneurship project recommendation system based on deep neural network[D]. Chengdu: University of Electronic Science and Technology of China, 2018. (in Chinese) |
| [13] |
郑鹏, 王应明, 梁薇. 基于信任和矩阵分解的协同过滤推荐算法[J]. 计算机工程与应用, 2018, 54(13): 34-40. ZHENG P, WANG Y M, LIANG W. Collaborative filtering recommendation algorithm based on trust and matrix factorization[J]. Computer Engineering and Applications, 2018, 54(13): 34-40. (in Chinese) |
| [14] |
张通. 基于图书馆业务数据分析服务的个性化推荐系统设计与实现[D]. 北京: 北京邮电大学, 2013. ZHANG T. The design and realization of personalized recommendation system of the library business data analysis services[D]. Beijing: Beijing University of Posts and Telecommunications, 2013. (in Chinese) |
| [15] |
易黎, 肖青秀, 汤鲲. 基于双层注意力机制的深度学习电影推荐系统[J]. 计算机与现代化, 2018(11): 109-114. YI L, XIAO Q X, TANG K. A deep learning recommendation system of movie based on dual-attention model[J]. Computer And Modernization, 2018(11): 109-114. (in Chinese) |
| [16] |
王东. 基于Hadoop的电子商务推荐系统设计与实现[D]. 西安: 西安工业大学, 2017. WANG D. Design and implementation of recommendation system for e-commerce on hadoop[D]. Xi'an: Xi'an Technological University, 2017. (in Chinese) |
| [17] |
贾凡, 康舒雅, 江为强, 等. 基于NLP及特征融合的漏洞相似性算法评估[J]. 信息网络安全, 2023, 23(1): 18-27. JIA F, KANG S Y, JIANG W Q, et al. Vulnerability similarity algorithm evaluation based on NLP and feature fusion[J]. Netinfo Security, 2023, 23(1): 18-27. (in Chinese) |
| [18] |
董立岩, 王越群, 贺嘉楠, 等. 基于时间衰减的协同过滤推荐算法[J]. 吉林大学学报(工学版), 2017, 47(4): 1268-1272. DONG L Y, WANG Y Q, HE J N, et al. Collaborative filtering recommendation algorithm based on time decay[J]. Journal of Jilin University (Engineering and Technology Edition), 2017, 47(04): 1268-1272. DOI:10.13229/j.cnki.jdxbgxb201704036 (in Chinese) |
| [19] |
李霞, 李守伟. 面向个性化推荐系统的二分网络协同过滤算法研究[J]. 计算机应用研究, 2013, 30(7): 1946-1949. LI X, LI S W. Research on collaborative filtering algorithm of bipartite network oriented to personal recommendation system[J]. Application Research of Computers, 2013, 30(7): 1946-1949. (in Chinese) |
| [20] |
姜信景, 齐小刚, 刘立芳. 个性化信息推荐方法研究[J]. 智能系统学报, 2018, 13(2): 189-195. JIANG X J, QI X G, LIU L F. Research on the recommendation method of personalized information[J]. CAAI Transactions on Intelligent Systems, 2018, 13(2): 189-195. (in Chinese) |
| [21] |
王国霞, 刘贺平. 个性化推荐系统综述[J]. 计算机工程与应用, 2012, 48(7): 66-76. WANG G X, LIU H P. Survey of personalized recommendation system[J]. Computer Engineering and Applications, 2012, 48(7): 66-76. (in Chinese) |
| [22] |
项亮. 推荐系统实践[M]. 北京: 人民邮电出版社, 2012. XIANG L. Recommend system practice[M]. Beijing: Posts & Telecom Press, 2012. (in Chinese) |
| [23] |
李凌, 顾晓梅, 刘子豪. 多子域随机森林在情境感知推荐中的应用研究[J]. 计算机工程与应用, 2020, 56(22): 132-141. LI L, GU X M, LIU Z H. Application research of multi-subdomain random forest in context-aware recommendation[J]. Computer Engineering and Applications, 2020, 56(22): 132-141. (in Chinese) |
| [24] |
刘华玲, 马俊, 张国祥. 基于深度学习的内容推荐算法研究综述[J]. 计算机工程, 2021, 47(07): 1-12. LIU H L, MA J, ZHANG G X. Review of studies on deep learning-based content recommendation algorithms[J]. Computer Engineering, 2021, 47(07): 1-12. DOI:10.19678/j.issn.1000-3428.0060557 (in Chinese) |
| [25] |
李凡. 面向覆盖率的推荐算法研究[D]. 成都: 电子科技大学, 2020. DOI: 10.27005/d.cnki.gdzku.2020.003056. LI F. Study on coverage-oriented recommendation algorithms[D]. Chengdu: University of Electronic Science and Technology of China, 2020. DOI: 10.27005/d.cnki.gdzku.2020.003056.(inChinese) |
| [26] |
刘华玲, 郭渊, 马俊. 协同过滤中相似度算法研究进展[J]. 计算机工程与应用, 2022, 58(13): 27-35. LIU H L, GUO Y, MA J. Research progress of similarity algorithm in collaborative filtering[J]. Computer Engineering and Applications, 2022, 58(13): 27-35. (in Chinese) |


