1. 程式人生 > 其它 >DeepWeak: Reasoning Common Software Weaknesses via Knowledge Graph Embedding

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%。