0. 概述
對 Awesome-Binary-Similarity 中列出的論文進行調研,重點總結這些論文的研究動機與未來研究方向。
1. 調研內容
論文名稱 | 發表時間 | 發表期刊 | 期刊等級 | 研究單位 |
BinaryAI: Binary Software Composition Analysis via Intelligent Binary Source Code Matching | 2024年 | ICSE | CCF A | 南方科技大學 |
研究動機:Binary-to-Binary SCA 中第三方庫(Third-Party Libraries,TPL)的可擴展性較差。特別是,由于自動編譯相關的復雜性,只有包管理器維護的源包的有限子集可以編譯為多個版本的二進制文件并合并到 SCA 數據庫中。大量的開源 C/C++ 項目很難包含在 TPL 數據集中,這受到手動編譯的大量開銷的阻礙。綜上所述,TPL 數據集的有限規模可能會顯著已知 SCA 的實用性,因此可能無法識別所包含的 TPL 和相應的漏洞。為什么不使用 Binary-to-Binary SCA?
現有的 Binary-to-Source SCA 工具利用基于語法特征(例如字符串文字)來建立二進制代碼和 TPL 源代碼之間的對應關系,這可能無法很好地推廣到所有場景。(1)這些基本特征在大規模 TPL 數據集中往往表現出很大程度地冗余。例如,字符串 "407 Proxy Authentication Need"(表示常見地 HTTP 錯誤)在數據集中地 50 多個 TPL 中重復。冗余語法特征的存在會降低其獨特性和有效性,從而不可避免地產生誤報,從而降低 SCA 的精度。(2)TPL 和目標二進制文件之間很少甚至不存在共同的語法特征,尤其是哪些被剝奪了字符串文字和導出函數名稱的二進制文件。(3)從 C/C++ 源代碼提取字符串的技術本質上并不穩健,例如,通過連接宏定義字符串和常量字符串引起字符串丟失,從而與從相應 TPL 中的二進制文件中提取的字符串文字不匹配,從而導致召回二進制到源 SCA 的功能也可能受到損害。Binary-to-Source SCA 存在哪些挑戰?
因此,有必要在 Binary-to-Source SCA 中采用細粒度的特征(例如函數級特征),以便可以處理高級語義信息,以減輕基本特征的冗余和不可靠。考慮到編譯引入的二進制函數和源函數之間的巨大差異,論文嘗試通過采用基于 Transformer 模型來生成函數級嵌入并相應地進行二進制源代碼匹配來增強 Binary-to-Source SCA。
未來展望:盡管 BinaryAI 在實驗中取得了優異的結果,,但仍需要進一步擴大測試數據集的規模和覆蓋范圍,以驗證其在更廣泛場景下的有效性。目前 BinaryAI 主要針對 C/C++ 生態系統, 未來可以考慮將其擴展到其他編程語言的二進制分析。
未來可以進一步研究如何利用代碼語義信息, 例如控制流圖、調用圖等, 來增強二進制源代碼匹配的效果。探索如何將 BinaryAI 與其他二進制分析技術(如模糊測試、漏洞檢測等)進行有效集成, 從而提升整體的安全分析能力。研究如何將 BinaryAI 應用于更廣泛的場景, 如移動應用、固件等, 以推動二進制分析技術在軟件供應鏈安全領域的應用。
論文名稱 | 發表時間 | 發表期刊 | 期刊等級 | 研究單位 |
Code is not Natural Language: Unlock the Power of Semantics-Oriented Graph Representation for Binary Code Similarity Detection | 2024年 | USENIX | 頂會 | 上海交通大學 |
研究動機:二進制代碼相似性檢測(BCSD)是一項關鍵的基礎任務,在多個重要應用中發揮重要作用,如漏洞搜索、軟件抄襲檢測等。現有的BCSD方法主要基于指令流或控制流圖(CFG),但存在一些局限性。指令流方法將二進制代碼當作自然語言處理,忽視了代碼的語義結構;CFG方法僅利用控制流結構,忽略了其他重要的語義。論文指出,與自然語言不同,二進制代碼具有明確定義的語義結構,包括指令內部結構、指令間關系(如def-use、分支)以及隱式約定(如調用約定)。
未來展望:對于一些由編譯器引入的"臟"語義(如棧幀的使用),還需要進一步清洗和優化,以得到更加純凈的語義表示。目前僅考慮了內存效果模型,I/O效果模型也可能對某些任務有幫助,值得進一步探索。對于無法完全恢復的間接跳轉控制流,如何為神經網絡提供必要信息以推斷缺失的控制流仍是一個挑戰。
將SOG應用于其他二進制代碼相關任務,如漏洞搜索、庫函數恢復、軟件抄襲檢測等,進一步驗證其適用性。研究如何整合更多的語義信息,如字符串、整數、外部函數引用等,進一步豐富SOG的表達能力。探索如何克服間接跳轉控制流恢復失敗的問題,為神經網絡提供更完整的代碼語義信息。