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