原文标题:Knowledge-Driven Cybersecurity intelligence: Software Vulnerability Co-exploitation Behaviour Discover
原文作者:J. Yin, M. Tang, J. Cao, M. You, H. Wang and M. Alazab
原文链接:https://ieeexplore.ieee.org/abstract/document/9832800
发表期刊:IEEE Transactions on Industrial Informatics
笔记作者:JSY2019@安全学术圈
笔记小编:黄诚@安全学术圈
1.背景
软件漏洞是网络安全的主要威胁之一。而软件漏洞共同利用行为(co-exploitation behaviours)是指多个软件漏洞被一个或多个攻击联合利用的行为,这可能会使攻击更复杂、更危险,给网络安全防御和修复带来巨大挑战。
现有的漏洞共同利用行为主要依赖于人工分析或基于规则的匹配,对如今海量和动态变化的网安数据已越来越难以有效解决。
该文章提出了如下内容:
提出了一个多模态的图卷积网络(MAGCN)用于多模态情境下的图知识嵌入和表示,它在一个GNN前向传播过程中分别将每个模态进行可变的信息传递、聚合和更新函数。
设计了一个图知识迁移学习(GKTL)策略处理稀疏性和时间差问题
上两者算法再基于真实世界漏洞库中构建的漏洞知识图谱上达到了软件漏洞共同利用行为的最先进性能。
2.方法实现
MAGCN
MAGCN,扩写为Modality-Aware Graph Convolutional Networks,即多模态感知性的图卷积网络。
MAGCN的核心思想是对于每个模态都分别设置一个通道。对于每个通道,每层的前向传播过程包括边上的信息传递、节点上的信息减少和节点上的嵌入更新。
当MAGCN与其他模块(GCN,GAT等)堆叠时,需要考虑模态融合。作者设计了一个模态融合函数。MAGCN的过程如下图。
(1)问题设定
假设一个同质图G可以被一个三元组(V,A,X)表示:其中V为向量集合,A为邻接矩阵,X=[X1||X2||...||Xm]是拼接后的图特征矩阵。Xi是第i个模态所对应的特征矩阵;|V|为V内的全部节点总数,m为所有的模态数量。对每个处于V内的独立的节点v,第i个模态特征矩阵被表示为x(i,v),即为特征矩阵Xi中的第i个向量。
(2)多模态感知性的节点嵌入
对于一个给定的通道i,每层的前向传播过程包括边上的信息传递、节点上的信息减少和节点上的嵌入更新。
边上的信息传递过程可以被如下的公式(8)-(10)描述。Z是一个线性变换,W是节点上的可训练的参数,h是节点v的第i个模态嵌入,其被公式(8)初始化;在等式(10)中,M是从节点u到v上传递的信息。Φ是应用的信息函数,可以是加减乘除,不做矩阵程度上的变换。
节点上的信息减少可被如下的公式(11)来确定。ρ是信息减少函数,可把N(v)中的信息聚合到最终信息M。广义的信息减少函数可以是加和、最大、最小、均值等。
MAGCN将通过更新函数ψ来聚合M和h更新节点上的嵌入,如等式(12)。h是节点v第i个模态的第l层的嵌入。θ是节点上的共享可训练参数矩阵ψ。
(3)模态融合、模块堆叠和训练
在上面的多模态感知性的节点嵌入,可得到所有模态上的节点嵌入h。它可以被用于堆叠更多的MAGCN层。当MAGCN与其他模块(GCN,GAT等)堆叠时,需要考虑模态融合。如等式(13),f是模态融合函数,h是融合结束的综合嵌入,Λ为f的节点上的共享可训练矩阵。综合嵌入h也可用于后续预测的第一层输入。
节点上的共享可训练模块W、θ和Λ可集合入节点/边/图层面的训练。如,对于节点层面上的训练,预测结果可以被如下的公式(14)计算。运算符Head可以是一个简单的线性变换或者其它更复杂的函数。
损失函数可以是均方误差(MSE)、交叉熵(CE)等,优化算法可以是SGD、Adam等。MAGCN的表现也可直接通过对比预测结果和标签决定。
图知识迁移学习(GKTL)
GKTL通过从原图学到的知识来提高目标图的预测表现。当目标图不完全或是太过稀疏,无法学习到足够知识时,GKTL提供了一个从其他更丰富和完全的图迁移图知识的选项。
以软件漏洞共同利用行为发现为例,拥有“漏洞”实体和“共同利用”关系的子图为目标图。在选择原图时存在如下限制:
原图和目标图都是来源于同一个知识图谱; 原图和目标图都是有相同的节点和不同的关系的同质图。
设目标图为Gt=(V,At,X,rt),V是实体结合,X是对应的实体矩阵;At是邻接矩阵,当Gt不连通时不满秩;rt是关系种类。类似的,原图为Gs=(V,As,X,rs),其中As为邻接矩阵,rs为关系种类。
原图和目标图是从同一个知识图谱中抽取,其分享同样的V和X,但是关系不同。首先,源图用任意的GNN和一个自监督的连接预测任务来学习节点嵌入H(s,V)。然后,目标图迁移已学习的H(s,V),作为自己的嵌入。
(1)原图:自监督节点嵌入
对Gs=(V,As,X,rs),将该图输入一个基于GNN的模型,做一个边层面的连接预测,来学习图的节点嵌入。GNN模型可包含一或多个GNN层,如GCN、GraphSAGE、GAT或MAGCN。输出即为H(s,V),对于V中的每个节点v,其节点嵌入h(s,v)即可直接通过V中的序号获得。所以,节点u到节点v的连接预测结果可被如下的公式(18)决定,其中Head可以是任意的边映射函数。
训练时,随机将原图分为训练集和验证集,并作为正例,然后对一些不存在的边进行随机采样作为负例。最后用交叉熵作为损失函数,超参数作为验证集上的优化。
GKTL可以处理目标图的稀疏问题,也可通过有意选择(deliberately selecting)原图来处理时间差问题。
(2)目标图:图知识迁移学习
目标图直接将原图学习好的节点嵌入参数迁移。这是因为实体都来自同一个知识图谱的同一个实体集合。
3.实验:软件漏洞共同利用行为发现
数据集介绍该文章所搭建的知识图谱为从CVE Details、NVD、ExploitDB中收集的1995-2021年的漏洞和漏洞利用信息,KG存储于Neo4j中。
对于所有“漏洞”实体,介入了两个模态的特征。一个是文字性模态特征,包含漏洞发布时安全专家做出的介绍和评估。使用BERT预训练模型将这些文字做嵌入,先扩充至768维,再采用主成分分析降为20维。另一个是表格化模态(tabular modality),包括8个数字特征、10个布尔值特征和16个种类特征。
根据数据分布,5349个软件漏洞共同利用行为事件发生在2015前,1531个发生于2015后。该文章把前者作为训练集,后者作为测试集。负样本从实体集中随机获取。
作者对提出的两种方法做了实验。首先是MAGCN对于软件漏洞共同利用行为发现的表现(见下图)
然后是GKTL对于软件漏洞共同利用行为发现的表现影响。
4.讨论
MAGCN是如何解决多模态问题的
GNN通过拼接不同的模态,然后将其当作同样的模态来送入GNN训练;MAGCN通过把不同的模态送入不同通道,然后对每个模态选择最合适的函数。然而,MAGCN的一个局限性就是需要做额外的选择这些函数的工作。可将这些函数作为超参数,以进行 网格搜索等。
GKTL是如何解决稀疏问题和时间差问题的
GKTL通过转移原图的嵌入来解决稀疏问题,而原图的稠密程度要高于目标图。
GKTL通过将具有相同可用时间的信息提取到同一子图中来解决时间差问题。如先前的图谱,漏洞“影响”产品和漏洞“协同影响”产品可在漏洞发布时就可获取;而漏洞利用代码“利用”漏洞和漏洞利用代码“协同利用”漏洞的关系可能在几月甚至几年后才有。所以,一个相同的漏洞中存在一个时间差。GKTL通过提取和学习时效性强的子图来处理该问题。
作者未来会研究这两个方法的在线学习,以用于处理现实情况,并且会在更多的应用情景来验证有效性。
安全学术圈招募队友-ing
有兴趣加入学术圈的请联系 secdr#qq.com