<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    SEVulDet:一種語義增強的可學習漏洞檢測器

    VSole2022-12-04 20:04:22

    Introduction

    近年來越來越多的工作采用基于深度學習的漏洞識別框架來對漏洞模式進行識別。然而,不能全面地對源碼中的語義進行捕獲或是采用適當的神經網絡設計仍是大多數現有工作存在的問題。在此之上作者提出了SEVulDet,其具備兩個特點:(1)SEVulDet采用了一種路徑敏感的代碼切片方法來提取足夠的路徑語義和控制流邏輯至code gadget;(2)同時在結合多層注意力機制的CNN網絡中插入一層中空間金字塔池化層,使得SEVulDet能夠處理變長的code gadget語義,避免由傳統方法(截斷或填充)所導致的代碼語義缺失。

    Background & Motivation

    Problem

    針對現有深度學習框架中存在的影響漏洞識別主要缺陷——語義缺失,作者采用一個例子對其進行了描述。

    為了更好地描述,作者做了以下的一些定義:

    • Program, statement, token: 程序 由一系列有序的statement組成,即 ,statement由一系列的有序token構成,即, token可以是標識符,常量,運算符,關鍵字等。
    • data-dependence:在程序 中,如果存在兩個語句 , 中的變量標識符token被 使用,則稱 數據依賴于。
    • control-dependence:對于程序 中的兩個語句, 當的結果會影響是否執行時,稱控制依賴于。
    • special token:給定程序 , 且語句 由個special token組成, , 此處的special token指一些特殊的滿足語法特點的記號,如庫函數調用,數組使用,指針使用以及表達式等。
    • code gadget:給定程序 , 且語句 由個special token組成, , code gadget 則是通過這些特殊記號遞歸生成的具有語義信息(存在數據依賴與控制依賴)的復數有序語句。
    • PDG:給定程序 , 且語句 由個函數調用 , 其中的一個函數調用對應的PDG(Program Dependency Graphs)則可表示為有向圖 , 是由語句和判斷式組成的集合,而 則為表示依賴關系的有向邊集合。

    接著作者指出了此前的兩項同領域工作[1][2]在提取code gadget時存在的問題,即路徑不敏感(path insensitive)。

    根據code gadget的的定義,我們首先找到special token——strncpy,然后再分別提取strncpy數據依賴的三個記號(dest,data,n),提取記號相應前序與后序的代碼切片,結果如step II所示,最終根據這些代碼在文件中的位置與調用順序組合形成code gadget。然而此時存在漏洞的代碼與不存在漏洞的代碼提取結果是一致的,當模型的輸入不發生改變時,其輸出也不會發生改變,這也就意味著當模型對這些代碼進行分類時,其準確率是不會改變的。

    Solution

    為了解決上述的問題,作者從兩個方向出發:

    1. 改變對代碼的預處理方式。目前的處理方法對于語句間的控制依賴處理過于粗糙,且并未指明語句對應的路徑。并且在代碼片重組的過程中存在暴力堆疊的問題,使不在同一控制范圍內的語句彼此直接相鄰,從而導致了路徑不敏感。一種解決策略是標識每個控制語句的控制范圍。

    在此基礎上作者給出了path-sensitive code gadget的定義:

    • path-sensitive code gadget:給定程序 , 且語句 由個special token組成, , code gadget 則是通過這些特殊記號遞歸生成的具有語義信息(存在數據依賴與控制依賴)的復數有序語句或特殊記號所處的控制條件下的控制范圍語句。
    1. 在此前的工作中更多是選擇RNN作為漏洞識別模型,因為其能識別上下文并對文本進行分類。但是在RNN中token的長度必須被預定義且為定長,其所采用的處理方式也較為暴力(截斷和填充),這也導致對代碼語義產生了影響,因此作者針對網絡結構設計進行優化,使其得以處理變長的code gadget。

    Design of SEVulDet

    下圖展示了SEVulDet的訓練階段與檢測階段,訓練階段相較于檢測階段多了打標簽這一環節。整體上可分為兩個步驟:(1)從源代碼中提取必需的語法語義至路徑敏感的 code gadget;(2)使用模型學習潛在的漏洞模式。

    Path-sensitive Code Gadgets Generation

    code gadget 的生成大體分為如下幾個步驟:

    1. 生成PDG,圖中的虛線與實線分別表示控制依賴與數據依賴。
    2. 識別special tokens,此處作者定義的special token包括庫/API函數調用,數組使用,指針使用。在圖中的例子作者提取出了strncpy,data,dest以及prinMsg。
    3. 接著分別通過前序分析獲取special token所在語句的后繼statemen,后序分析獲取special token所在語句的前驅statement,而不存在這種關系的statement(12,15,18)則被移除。
    4. 最后則是補充上路徑信息。為了識別所有的路徑信息,作者通過語法樹對關鍵節點(if,else if,else,for,while,do while,switch and case)進行識別,然后確定其控制范圍。例如 14-16 為else if的控制范圍,17-21 是else的控制范圍,如果沒有正確聲明控制范圍,17-21則處在了else if的控制范圍。因此作者通過為PDG添加相應的葉子節點使其能夠確定控制范圍,避免了語義的缺失。

    Network Architecture Design

    作者在CNN中設計了多層注意力機制與一個空間金字塔池化層,后者消除了RNN中對于code gadget預定義長度的限制。

    Embedding code gadgets with token attention

    作者首先使用word2vec將token進行向量化,然后設計token注意力來學習哪些token是對檢測有幫助的。

    Trainning vulnerability detection model

    在多層注意力機制的第二部分作者采用了[3]的Channel Attention和Spatial Attention,并將二者進行了串聯。然后便是采用了空間金字塔池化層進行變長優化。

    Evaluation

    作者在驗證時采用了兩組通用的數據集Software Assurance

    Reference Dataset (SARD)和Nation Vulnerability Dataset

    (NVD)。

    作者設計以下研究問題并作出了解答:

    1. 變長路徑敏感code gadget帶來的額外語義信息是否對于漏洞識別有幫助?
    2. 作者采用了定長的網絡結構進行對比,并且設置了不同的條件:(1)僅提取數據與控制依賴的code gadget——CG;(2)在CG的基礎上加上了路徑語義——PS-CG。
    3. 多層注意力機制是否使得SEVulDet更加有效?

    1. 與最先進的漏洞檢測框架相比,SEVulDet的效果如何?
    2. 與經典的靜態漏洞識別框架相比:
    3. 與其他深度學習漏洞識別框架相比:
    4. 在真實世界的軟件產品上測試:

    1. 變長路徑敏感code gadget與多層注意力機制使得SEVulDet發現更多漏洞的原因是什么?
    2. 在這部分,作者選取了一個未報告過的漏洞作為例子,該漏洞導致的死循環可以被路徑敏感code gadget所捕獲,避免了語義信息的損失,并展示了由注意力機制計算所得的token權重,驗證了SEVulNet確實從code gadget中學習到了潛在的漏洞模式。

    token語義分析
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    看到作者的出題思路是抽象代碼樹和污點分析,因為之前發了幾篇程序分析理論的文章但是一直沒有實踐,所以拿這道題自己實踐一下。
    它的主要特性有:1、動態地語義分析網頁中的JavaScript源碼,Hook關鍵點,利用污點分析檢出 Dom-Based XSS2、極低的誤報率:通過監聽瀏覽器對話框彈出事件等進行驗證。--proxy value set proxy and all traffic will be routed from the proxy server through
    ChatGPT在發布后OpenAI估值已漲至290億美元,上線兩個月后用戶數量達到1億。但相較于InstructGPT,GPT3的回答簡短,回復過于通俗毫無亮點。InstructGPT通過遵循數據中的指令進行訓練模型,從而提供詳細的響應文本。
    用戶名:加密密碼:密碼最后一次修改日期:兩次密碼的修改時間間隔:密碼有效期:密碼修改到期到的警告天數:密碼過期之后的寬限天數:賬號失效時間:保留。查看下pid所對應的進程文件路徑,
    對blackhat和defcon一些感興趣的議題做了一些小結。靜態分析blackhat里面一個靜態分析引擎的
    目前的處理方法對于語句間的控制依賴處理過于粗糙,且并未指明語句對應的路徑。并且在代碼片重組的過程中存在暴力堆疊的問題,使不在同一控制范圍內的語句彼此直接相鄰,從而導致了路徑不敏感。Design of SEVulDet下圖展示了SEVulDet的訓練階段與檢測階段,訓練階段相較于檢測階段多了打標簽這一環節。因此作者通過為PDG添加相應的葉子節點使其能夠確定控制范圍,避免了語義的缺失。
    可擴展和語義保持的反病毒引擎標簽挖掘
    本篇文章通過 網絡架構層、HTTP協議層、第三方應用層講解了繞過WAF的常見方法一、網絡架構層一般通過域名指向云WAF地址后反向實現代理,找到這些公司的服務器的真實IP即可實現繞過具體方法如下:1、查找相關的二級域名及同一域名注冊者的其他域名解析記錄。ISASP支持類似Unicode%u0027的編碼,還會對不合法的URL編碼進行字符刪除。
    針對現有的靜態代碼分析工具有較高的誤報率與漏報率,提出一種基于切片依賴圖(Slice Dependency Graph,SDG)的自動化漏洞檢測方法,將程序源代碼解析為包含數據依賴和控制依賴信息的切片依賴圖,然后使用圖神經網絡對切片依賴圖的結構進行表征學習,最后使用訓練的神經網絡模型預測待測程序源代碼中的漏洞。在 5 類常見缺陷分類(Common Weakness Enumeration,CWE)
    數據庫管理系統(DataBase Management System)與其他的大型復雜系統一樣,存在著許多漏洞。 其 中的內存錯誤漏洞往往可能導致遠程代碼執行、數據泄露、拒絕服務攻擊等。 由于數據庫管理系統的重要性,這些攻擊的影響往往十分重大。 本文將基于Squirrel [1] 這篇文章,來介紹對于DBMS的模糊測試技術。 簡單來說,對于DBMS的模糊測試的目標是找到一些SQL語句,將其輸入到
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类