數(shù)字時代的軟件開發(fā)普遍遵循敏捷實踐,發(fā)布和部署周期都很短,開發(fā)團隊非常依賴開源來加速創(chuàng)新迭代速度。因此,對團隊項目中包含的每個開源組件進(jìn)行跟蹤非常重要,可以避免法律風(fēng)險,保持強大的安全態(tài)勢。
在DevSecOps環(huán)境中,SCA可以明確開源組件的可見性,幫助企業(yè)精準(zhǔn)把控開源組件風(fēng)險,避免軟件帶病上線。近年來,SCA逐漸成為企業(yè)軟件治理的“必備神器”,強大能力的背后離不開關(guān)鍵技術(shù)的支撐,開源網(wǎng)安在為上百家客戶服務(wù)的實踐中認(rèn)為,軟件成分分析技術(shù)、組件多鏈路依賴分析技術(shù)、二進(jìn)制分析、漏洞級代碼溯源分析、函數(shù)級漏洞可達(dá)性定位檢測等幾大技術(shù)是決定SCA檢測能力的關(guān)鍵,本期我們將對這些關(guān)鍵技術(shù)進(jìn)行深入解析。
基于包管理器的SCA分析技術(shù)
通過對目標(biāo)檢測對象的配置文件及應(yīng)用包中存在的二進(jìn)制引入包進(jìn)行掃描,獲取其相關(guān)直接及間接引入的組件信息,并與知識庫內(nèi)容的匹配標(biāo)識,獲取相關(guān)的組件完整信息。可實現(xiàn)對已修改組件、組件間依賴關(guān)系識別、自研組件設(shè)定等組件行為。
基于源碼溯源的SCA分析技術(shù)
源碼溯源分析技術(shù)(或“同源分析”)通過收錄開源源代碼,并將相關(guān)代碼進(jìn)行索引處理,讓源文件和目標(biāo)文件合并后,既能檢測自身代碼是否有冗余重復(fù)代碼,又能檢測源代碼和目標(biāo)代碼之間的代碼重復(fù)情況。此技術(shù)不僅支持文件與文件之間的比較,而且擁有完善的未經(jīng)授權(quán)的開源代碼庫,可以將應(yīng)用代碼和開源代碼庫的信息進(jìn)行比較,覆蓋率和精確度更高。
多鏈路組件依賴分析技術(shù)
多鏈路組件依賴分析技術(shù),主要基于包管理器的模擬構(gòu)建實現(xiàn)組件依賴的過程跟蹤和定位,將依賴樹的數(shù)據(jù)信息與收集的開源數(shù)據(jù)進(jìn)行數(shù)據(jù)核驗,補充依賴樹數(shù)據(jù)的其他信息,獲取最終的依賴數(shù)據(jù),幫助開發(fā)人員更好地理解和管理代碼的復(fù)雜性,提高軟件的質(zhì)量和可靠性。
制品二進(jìn)制成分分析技術(shù)
對被檢測的二進(jìn)制制品文件進(jìn)行遞歸提取內(nèi)容,通過文件格式識別引擎識別格式,對不同格式的文件分別調(diào)用特征提取引擎,提取二進(jìn)制制品文件的特征信息。使用特征匹配算法,通過圖相似、函數(shù)相似、語義相似等算法與開源組件特征庫進(jìn)行匹配運算,確定引入的開源組件名稱和版本,結(jié)合開源知識庫的數(shù)據(jù)支持,獲取開源組件的許可和漏洞風(fēng)險信息,提取二進(jìn)制特征的同時找出制品中的敏感信息,生成敏感信息清單,有效發(fā)現(xiàn)軟件中潛藏的薄弱點。
安全漏洞可達(dá)性分析技術(shù)
采用基于AST(抽象語法樹)及調(diào)用分析方法,對用戶上傳的源代碼進(jìn)行AST信息提取,獲取源代碼的函數(shù)調(diào)用鏈信息,同時從主流開源倉庫中下載開源項目各版本的源代碼,提取源代碼中的方法,將提取的函數(shù)信息存入開源組件知識庫中,并與開源組件建立關(guān)聯(lián)關(guān)系,形成開源函數(shù)庫,基于對調(diào)用鏈、調(diào)用位置進(jìn)行分析,為研發(fā)和安全部門提供更準(zhǔn)確的修復(fù)信息。
隨著數(shù)字化的深入,更多未知風(fēng)險也將推動SCA的應(yīng)用范圍變廣、檢測能力增強以及更加智能化。因此,企業(yè)在選擇SCA工具時,需要通過關(guān)鍵技術(shù)了解其檢測能力與發(fā)展?jié)摿Γヅ渥陨戆踩枨螅⒆罴验_源治理體系,保障數(shù)字化建設(shè)的安全發(fā)展。
來源:安全牛