供应链安全检测的现有技术——二进制层面
文章目錄
- 一、閉源軟件中復用開源組件檢測
- 組件復用型漏洞
- 組件復用型漏洞的檢測
- 1、代碼特征選擇
- 2、代碼特征提取
- 3、代碼相似度計算
- 4、復用類型劃分
- 二、閉源軟件中復用開源組件版本檢測
- 版本敏感特征選擇
- 粗匹配
- 精匹配
- 參考文獻
本文主要介紹軟件供應鏈安全的檢測技術的具體細節,針對閉源軟件即不開放源代碼的軟件中的組件源代碼進行檢測,對于檢測技術,分為組件本體識別和組件本體的版本識別兩個部分,其中,組件本體識別需要用到二進制代碼相似性檢測和復用性關系相結合的方式,版本檢測需要用到全局和局部參數特征值。
一、閉源軟件中復用開源組件檢測
組件復用型漏洞
定義:因復用含有漏洞的組件(第三方庫、開源框架等)而引入的軟件漏洞
現有檢測方法:
組件復用型漏洞的檢測
核心技術: 閉源二進制軟件的開源組件復用檢測
對于源代碼與二進制代碼間的復用檢測受到復雜的復用關系影響,即檢測復用時對簡單的復用可能有用,如zlib.dll與zlib庫,而對多層調用就失去了效果。
主要用到的方法如下:
因此,識別問題不僅僅時簡單的代碼相似性檢測問題,需要識別復雜關系,因此,復用檢測的工作變成了流行的代碼相似性檢測+復用關系識別:
現有工作準確率不高的原因:
原因:代碼特征普遍受編譯優化影響大,無法使用
解決方案:
- 補充抗編譯優化的代碼特征,并為新特征設計合理的匹配算法和權重算法
- 對復用類型進行劃分,針對不同類型進行針對性識別
1、代碼特征選擇
常用代碼特征與新增代碼特征評估:
2、代碼特征提取
二進制代碼特征提取方法:基于IDAPython提取導出函數、字符串、switch/case、if/else
結合編譯信息的源代碼特征提取方法:
源代碼特征提取方法:基于clang和llvm開發特征提取工具
特征所對應代碼片段:
3、代碼相似度計算
4、復用類型劃分
- 單一復用
1 bin -> 1 src
- 混合復用
1 bin -> N src
- 部分復用
N bin <- 1 src
- 嵌套復用
1 bin -> 1 src -> N src(嵌套復用是假式復用,應被去除)
二、閉源軟件中復用開源組件版本檢測
在檢測復用組件的基礎上,檢測復用組件的版本,因為不同版本的影響的漏洞有限
從待檢測二進制文件中提取代碼特征,和預先準備好的從源代碼中提取的特征進行比較,現有工作如下:
局限性:
版本敏感特征選擇
選擇的核心標準:不同版本之間的區分度拉滿
全局特征:
區分度公式:
舉例如下:
函數級別特征:
粗匹配
全局級別特征匹配方案 -> 粗匹配階段:
特征匹配方案:精準匹配——全局級別特征在編譯前后不發生變化
精匹配
函數級別特征用來定位函數,整個函數作為一個整體,所以采用基于相似度的識別方案。
具體的匹配算法:
參考文獻
《軟件安全原理》——霍瑋
轉載請說出處:from 信安科研人
總結
以上是生活随笔為你收集整理的供应链安全检测的现有技术——二进制层面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新华的学校计算机,新华计算机学校
- 下一篇: 阿里巴巴副总裁肖力:云原生安全下看企业新