RSA創新沙盒盤點 | Apiiro——程式碼風險平臺

綠盟科技發表於2021-05-16

RSAConference2021將於舊金山時間5月17日召開,這將是RSA大會有史以來第一次採用網路虛擬會議的形式舉辦。大會的Innovation Sandbox(沙盒)大賽作為“安全圈的奧斯卡”,每年都備受矚目,成為全球網路安全行業技術創新和投資的風向標。

 

前不久,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共同投資。

RSA創新沙盒盤點 |  Apiiro——程式碼風險平臺

圖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是微軟提出的從安全形度指導軟體開發過程的管理模式,在傳統軟體開發生命週期的各個階段增加了一些必要的安全活動,軟體開發的不同階段所執行的安全活動也不同,每個活動就算單獨執行也都能對軟體安全起到一定作用。當然缺少特定的安全活動也會對軟體的安全性帶來影響。

RSA創新沙盒盤點 |  Apiiro——程式碼風險平臺

圖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流程門控,每個流程門控都獨立於其他功能執行,不同應用的安全程式完全不一樣。

RSA創新沙盒盤點 |  Apiiro——程式碼風險平臺

圖3 SDLC 過程門控

 

在大多數情況下,通常是檢測每個門控而不是檢視所有開發階段的上下文。很多漏洞的產生都是各種程式碼與配置的變更導致的,因此需要設計到開發再到生產的各個階段都需要考慮。因此,僅僅針對某一個階段從單一維度無法提供完全的視角與上下文關係。與其關注漏洞的風險,不如關注業務的實際風險,這就需要對上下文有廣泛的瞭解。可以對不同型別的風險維度進行如下分類:

RSA創新沙盒盤點 |  Apiiro——程式碼風險平臺

圖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中為安全運營中心觸發警報。

RSA創新沙盒盤點 |  Apiiro——程式碼風險平臺

圖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透過提供跨應用程式,基礎架構,開發人員的知識和業務影響的風險可見性,幫助組織構建應用程式風險計劃,具有較高創新性。

 

    ·    參考文獻    ·    

 

1 http://blog.nsfocus.net/sdl/.

2 https://blog.apiiro.com/introducing-apiiro-reinventing-secure-development-lifecycle.

3 https://blog.apiiro.com/code-risk-is-multi-dimensional.

4 https://blog.apiiro.com/detection-and-prevention-of-malicious-commits-to-the-php-code-repository.

5 https://blog.apiiro.com/detect-and-prevent-the-solarwinds-build-time-code-injection-attack.

相關文章