資安基礎觀念:採用 RASP (執行時期應用程式自我防護) 來保護無伺服器與容器應用程式

近年來,容器與無伺服器技術的需求大增。根據市場研究顧問機構指出,全球容器市場規模預計將從 2018 年的 12 億美元成長至 2023 年的 49.8 億美元,而無伺服器架構也將 從 2020 年的 76 億美元成長至 2025 年的 211 億美元。企業對容器與無伺服器技術的需求之所以成長,原因在於它們能為企業提供開發和部署應用程式時所需的擴充性、效率及成本效益。

然而,如同任何其他新興技術一樣,容器與無伺服器技術對於資安威脅和風險也同樣無法倖免。駭客為了增加受害者,隨時都在擴大攻擊範圍,因此遲早會針對這些技術開發出各式各樣的攻擊手法,並增加攻擊頻率。在這樣的情況下,企業該如何強化這類應用程式的安全以防範潛在的攻擊?

本文將探討開發人員必須知道的一些資安考量,以及如何利用所謂的執行時期應用程式自我防護 (RASP) 將資安整合至執行時期的應用程式,為容器與無伺服器應用程式提供最佳的防護。

何謂 RASP?


RASP 是一種在伺服器上執行的防護工具,每次應用程式執行時就會啟動。簡單來說,RASP 是專為即時偵測惡意行為而設計。RASP 可防止應用程式遭到攻擊,它會分析應用程式的行為及行為的情境。

RASP 的效益


本質上,RASP 能為應用程式提供執行時期防護。RASP 可攔截所有潛在的惡意流量,例如:SQL 資料隱碼攻擊 (SQL injection)、跨網站腳本攻擊 (cross-site scripting)、漏洞攻擊、殭屍網路,以及經由電子郵件、Slack 及其他訊息類型發動的攻擊。

由於 RASP 是直接內建在應用程式當中,因此能從內部監控應用程式的行為。所以,RASP 預防攻擊的準確度很高 ,因為它可輕易區分攻擊流量與合法請求之間的差別,進而降低誤判情況,如此一來,資安工程師就能專心對抗其他更嚴重的問題。

不僅如此,RASP 對於零時差漏洞攻擊的抵抗力也更好,RASP 可為一些暫時還無法套用修補更新的應用程式提供臨時的修補。同時,RASP 也不須依靠特徵碼來防範漏洞攻擊,因為它是以應用程式本身的行為當作判斷的依據。

RASP 如何保護無伺服器應用程式


為了說明 RASP 如何確保無伺服器應用程式的安全,我們將示範如何利用  Trend Micro Cloud One™-Application Security 來保護 Amazon Web Services (AWS) Lambda 的一項無伺服器功能 (AWS Lamda 是一種可讓企業不需部署和維護伺服器就能執行程式碼的無伺服器服務)。

在趨勢科技研究報告「保護無伺服器架構的弱點:風險與建議」(Securing Weak Points in Serverless Architectures: Risks and Recommendations) 一文中,趨勢科技資深資安研究員 Alfredo de Oliveira 製作了一個概念驗證範例,使用一個具備高級權限的 AWS Lambda 功能來示範撰寫不良的程式碼在無伺服器系統上將帶來什麼風險。在這樣的條件下,駭客可篡改 Lambda 功能的逾時設定然後再發動各種攻擊,包括:提升權限以及將資料外傳。值得注意的是,在這個概念驗證範例中,我們將 Lambda 設定成擁有系統管理權限。在預設情況下,Lambdas「不會」擁有客戶指定之外的權限。有鑑於此,客戶在定義一個執行角色時,應採取最低授權原則,不該開放的權限就不要開放。

圖 1 示範駭客如何攻擊一個具備高級權限的 AWS Lambda 功能 (如前段文字說明)。請注意:Cloud One – Application Security 的程式庫已經預先安裝在系統內。

圖 1:經由某個高級權限的 AWS Lambda 功能發動攻擊的過程。

如圖 2 所示,Cloud One – Application Security 主控台攔截了駭客的指令注入攻擊。

圖 2:Cloud One – Application Security 主控台偵測到指令注入攻擊。
圖 3:Cloud One – Application Security 主控台還提供了可疑攻擊的描述、相關 CVE 以及惡意檔案資訊。

前述趨勢科技研究報告也指出,無伺服器應用程式開發所用到的雲端服務同樣也需要獲得妥善防護。如圖 4 所示, Trend Micro Cloud One™ Conformity 能夠防止權限過大的 IAM 角色在系統內執行。

圖 4:權限過大的 IAM 角色遭 Cloud One – Conformity 攔截,無法在系統內執行。

RASP 如何保護容器

本節將示範如何防止一個在 Azure Container Instances 上執行的容器應用程式遭 SQL 資料隱碼攻擊,如趨勢科技解決方案架構師 Chuck Losh 在一篇LinkedIn 文章所指出。 

首先,必須先啟動一個部署環境,然後從一個私有 Azure Container Registry 當中取出一個 DVWA 映像,此映像內含一個刻意保有 PHP 漏洞的容器。在這項測試中,Cloud One – Application Security 程式庫已預先安裝在系統內 (如圖 5 所示)。

圖 5:容器映像的程式碼中已經包含 Cloud One – Application Security 的程式庫。

當此部署環境經由 Azure 入口網站執行之後 (如圖 6) 我們就會看到一切是否按照預期方式運作。在最後結果中,應用程式會呼叫 Cloud One – Application Security 儀表板來獲得即時防護。

圖 6:經由 Azure 入口網站執行的容器映像。

在設定好組態需求之後,容器的執行個體應該就會開始執行。這一點可透過 Azure 入口網站的輸出來確認,如圖 7 所示。

圖 7:Azure 入口網站顯示容器部署環境已經在執行當中。

 

圖 8:若要進一步檢查容器執行個體是否正在運作,可檢視 Azure CLI 的輸出結果。

現在可以開啟測試用的網站應用程式。在登入 DVWA 容器的網站應用程式之後,我們將發送一段 SQL 資料隱碼攻擊,如圖 9 所示。接下來,我們可檢查 Cloud One – Application Security 主控台是否偵測到這次的惡意行為。

圖 9:發送 SQL 資料隱碼攻擊至容器應用程式。

如圖 10 所示,這項惡意的請求已被 Cloud One –Application Security 主控台即時偵測並加以攔截。

圖 10:Cloud One – Application Security 偵測到 SQL 資料隱碼攻擊。

如何將 RASP 自動化

保護無伺服器應用程式更有效的一種方法,就是將 RASP 自動化。AWS Lambda 功能範本 (如  CloudFormation) 當中即含有必要的 RASP 元素可讓 Cloud One – Application Security 與 AWS Lambda 整合。

只要透過一個 CFN 範本來提供這些資訊,開發團隊就能安心起動一個 AWS Lambda 功能並確保應用程式本身即具備資安防護,這樣做的好處是還可減少前述流程的手動步驟。

結論

RASP 是一種讓企業將資安流程提前的工具,這樣的作法相當重要,可讓開發人員 在管理機密與開發安全程式碼時套用一些可靠、熟悉的原則。

另一方面,儘管有人正大力提倡 RASP 這類全新資安技術的優點,但仍有一些死守傳統流程的人會抱持懷疑的心態而抗拒這些改變。不過,如果企業可以廣納各方意見好好溝通,讓每個團隊及部門都能破除己見 ,應該就能消除疑慮,共同努力建立強而有力的開發資安營運 (DevSecOps) 文化。此外,開發與資安團隊若能隨時做好軟體測試、防護整合以及營運可視性,也能進一步強化這樣的文化。

Trend Micro Cloud One

儘管所有雲端服務供應商 (CSP) 都會提供一些規範和防護功能來確保其服務的安全,但企業仍應自己確定其運算環境所連接的服務安全無虞。

落實責任共同分擔的架構是確保這些服務安全無虞的關鍵,因為 CSP 與使用者都必須一肩扛起自己該負的責任,才能維護運算環境的整體安全。針對 AWS Lambda 部分,企業應該注意的是執行角色只能在使用者定義的權限下才能啟動。所以,客戶在定義一個執行角色時,應該採取最低授權原則,不該開放的權限就不要開放。

採用專為雲端設計的資安解決方案有助於維護雲端原生系統及各層次的安全,例如 趨勢科技 Hybrid Cloud Security(混合雲防護) ,該產品是以Trend Micro Cloud One™ 這套專為雲端開發人員設計的防護服務平台為基礎,能為 CI/CD 流程及應用程式提供自動化防護。此外,也有助於提早發掘及解決資安問題,加速 DevOps 團隊的應用程式交付時程。此服務包含以下內容:

此外,企業也可採用 Trend Micro Cloud One 防護服務平台。Cloud One 能為企業的混合雲環境提供集中的可視性以及即時的資安防護,該平台包括以下各項自動化且彈性的服務:

  • Application Security:這是一套內嵌式防護架構,能主動偵測威脅並保護應用程式與 API,支援容器、無伺服器以及其他雲端運算平台。
  • Cloud Conformity:可根據產業規範及雲端最佳實務原則來執行數百項自動化檢查,提升雲端基礎架構的安全與合規狀態。
  • Container Security:可偵測容器映像當中是否含有威脅、漏洞及暴露在外的機敏資料 (如 API 金鑰和密碼)。
  • Workload Security:可利用虛擬修補技術自動保護老舊系統,並藉由機器學習 (ML) 技術保護雲端工作負載,對抗不斷演變的威脅。
  • File Storage Security:可藉由惡意程式掃描及客製化流程整合來保護雲端原生應用程式架構上的雲端檔案/物件儲存服務。
  • Network Security:可保護虛擬私有雲 (VPC),攔截攻擊和威脅,偵測駭客滲透攻擊。

原文出處:Security 101: Protecting Serverless and Container Applications with RASP (Runtime Application Self-Protection)