1 、什么是SCA
SCA(Software Composition Analysis)軟件成分分析,通俗的理解就是通過分析軟件包含的一些信息和特征來實現對該軟件的識別、管理、追蹤的技術。我們知道在當今軟件開發中,引入開源軟件( 注1 )到你的項目中,避免重復造輪子是大家都再熟悉不過的了,比如開源庫中開源軟件按每年21%速度在增長( 來源Forrester報告 ),開源安全威脅成為企業組織無法回避的話題,而應用SCA技術對應用程序進行安全檢測,實現安全管理是最行之有效的方法之一。
2、基本原理
- SCA理論上來說是一種通用的分析方法,可以對任何開發語言對象進行分析,Java、C/C++、Golang、Python、JavaScript等等,它對關注的對象是從文件層面的文件內容,以及文件與文件之間的關聯關系以及彼此組合成目標的過程細節。從SCA 分析的目標程序形式上分,既可以是源代碼也可以是編譯出來的各種類型的二進制文件,分析的數據對象對程序架構,編譯方式都是不敏感的,比如:類名稱、方法/函數名稱、常量字符串等等,不管目標程序運行在x86平臺還是ARM平臺,不管是windows程序還是Linux程序,都是一樣的,簡而言之SCA 是一種跨開發語言的應用程序分析技術。
- SCA分析過程:首先對目標源代碼或二進制文件進行解壓,并從文件中提取特征,再對特征進行識別和分析,獲得各個部分的關系,從而獲得應用程序的畫像—–組件名稱+版本號,進而關聯出存在的已知漏洞清單。
- 由于SCA分析過程中不需要把目標程序運行起來,因此具有分析過程對外部依賴少,分析全面,快捷、效率高的優點;
3、業界TOP SCA工具分析
根據Forrester最新SCA報告,Forrester通過10個維度(注3)對不同工具進行打分,最后根據綜合得分評選出如下業界TOP 10 SCA工具魔力象限圖):


注:圖片和數據引用來自Forrester報告
3.1工具概覽分析
- TOP 10 SCA工具中有5款支持軟件包(注2)開源軟件SCA檢查能力(synopsys/Sonatype/Veracode/Jfrog/GitLab),其他工具只支持源代碼SCA檢查能力。
- 5款支持軟件包SCA檢查工具中,對C/C++、Java、.Net語言支持的比較好,但對Golang、python、JavaScript語言支持能力偏弱,比如:synopsys支持的組件對象中前面3種語言占大頭90%+,相應的檢測率也高,而Golang語言的組件檢出率則低很多。
- SCA已從主要用作對開源軟件的檢測向應用程序的典型編碼問題檢測趨勢擴展,比如Veracode工具,它能提供了對諸如緩沖器溢出、命令行注入、死鎖、重復釋放、整形數溢出、UAF、格式化字符串漏洞,SQL注入等典型編碼問題的檢測能力。
4、影響SCA分析準確性的因素分析
- 從SCA原理可以知道影響分析準確性的因素分兩個方面:其一是SCA工具支持組件的數量和檢測算法,其二是應用程序引用開源軟件的方式。
- 因為SCA工具是根據樣本組件特征來匹配被測程序中的特征來判斷應用程序是否引用該組件的,因此支持組件的數量越多,那么檢測率也就越高,支持的組件數量越少,越會導致檢測遺漏;另外檢測算法和特征設計是否合理也直接影響到分析的準確性和分析效率,不同SCA工具廠商有不同的解決方案,就好比在手機上識別指紋/人臉一樣,不同廠商識別的靈敏度和準確度都不一樣。
- 應用程序在引用開源軟件時,不同的應用程序即使引用同一個組件也存在引用不同的功能,引用功能的多少也各不相同,這樣帶來的結果就是在應用程序中包含該組件的特征數量也是大小不同的,引用功能多包含的特征一般也多,引用的功能少包含的特征也少。而應用程序包含組件特征的多少直接影響到SCA工具的檢測的準確性,組件特征越少SCA工具檢測越困難,因此即使兩個不同應用都引用了相同組件,可能一個應用可以檢測到,另外一個應用則無法檢測出該組件。這種場景對SCA工具檢測二進制文件尤其明顯。
- 由于存在上述SCA分析準確性,在極限情況下如果無法檢測出組件,那么也就無法知道應用程序中是否存在該組件的漏洞了。
5、總結:
- 不管是源代碼文件的SCA檢測工具還是二進制文件的SCA檢測工具,他們是一種互補的關系,各有各的優缺點,比如二進制文件的SCA檢測能發現構建過程中工具鏈引入的安全問題,而源代碼的SCA則不能,SolarWinds事件就很好的說明了這一點。
- 目前SCA工具檢測開源軟件的已知漏洞是基于組件名稱+版本號來關聯出已知漏洞的,對部分編譯場景(只有部分組件代碼被編譯到二進制文件中)和patch打補丁場景(漏洞已修復),誤報率高。
- SCA工具掃描效率和準確性是一對矛盾體,這是工具廠商需要權衡考慮的地方,而既能提升準確率又不會降低掃描效率的技術永遠是SCA工具廠商研究的課題和追求的目標。
注1:Top 10開源軟件編程語言:JavaScript(51%)、C++(10%)、Java(7%)、Python(7%)、Ruby(%5)、Go(4%)、C(4%)、PHP(4%)、TypeScript(4%)、C#(3%)、Perl(2%)、Shell(1%)
注2:軟件包是指產品用來安裝、運行的發布包,里面包含了產品編譯好的可以運行的二進制文件,比如.so/.jar/.exe/.dll/.pyc
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
軟件
+關注
關注
69文章
5332瀏覽量
91600 -
SCA
+關注
關注
1文章
37瀏覽量
12549 -
代碼
+關注
關注
30文章
4968瀏覽量
73999
發布評論請先 登錄
相關推薦
熱點推薦
攻擊逃逸測試:深度驗證網絡安全設備的真實防護能力
的準確性和可重復性。
圖6 測試進度監控
結果分析階段,平臺提供多維度的可視化報告,包括防護效果總體情況、逃逸技術突破情況等內容;
圖7 安全攻擊測
發表于 11-17 16:17
嵌入式軟件測試與專業測試工具的必要性深度解析
?:工具的易用性和學習曲線是否符合團隊技術水平。
?合規要求?:工具是否支持生成符合行業標準(如ISO 26262)的測試報告和審計追蹤。
嵌入式軟件測試不再是可選項,而是確保系統可
發表于 09-28 17:42
科普知識丨熱重分析儀有什么用途?
熱重分析儀(TGA)作為一種精準的熱分析儀器,通過實時監測物質在程序控溫下的質量變化,為材料科學、化學工業、生物醫藥等領域提供關鍵數據支持。?上海和晟HS-TGA-101熱重分析儀在材料成分分
FIB 與成分分析的關聯原理
離子束與樣品的相互作用在FIB系統中,離子源產生的離子束經聚焦后轟擊樣品表面,引發一系列物理現象。入射離子與樣品原子的原子核碰撞,產生濺射現象,這是FIB進行材料去除和加工的基礎。同時,入射離子也可能通過級聯碰撞將動能傳遞給樣品原子,并在樣品表面以下一定距離靜止,即離子注入。此外,入射離子與樣品的非彈性散射還會產生二次電子、聲子、等離子激元以及X射線等,其中
鋰電池熱失控原理及安全檢測技術解析
減少熱傳導偏差,提升小尺寸電芯測試精度;
采用多維度氣體分析系統。
靈活擴展:可聯合使用傅立葉紅外光譜儀,同步分析CO、HF等8類氣體成分。
—項 目 實 例—
檢測流程
發表于 05-12 16:51
迅龍軟件參加開源中國《數智漫談》,探討AI如何邁進大模型時代
晚,開源中國直播欄目《數智漫談》邀請華為昇騰生態技術專家、行業先行者以及迅龍軟件等,分享一線開發經驗,助力開發者與企業用戶抓住國產AI新紅利。該話題圍繞“如何讓A
高光譜相機在生物醫學中的應用:病理分析、智慧中醫與成分分析
企業,深圳市中達瑞和科技有限公司依托自主研發的高光譜相機與光譜云平臺,在生物醫學領域實現了多項突破性應用。本文聚焦其在病理分析、病毒檢測及成分分析中的核心價值與實踐成果。 一、病理分析:精準診斷與效率提升 高光譜相機通過非侵入式
漫談軟件成分分析(SCA)安全測試技術
評論