DeepWeak: Reasoning Common Software Weaknesses via Knowledge Graph Embedding
DeepWeak: 通过知识图嵌入来推理常见的软件弱点
一、摘要
常见的软件弱点,如不正确的输入验证、整数溢出,会直接或间接地损害系统安全,造成不利影响,如拒绝服务、执行未经授权的代码。公共缺陷枚举(Common Weakness Enumeration, CWE)对常见软件缺陷进行了一个标准的列表和分类。尽管CWE包含了关于软件弱点的丰富信息,包括文本描述、常见序列和软件弱点之间的关系,但当前的数据表示,即超链接文档,并不支持对软件弱点的高级推理任务,如缺失关系的预测和ces的共同后果。这种推理任务对于管理和分析大量常见软件弱点及其关系非常关键。
本文提出将常见的软件弱点及其关系表示为知识图,并开发了一种基于翻译的、包含描述的知识表示学习方法,将知识图中的软件弱点及其关系嵌入到语义向量空间中。软件弱点的向量表示(即,嵌入)及其关系可以用于知识获取和推理。我们进行了大量的实验来评估软件弱点和关系嵌入在三个推理任务中的性能,包括CWE链接预测、CWE三分类和常见后果预测。我们的知识图嵌入方法优于其他基于描述和/或结构的表示学习方法。
二、文章贡献
1. 我们首先研究了软件常见弱点的知识图表示,以及知识图上的推理任务。
2. 我们提出了一种知识图嵌入方法,将cwe的结构知识和文本知识嵌入到向量表示中。
3. 我们进行了广泛的实验来评估知识图嵌入在推理 CWE 的关系和常见后果方面的有效性。
三、超参数设置
1. 训练迭代次数(epochs)
为了在损失函数的值和时间成本之间找到平衡,我们对训练迭代的数量进行了调整,每次增加10个增量,范围从1到200。
2. 每个迭代轮次的batch size
在每次迭代中,我们根据Batch Size将训练数据分成几个批,然后在每个步骤中训练一批。通过实验,在3个常用值(32、64、128)范围内找到性能较好的批量大小。根据实验结果,将批处理大小设置为128可以在验证数据集中获得最高的Hits@1%。
3. Margin Size
Margin是基于Margin的损失函数中的一个重要参数,它极大地影响了知识图嵌入的性能。由于Margin是非负的,我们使用三个值(即 2.0、5.0、8.0)进行实验,以找到适合我们方法的Margin大小。根据实验结果,将Margin设置为 5.0 以实现最佳性能。
4. 词嵌入的维度
词嵌入用于提取词在其维度上的语义和句法特征。因此,词嵌入的维度是影响我们方法性能的另一个重要参数。我们使用三个值(即 32、64、128)进行实验,以在 CWE 文本数据语料库上优化此参数。实验结果显示 64 维词嵌入在 Hits@1% 中获得了最好的分数。
四、 连接预测结果
与三种基本方法相比,我们的 TransCat 在两个评估指标中均取得了最佳性能。我们方法的 hits@1(%) 比 Baseline1、Baseline2 和 Baseline3 分别高出 7%、23.0% 和 9.1%。


 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号