軟件所在并發漏洞檢測方面取得進展

文章來源:  |  發布時間:2019-12-05  |  【打印】 【關閉

  

  近期,中國科學院軟件研究所蔡彥團隊提出了并發程序中并發漏洞檢測的新方法,該團隊首次基于松弛可交換事件來檢測并發漏洞。該團隊提出的松弛可交換事件克服了傳統檢測算法的不足,即使目標事件之前存在復雜的同步約束,也可以通過松弛可交換事件來判斷是否可以交換。相關成果以“Detecting Concurrency Memory Corruption Vulnerabilities”為題,發表于軟件工程領域會議27th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE’19)。

  并發漏洞常常被攻擊者利用和攻擊,給軟件的安全帶來嚴重威脅,但是并發漏洞的檢測十分困難。一種直觀的檢測方法是遍歷所有的線程交錯來檢測并發漏洞,但是會帶來交錯狀態空間爆炸的問題。目前一些研究者用數據競爭的檢測方法來檢測并發漏洞,但是由于數據競爭和并發漏洞并不等價,這種方法實際應用中并不是很有效。一些最新的基于約束求解的工作也存在較多誤報問題。
  該團隊提出的方法目前主要針對與事件發生序相關的三類并發漏洞(釋放后重用UAF、空指針解引用NPD和雙重釋放DF)進行檢測。例如,在圖1中有兩個線程,線程t1對指針p解引用,線程t2釋放指針p。如果對指針p的釋放發生在對其解引用之前,就會產生并發漏洞UAF。在對這三類漏洞的研究中,該團隊發現:檢測并發漏洞的關鍵就是判斷目標事件之間的順序是否可以交換。該團隊通過引入第三個事件(圖2中的eany)來重新定義了給定的兩個事件(e1和e2)的可交換性。該定義直觀理解如下:給定兩個距離較近的事件,如果它們和第三個事件滿足一定的關系,那么這兩個事件將有較高的概率可被交換?;诖?,該團隊提出了松弛可交換事件的概念?;谒沙诳山粨Q事件,團隊進一步提出了針對上述三類并發漏洞的檢測算法并實現了相應的原型工具。在一些CVE數據集和一個真實大規模的程序上的實驗結果表明,提出的方法可以檢測到更多的并發漏洞。

1. 由事件發生序引發的并發漏洞

2. 松弛可交換事件的解釋

王者荣耀solo赛赚钱