陳海明團隊在ReDoS漏洞檢測與修復技術上取得重要進展
文章來源:計算機科學國家重點實驗室 | 發布時間:2021-06-21 | 【打印】 【關閉】
近日,中國科學院軟件研究所陳海明團隊在正則表達式拒絕服務攻擊(ReDoS)漏洞檢測與修復技術上取得重要進展,設計研發當前最先進ReDoS漏洞檢測工具——ReDoSHunter,提出首個抗ReDoS漏洞正則表達式修復工具——FlashRegex,不僅解決了靜態與動態ReDoS檢測工具的局限性,實現了正則表達式修復結果無ReDoS漏洞的突破,而且在性能上大幅提升并全面超越了現有最先進ReDoS漏洞檢測及修復工具,對ReDoS漏洞挖掘、利用、修復及防御工作提供了便捷、高效、性能優越的重要工具。
ReDoS漏洞檢測工具——ReDoSHunter
正則表達式在計算機科學領域中被廣泛使用,但正則表達式拒絕服務攻擊(ReDoS)漏洞是一種常見且嚴重的算法復雜度攻擊漏洞,并在近幾年呈增長趨勢。但現有的ReDoS漏洞檢測工具都存在準確率較低(誤報多)或召回率較低(漏報多)的缺陷,產生這一缺陷的根本原因在于,給出全面的、形式化的ReDoS漏洞檢測條件這一挑戰性問題未得到解決。
針對該問題,陳海明團隊經過長期深入研究,通過對海量易受ReDoS漏洞攻擊的正則表達式的分析,創新性地系統提出了ReDoS漏洞檢測條件,即ReDoS漏洞模式,并形式化地給出了觸發這些模式的必要條件。基于上述工作,進一步提出了動靜態結合的ReDoS漏洞檢測算法,并設計實現了ReDoS漏洞檢測工具——ReDoSHunter。
ReDoSHunter能夠高效檢測ReDoS漏洞,實現診斷漏洞根本原因、分析漏洞嚴重程度、追蹤漏洞位置并生成觸發攻擊的字符串等功能。在檢測ReDoS漏洞數量方面,ReDoSHunter超越現有最先進工具,在Corpus, RegExLib, Snort三個大型數據集(共計37651個正則表達式)上實現了100%的準確率和召回率。在檢測ReDoS漏洞相關的CVEs(Common Vulnerabilities and Exposures通用漏洞披露)方面,現有最先進的檢測算法只能檢測出60%的ReDoS相關的CVEs,ReDoSHunter能成功檢測出100%的CVEs。由于ReDoSHunter的卓越性能,目前軟件所在ReDoS相關的CVEs披露數量排名中位居國際首位。
此外,ReDoSHunter 的應用對于尋找、糾正廣大的開源社區的ReDoS漏洞發揮了重大作用。該工具已應用在Python源碼、CKEditor和prismjs等開源項目的ReDoS漏洞檢測中。同時,該團隊與知名安全公司Snyk建立了長期的合作關系,共同致力于高效披露ReDoS漏洞。在已發現的200多個尚未被披露的漏洞中,截至目前已獲批了27個CVEs, 并收到多個項目的官方致謝。
相關研究成果以ReDoSHunter: a combined static and dynamic approach for regular expression DoS detection為題被USENIX Security 2021會議錄用。論文第一作者為博士生李頁霆,論文通訊作者為陳海明研究員。
ReDoSHunter工具檢測流程實例
ReDoS漏洞檢測工具在三大數據集上的識別效果比較
抗ReDoS漏洞正則表達式修復工具——FlashRegex
正則表達式以難以掌握著稱,其現有的自動化合成與修復工作均忽略了ReDoS漏洞,使其結果可能受到該漏洞的攻擊。
針對該問題,陳海明團隊提出了首個抗ReDoS漏洞正則表達式的合成與修復算法,其通過去除正則表達式的歧義來生成或修復出無ReDoS漏洞的正則表達式。為加速合成和修復過程,團隊使用了確定性自動機和局部約束加強啟發式策略,并且設計實現了相應的工具——FlashRegex。
與傳統的人工修復相比,采用維護人員的修復方案得到的結果仍然經常有ReDoS漏洞,而FlashRegex能夠高效地生成或修復出無ReDoS漏洞的正則表達式,修復的所有正則表達式中發現的ReDoS漏洞數量為0。
該工具已應用到實際開源項目中修復ReDoS漏洞,得到postccs、nltk和Python源碼等十多個項目維護者及知名安全公司Snyk的一致認可或致謝。
相關研究成果以FlashRegex: deducing anti-ReDoS regexes from examples為題在ASE 2020會議上發表。論文第一作者為博士生李頁霆,論文通訊作者為陳海明研究員。
FlashRegex工具修復流程