從 SolarWIND 事件思考供應鏈安全的脆弱環節

 

當前最駭人聽聞的 SolarWinds Orion 事件在資安界及一般大眾之間都掀起了不小的聲浪,全世界也因而更加關注所謂的供應鏈攻擊。事實上這類攻擊本身並不算新穎、也早就橫行多年。但所有攻擊都會不斷演化出更高階的手法,而軟體開發供應鏈包含了許多階段,而每個階段都可能遭到襲擊,因此更加危險。

 哪裡是脆弱的環節?

首先,我們先來為「供應鏈」下一個明確的定義,一般所謂的供應鏈是指「一套將產品提供給客戶的流程」。而本文所談是數位世界中產品、也就是軟體,所以我們先來探討軟體開發流程本身。

所有軟體開發人員,不論採用何種開發方法,都必須將一個複雜的專案拆成多個較簡單的工作項目,這樣才能將每個項目定義清楚,並且在問題追蹤系統內將工作項目指派給特定的開發者。接下來,開發者開始撰寫及測試程式碼,完成之再將修改過的程式碼傳送至原始程式碼管理系統 (Source Code Management System, 簡稱SCM)。

Figure.1
圖 1:開發流程示意圖。
繼續閱讀

駭客開始利用容器跳脫技術(Container Escapes)攻擊 Docker

微服務架構的簡易性與彈性,已使得越來越多企業機構開始採用微服務。事實上,根據一份 2019 年調查指出,89% 的技術領導人認為,微服務是企業在不斷演變的數位世界維持競爭力的必要關鍵。隨著越來越多開發人員在企業內及雲端服務內部署容器,一些關鍵資料一不小心就可能因為資安控管不良而暴露在外,成為歹徒覬覦的目標。我們持續發現各種針對微服務組態設定錯誤的攻擊,例如:在暴露在外的 Redis 執行個體當中發現虛擬加密貨幣挖礦惡意程式,以及歹徒經由 Docker Hub 社群提供容器映像來散布惡意容器。

我們曾在某起攻擊當中發現虛擬加密貨幣挖礦程式會搜尋受害的 Linux 系統上是否有其他現有的挖礦程式並將它們清除,藉此獨占所有系統運算資源。從這起攻擊就能看出歹徒對於 Docker 和 Redis 的熟悉度,他們專門蒐尋這些平台所暴露的應用程式開發介面 (API)。不過接下來我們要探討的是一個截然不同的案例,駭客精心製作了一個專門用來跳脫特權容器 (privileged container) 的惡意程式,跳脫成功之後就能取得主機電腦的所有系統管理 (root) 權限。有一點很重要且須注意的是,Docker 在預設情況下並不會自動配置特權容器,而絕大多數的 Docker 使用者所用的都不是特權容器,這也證明使用特權容器卻不知如何正確加以保護是不智之舉。

繼續閱讀

駭客開始利用容器跳脫技術(Container Escapes)攻擊 Docker

微服務架構的簡易性與彈性,已使得越來越多企業機構開始採用微服務。事實上,根據一份 2019 年調查指出,89% 的技術領導人認為,微服務是企業在不斷演變的數位世界維持競爭力的必要關鍵。隨著越來越多開發人員在企業內及雲端服務內部署容器,一些關鍵資料一不小心就可能因為資安控管不良而暴露在外,成為歹徒覬覦的目標。我們持續發現各種針對微服務組態設定錯誤的攻擊,例如:在暴露在外的 Redis 執行個體當中發現虛擬加密貨幣挖礦惡意程式,以及歹徒經由 Docker Hub 社群提供容器映像來散布惡意容器。

我們曾在某起攻擊當中發現虛擬加密貨幣挖礦程式會搜尋受害的 Linux 系統上是否有其他現有的挖礦程式並將它們清除,藉此獨占所有系統運算資源。從這起攻擊就能看出歹徒對於 Docker 和 Redis 的熟悉度,他們專門蒐尋這些平台所暴露的應用程式開發介面 (API)。不過接下來我們要探討的是一個截然不同的案例,駭客精心製作了一個專門用來跳脫特權容器 (privileged container) 的惡意程式,跳脫成功之後就能取得主機電腦的所有系統管理 (root) 權限。有一點很重要且須注意的是,Docker 在預設情況下並不會自動配置特權容器,而絕大多數的 Docker 使用者所用的都不是特權容器,這也證明使用特權容器卻不知如何正確加以保護是不智之舉。

技術層面分析


2019 年 7 月,Google Security Team 研究員 Felix Wilhelm 在 Twitter 上發文公布了一種概念驗證 (PoC) 攻擊展示如何利用  cgroups release_agent 功能就能輕而易舉跳脫一個 Docker 特權容器,或 Kubernetes Pod。

繼續閱讀

基礎架構程式碼:資安風險與如何防範?

基礎架構程式碼 (IaC) 是 DevOps 實務中實現軟體開發靈活性很重要的一環,在這份報告當中,我們點出了 IaC 實務上的一些資安風險以及對應的最佳資安實務原則。

由於 IT 基礎架構所承受的要求以及持續整合/持續交付 (CI/CD) 流程的風險不斷升高,因此,一致而可擴充的自動化顯得日形重要。這就是「基礎架構程式碼」(Infrastructure as Code,簡稱 IaC) 所扮演的角色。IaC 是一種利用機器可解讀的檔案格式來配置、設定與管理基礎架構的實務方法。有別於手動設定企業內及雲端環境的作法,系統管理員和系統架構師可透過 IaC 來將上述工作 自動化。IaC 與基礎架構服務  (Infrastructure as as Service,簡稱 IaaS) 兩者絕配,而且也廣獲眾多企業採用,不僅可 加速開發及擴充雲端環境,又能降低成本。

IaC 在概念上類似撰寫腳本來將 IT 流程自動化,不過 IaC 採用描述性語言來實現更彈性的資源配置與部署 (也就是由軟體本身來負責啟動基礎架構變更),而且 IaC 對雲端運算與 DevOps 尤其重要。

IaC 工具大致可分成兩類:一種是協調工具,用來配置、組織與管理基礎架構元件 (如 CloudFormationTerraform);另一種是組態管理工具,用來安裝、更新、管理基礎架構元件內所執行的軟體 (如 AnsibleChefPuppetSaltStack)。這類工具可讓開發人員和雲端架構師消除一些容易出錯的手動流程,讓大規模的組態設定與管理作業得以簡化。

繼續閱讀

雲端運算時代的供應鏈攻擊:風險、如何防範,以及確保後端基礎架構安全的重要

後端基礎架構是企業應細心守護的一項企業關鍵資產,因為一旦遭到入侵,很可能將引發供應鏈攻擊。

Supply Chain Attacks in the Age of Cloud Computing: Risks, Mitigations, and the Importance of Securing Back Ends
檢視「雲端運算時代的供應鏈攻擊:風險、如何防範,以及確保後端基礎架構安全的重要」。

資安是每家企業在 採用與移轉至雲端技術時都必須考量的重要一環。企業必須優先保護的資源包括:網路、端點及應用程式。此外,還有一項企業應該細心守護的關鍵資產就是後端基礎架構,因為一旦遭到入侵,很可能將引發供應鏈攻擊。

企業通常都會採用端點防護與網路防護產品來保護後端環境的伺服器以及負責儲存與處理大量寶貴資料的內部系統。為了盡可能節省成本,有些企業會將後端基礎架構移轉至雲端,或者採用雲端式解決方案在企業內架設私有雲。

不過這樣的作法要非常小心謹慎,才不會讓企業暴露在駭客攻擊的風險中,例如之前發生的多起導致營運中斷、財務損失及商譽損失的供應鏈攻擊。在「雲端運算時代的供應鏈攻擊:風險、如何防範,以及確保後端基礎架構安全的重要」(Supply Chain Attacks in the Age of Cloud Computing: Risks, Mitigations, and the Importance of Securing Back Ends) 一文當中,我們列舉了各種我們分析過的資安風險,並提出幾項防範技巧給 DevOps 參考,尤其是關於 Jenkins、Docker、Kubernetes 以及 AWS Cloud9 與 Visual Studio Codespaces 等雲端整合開發環境 (IDE)的問題。

Jenkins


後端系統的預設組態設定,即使是在認證啟用的狀況下,還是會帶來相當大的資安風險。軟體開發團隊經常用到的開放原始碼自動化伺服器 Jenkins 就被發現有這樣的風險。

繼續閱讀