RSA創(chuàng)新沙盒盤點(diǎn) | Apiiro——代碼風(fēng)險平臺
前不久,RSA官方宣布了最終入選創(chuàng)新沙盒的十強(qiáng)初創(chuàng)公司:WABBI、Satori、Abnormal Security、Apiiro、Axis Security、Cape Privacy、Deduce、Open Raven、STARATA、WIZ。
綠盟君將通過背景介紹、產(chǎn)品特點(diǎn)、點(diǎn)評分析等,帶大家了解入圍的十強(qiáng)廠商。今天,我們要介紹的是廠商是:Apiiro。
一. 公司介紹
Apiiro是業(yè)內(nèi)首先提出代碼風(fēng)險平臺的企業(yè),因其提供多維應(yīng)用程序風(fēng)險管理與可視化工作而入選RSA Conference 2021年創(chuàng)新沙盒10名決賽選手之一。Apiiro的總部位于以色列的特拉維夫和美國的紐約,該公司于2020年10月完成了3500萬美元融資,由頂級風(fēng)險投資公司Greylock Partners和Kleiner Perkins共同投資。
圖1 Apiiro公司創(chuàng)世人
Apiiro的兩位創(chuàng)始人分別是Idan Plotnik和Yonatan Eldar,這兩位創(chuàng)始人均是以色列國防部的退伍軍人。CEO是Idan,他曾經(jīng)創(chuàng)辦Aorato,其主要業(yè)務(wù)是云上以及本地與混合云環(huán)境中使用機(jī)器學(xué)習(xí)來檢測可疑攻擊行為,該公司于2014年被微軟以2億美元收購,Idan在Aorato被收購后出任微軟的工程總監(jiān)。Yonatan曾任微軟工程團(tuán)隊的負(fù)責(zé)人,負(fù)責(zé)處理微軟大型工程團(tuán)隊產(chǎn)品風(fēng)險檢測與評估,將風(fēng)險劃分優(yōu)先級,提供修復(fù)計劃并同其他高管溝通。
二. 相關(guān)背景
安全開發(fā)生命周期(Security Development Lifecycle,SDLC)是一個幫助開發(fā)人員構(gòu)建更安全的軟件和解決安全合規(guī)要求的同時降低開發(fā)成本的軟件開發(fā)過程。安全應(yīng)用從安全設(shè)計開始,軟件的安全問題很大一部分是由于不安全的設(shè)計而引入的,安全設(shè)計對于軟件安全的重要性尤為可見[1]。
SDLC是一個幫助開發(fā)人員構(gòu)建更安全的軟件和解決安全合規(guī)要求、同時降低開發(fā)成本的軟件開發(fā)過程。自2004年起,微軟將SDLC作為全公司的強(qiáng)制政策,SDLC的核心理念就是將安全考慮集成在軟件開發(fā)的每一個階段:需求分析、設(shè)計、編碼、測試和維護(hù)。從需求、設(shè)計到發(fā)布產(chǎn)品的每一個階段每都增加了相應(yīng)的安全活動,以減少軟件中漏洞的數(shù)量并將安全缺陷降低到最小程度。SDLC是側(cè)重于軟件開發(fā)的安全保證過程,旨在開發(fā)出安全的軟件應(yīng)用。
簡單來說,SDLC是微軟提出的從安全角度指導(dǎo)軟件開發(fā)過程的管理模式,在傳統(tǒng)軟件開發(fā)生命周期的各個階段增加了一些必要的安全活動,軟件開發(fā)的不同階段所執(zhí)行的安全活動也不同,每個活動就算單獨(dú)執(zhí)行也都能對軟件安全起到一定作用。當(dāng)然缺少特定的安全活動也會對軟件的安全性帶來影響。
圖2 微軟SDLC安全活動簡圖
SDLC流程是一種專注軟件開發(fā)安全保障的流程。在SDLC流程中,在不同的階段需要使用不同的測試工具(例如,CI/CD上的SAST工具)。SAST通過掃描代碼,獲取數(shù)據(jù)流、控制流和函數(shù)調(diào)用關(guān)系以檢測代碼漏洞。但SAST僅關(guān)注漏洞,忽略了代碼組件,數(shù)據(jù),安全控制,部署位置,開發(fā)人員經(jīng)驗和業(yè)務(wù)影響等風(fēng)險。這也是SAST的高誤報的原因,業(yè)界商業(yè)級的SAST工具誤報率普遍在30%以上,誤報會降低工具的實用性,可能需要花費(fèi)更多的時間來清除誤報而不是修復(fù)漏洞。SCA(Soft Composition Analysis)在發(fā)現(xiàn),管理、監(jiān)控OSS許可證以及相關(guān)的安全漏洞上也存在一些問題。這些工具本質(zhì)是查看相關(guān)的軟件包或代碼,缺少多維度視角的分析。
Apiiro的代碼風(fēng)險平臺源于這兩名創(chuàng)始人在微軟工作中所面臨的挑戰(zhàn):現(xiàn)有的安全性和合規(guī)性工具和流程大多是手動和定期的,為了便于集成控制同時也要滿足風(fēng)險管理要求,這些安全性的要求很多時間成了開發(fā)流程中的阻礙。
Apiiro處于DevSecOps、應(yīng)用程序安全、DevOps生產(chǎn)力和云安全市場的交叉點(diǎn)。Apiiro代碼風(fēng)險平臺在可以幫助客戶在SDLC過程的早期進(jìn)行有效的風(fēng)險管理、加強(qiáng)應(yīng)用程序的治理與合規(guī)性檢測,同時防止針對CI/CD的高級攻擊。Apiiro會分析整個開發(fā)過程中的數(shù)據(jù),以幫助組織識別,確定優(yōu)先順序并補(bǔ)救有風(fēng)險的重大變更。Apiiro通過提供跨應(yīng)用程序,基礎(chǔ)架構(gòu),開發(fā)人員的知識和業(yè)務(wù)影響的風(fēng)險可見性,幫助組織構(gòu)建應(yīng)用程序風(fēng)險計劃[2]。
三. 代碼風(fēng)險平臺關(guān)鍵技術(shù)介紹
Apiiro產(chǎn)品起源于軟件開發(fā)過程中技術(shù)與業(yè)務(wù)上的痛點(diǎn)。Apiiro希望構(gòu)建一個解決方案,能夠彌合開發(fā)、安全與合規(guī)團(tuán)隊之間的差距,從而加快交付速度與上市速度。Apiiro構(gòu)建了業(yè)內(nèi)首個代碼風(fēng)險平臺,該平臺實現(xiàn)了從設(shè)計到代碼再到上云的整個流程中,對于任意更改的全面風(fēng)險可見。同時,該平臺可全方位查看應(yīng)用程序、基礎(chǔ)架構(gòu)、開發(fā)人員的知識和業(yè)務(wù)影響方面的安全和合規(guī)風(fēng)險。
Apiiro的方法可以與外部安全工具集成。該公司的技術(shù)在開發(fā)人員和代碼行為之間創(chuàng)建了統(tǒng)一的風(fēng)險概況,將重點(diǎn)放在業(yè)務(wù)風(fēng)險上。例如,在銀行應(yīng)用程序開發(fā)過程中,Apiiro不是簡單地掃描銀行應(yīng)用程序中的漏洞,而是研究與風(fēng)險相關(guān)的問題,如給定的API是否可以轉(zhuǎn)賬,或者正在分析的服務(wù)是否暴露在互聯(lián)網(wǎng)上,可以在該業(yè)務(wù)上下文中添加了對開發(fā)人員行為的深入分析。
3.1 代碼風(fēng)險的多維度
當(dāng)今,可以說隨處皆是代碼,從應(yīng)用程序開發(fā)、個人驗證信息(PII)添加、網(wǎng)絡(luò)策略的更改,IAM(身份識別與管理系統(tǒng))角色的添加到在云API網(wǎng)關(guān)中發(fā)布新API并配置授權(quán)訪問控制都會給代碼帶來風(fēng)險。在考慮代碼風(fēng)險時,當(dāng)前主要傾向于考慮使用諸如SAST(Static Application Security Testing), SCA(Soft Composition Analysis), DAST(Dynamic Application Security Testing)和ISAT(Interactive Application Security Testing )等安全漏洞檢測工具。從根本上講,這些些工具會遺漏大量上下文,從而導(dǎo)致大量噪音和誤報,這不僅阻礙了開發(fā)進(jìn)度,同時也會給開發(fā)過程造成誤導(dǎo)。
而在軟件開發(fā)過程中,如果存在多個SDLC流程門控,每個流程門控都獨(dú)立于其他功能運(yùn)行,不同應(yīng)用的安全程序完全不一樣。
圖3 SDLC 過程門控
在大多數(shù)情況下,通常是檢測每個門控而不是查看所有開發(fā)階段的上下文。很多漏洞的產(chǎn)生都是各種代碼與配置的變更導(dǎo)致的,因此需要設(shè)計到開發(fā)再到生產(chǎn)的各個階段都需要考慮。因此,僅僅針對某一個階段從單一維度無法提供完全的視角與上下文關(guān)系。與其關(guān)注漏洞的風(fēng)險,不如關(guān)注業(yè)務(wù)的實際風(fēng)險,這就需要對上下文有廣泛的了解。可以對不同類型的風(fēng)險維度進(jìn)行如下分類:
圖4 多種風(fēng)險維度
在代碼風(fēng)險分析過程中考慮多維方法的話可以通過構(gòu)建不同完整的上下文信息來將SDLC工具與分析過程集中到最需要關(guān)注的點(diǎn)上,從而可以優(yōu)化代碼風(fēng)險分析過程。
例如,基于對歷史代碼更改的分析為每個開發(fā)人員構(gòu)建相關(guān)的知識庫可以幫助開發(fā)人員做出更好的決策。知識庫的相關(guān)特征包括他們已提交了多少代碼更改,這些更改是否與安全相關(guān)的更改以及是否有任何業(yè)務(wù)影響,還可以考慮數(shù)據(jù)處理,部署位置和互聯(lián)網(wǎng)暴露情況等。結(jié)合以上內(nèi)容,可以使用上下文模型進(jìn)行多維風(fēng)險分析,這將幫助安全架構(gòu)師和開發(fā)人員專注于最重要的更改。這種方法的好處將幫助公司中的不同利益相關(guān)者:
1、CIO和CISO將在業(yè)務(wù)的實際風(fēng)險中獲得高級別的上下文風(fēng)險;
2、安全架構(gòu)師和App安全領(lǐng)導(dǎo)者將獲得一項具有可行性的工作計劃,該計劃需要對業(yè)務(wù)造成重大影響(HBI)的重大的源代碼變更。安全工具可以集中于僅掃描那些代碼更改,從而以最少的FP來實現(xiàn)快速切換;
3、滲透測試人員將獲得與惡意代碼更改相關(guān)的上下文告警,從而使他們可以開始進(jìn)行增量測試;
4、開發(fā)人員針對產(chǎn)品中發(fā)現(xiàn)的安全性問題進(jìn)行解決;
5、法律或規(guī)范可以更輕松準(zhǔn)確地識別代碼的合規(guī)性問題,例如開源軟件許可證,版權(quán)等以及通知文件。
3.2 檢測惡意代碼提交
Apiiro 代碼風(fēng)險平臺的功能之一是能夠使用UEBA和異常檢測技術(shù)(正在申請專利)檢測并阻止代碼的惡意提交,此功能模塊是基于機(jī)器學(xué)習(xí)和人工智能算法進(jìn)行設(shè)計的,該算法分析組織中不同實體的行為(例如,代碼組件,安全控制,數(shù)據(jù)類型,貢獻(xiàn)者的知識,組織行為,存儲庫,項目等)。同時該模塊提取了數(shù)十種面向領(lǐng)域的特征(包括邏輯,上下文和時間序列特征)用以構(gòu)建每個實體屬性,如對歷史提交代碼的元數(shù)據(jù)、內(nèi)容、pull請求和票證進(jìn)行分析,提取了相關(guān)的數(shù)值、時序以及內(nèi)容特征。該模塊的另一個數(shù)據(jù)源是平臺產(chǎn)生的歷史跨庫代碼特征。在完成特征提取和豐富后,Apiiro代碼風(fēng)險平臺會基于歷史代碼實時構(gòu)建和訓(xùn)練自適應(yīng)行為模型。
除了針對每個實體的單獨(dú)模型外,Apiiro的算法還訓(xùn)練了更高級別的模型,這些模型用于增強(qiáng)檢測事件的置信度,實現(xiàn)了較高的惡意活動檢測率,同時減少對不相關(guān)異常的錯誤檢測。
Apiiro能夠根據(jù)受感染用戶的異常行為來檢測惡意代碼提交。異常檢測算法將該提交標(biāo)記為可疑,因為就用戶的過去活動和存儲庫中其他貢獻(xiàn)者的活動而言,它偏離了該用戶的正?;顒印S|發(fā)了異常警報的一些指標(biāo)包括:
1、提交代碼與用戶最近提交強(qiáng)度不符;
2、提交代碼時間與用戶的預(yù)期活動日期和時間有出入;
3、貢獻(xiàn)者偏離了他的同行在提交的模式;
4、提交代碼信息與分析代碼之間存在較大差異;
5、提交的代碼與該存儲庫的模型預(yù)測的代碼明顯不同。
Apiiro的檢測是自動實時完成的,而與語言和托管無關(guān)。一旦檢測到攻擊,平臺就可以自動對可疑提交代碼的進(jìn)行評論,甚至可以在Slack中為安全運(yùn)營中心觸發(fā)警報。
圖5 惡意代碼提交檢測與處理流程
誤報率是當(dāng)前任何異常檢測系統(tǒng)的關(guān)鍵挑戰(zhàn)之一。Apiiro過去兩年中對php-src存儲庫的分析中,觸發(fā)了4個可疑事件,其中只有一個涉及除已標(biāo)記的高風(fēng)險指標(biāo)之外還添加了主要代碼,這就是上圖中描述的惡意代碼提交。平臺的低誤報率使操作員能夠?qū)W⒂诒姸嗫梢墒录?,而不會被無盡的異常行為所淹沒。
Apiiro的異常檢測算法能夠通過分析不同類型實體的各種活動行為來成功檢測惡意提交,同時保持極低的誤報率。圖5演示了Apiiro的一些異常檢測功能。
3.3 SolarWinds構(gòu)建時代碼注入攻擊檢測
01
SolarWinds事件介紹
2020年末,針對SolarWinds的復(fù)雜供應(yīng)鏈攻擊成為全球頭條新聞。在構(gòu)建過程中,攻擊者將實施后門的惡意代碼注入到源代碼中,從而使每個SolarWinds客戶都受到了嚴(yán)重威脅。盡管供應(yīng)鏈攻擊是一個已知的概念,但是這是首次公開發(fā)現(xiàn)這種復(fù)雜性和大規(guī)模攻擊。
微軟對該攻擊進(jìn)行的內(nèi)部和外部調(diào)查中發(fā)現(xiàn),惡意軟件正在SolarWinds Orion IT管理構(gòu)建環(huán)境上運(yùn)行,并等待C#編譯器(msbuild.exe)運(yùn)行。SolarWinds Orion 是 SolarWinds 網(wǎng)絡(luò)和計算機(jī)管理工具套件的一部分,其功能包括監(jiān)視關(guān)鍵計算機(jī)何時停機(jī),并及時告知用戶,還有自動重啟服務(wù)的功能。該軟件可能會被安裝在企業(yè)最關(guān)鍵的系統(tǒng)上,會在系統(tǒng)故障時阻止工作進(jìn)程。
調(diào)查發(fā)現(xiàn),最早在2020年 3 月,有人設(shè)法在SolarWinds Orion軟件構(gòu)建過程中做了惡意修改,包括植入一個特洛伊木馬程序。因而,當(dāng)用戶安裝SolarWinds Orion最新版本時,該木馬開始在受害者的計算機(jī)上運(yùn)行,從而該計算機(jī)被遠(yuǎn)程控制。受害者直接或間接地因SolarWinds Orion 軟件被污染,這被稱為軟件“供應(yīng)鏈攻擊”。
更具體地,Orion軟件框架中含有一個SolarWinds.Orion.Core.BusinessLayer.dll文件,而該文件擁有 SolarWinds 的數(shù)字簽名,但是在攻擊中,該文件包含了一個后門,可通過 HTTP 與第三方服務(wù)器進(jìn)行通信。
植入木馬之后,會有長達(dá)兩個星期的初始休眠期,然后它會檢索并執(zhí)行稱為“Jobs”的命令,這些命令包括傳輸文件,執(zhí)行文件,對系統(tǒng)進(jìn)行文件配置,重新引導(dǎo)計算機(jī)以及禁用系統(tǒng)服務(wù)的功能。惡意軟件偽裝成 Orion 改進(jìn)程序(OIP)協(xié)議的網(wǎng)絡(luò)流量,并將偵察結(jié)果存儲在合規(guī)的插件配置文件中,使其能隱藏于常規(guī) SolarWinds 活動,不易識別,進(jìn)而使攻擊者可以遠(yuǎn)程操控計算機(jī)。
微軟發(fā)現(xiàn),即使刪除了 SolarWinds 后門,攻擊者也可能會繼續(xù)擁有整個目標(biāo)網(wǎng)絡(luò)的訪問權(quán)限。
02
應(yīng)對SolarWinds安全事件的挑戰(zhàn)
在這次SolarWinds安全事件中,被感染的二進(jìn)制文件是.Net程序集,其中包含Orion框架的許多合法名稱空間、類和方法。這樣的話,攻擊者就能將自己的代碼與合法代碼融合在一起。 如何對有效地檢測相關(guān)DLL文件這成為該檢測事件的關(guān)鍵。最直接的方法是利用二進(jìn)制代碼還原原始代碼來進(jìn)行分析,但采用二進(jìn)制代碼并將其還原為原始源代碼實際上是不可能的任務(wù),因為編譯是一個復(fù)雜的,不可逆的動作。編譯后的二進(jìn)制文件中包含不斷變化的信息,優(yōu)化和元數(shù)據(jù)。即使對相同的源代碼在不同時間對其進(jìn)行編譯,得到的二進(jìn)制文件也不會完全相同。 除了二進(jìn)制代碼還原的挑戰(zhàn)之外,CI/CD工具和方法的種類也非常廣泛。每個團(tuán)隊對這些工具的使用方式不同(每種方法以獨(dú)特的方式處理依賴關(guān)系,通用代碼和其他資源)。此外,CI/CD管道被設(shè)計為對其用戶不可見,并且?guī)缀鯊奈幢粰z查過,因此這是DevSecOps的一大盲點(diǎn)。
03
解決方案
針對SolarWinds安全事件這種情況,需要對其中的源代碼有深入的理解,利用相關(guān)技術(shù)來分析源代碼與相關(guān)的二進(jìn)制文件。Apiiro使用基于風(fēng)險的AI引擎學(xué)習(xí)了源代碼和開發(fā)人員的經(jīng)驗。在Apiiro平臺了解了所有代碼組件、安全控件、邏輯流、數(shù)據(jù)類型及其關(guān)系后,其可以其于這些知識實現(xiàn)對二進(jìn)制文件的分析。以SolarWinds安全事件中被感染的.NET二進(jìn)制文件為例,Apiiro平臺將對可執(zhí)行文件進(jìn)行解析并執(zhí)行以下操作:
1了解所有可能的邏輯流程和符號;
2 清除所有自動生成的編譯器邏輯;
3調(diào)整運(yùn)行時版本之間的預(yù)期差異;
基于此構(gòu)建了二進(jìn)制文件的標(biāo)準(zhǔn)化的實體關(guān)系, Apiiro使用圖匹配算法對比分析了源代碼與二進(jìn)制文件生成的實體關(guān)系圖,來實現(xiàn)對二進(jìn)制文件的對比分析。Apiiro還設(shè)計了有效的算法來檢測變異過程中所有可能的合規(guī)代碼的更改(AOP框架,優(yōu)化等),同時還能針對分析結(jié)果給出插入的惡意代碼的功能說明(比如配置文件更新、后門等)。
四. 總結(jié)
SDL的核心理念是將安全集成在軟件開發(fā)的每一個階段:需求分析、設(shè)計、編碼、測試和維護(hù)。從需求、設(shè)計到發(fā)布產(chǎn)品的每一個階段每都增加了相應(yīng)的安全活動,以減少軟件中漏洞的數(shù)量并將安全缺陷降低到最小程度。然而現(xiàn)有的代碼安全性、合規(guī)性工具和流程大多是手動和定期的,為了以便進(jìn)行集成控制并滿足風(fēng)險管理要求,產(chǎn)品交付過程中遇到安全的阻礙,開發(fā)流程嚴(yán)重減慢。針對這種需求,Apiiro提出了業(yè)內(nèi)首個代碼風(fēng)險平臺。Apiiro代碼風(fēng)險平臺可以幫助客戶在開發(fā)生命周期的早期進(jìn)行有效的風(fēng)險管理,實施應(yīng)用程序治理和法規(guī)遵從性,并防止針對CI/CD的高級攻擊。Apiiro會分析整個開發(fā)過程中的數(shù)據(jù),以幫助組織檢測惡意代碼,確定優(yōu)先順序并補(bǔ)救有風(fēng)險的重大變更。Apiiro通過提供跨應(yīng)用程序,基礎(chǔ)架構(gòu),開發(fā)人員的知識和業(yè)務(wù)影響的風(fēng)險可見性,幫助組織構(gòu)建應(yīng)用程序風(fēng)險計劃,具有較高創(chuàng)新性。