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