隨著雲端服務的普及率不斷成長,企業機構務必了解如何保護自己的雲端環境。這份研究探討了一些雲端經常遭遇的威脅,提供具體的分析建議來讓企業機構更了解該如何因應這些威脅。
雲端 的普及率正在穩定持續成長,不僅小型企業紛紛尋找更具成本效益的方案來取代實體 IT 基礎架構,就連大型企業也希望能善用雲端的彈性效益。但企業卻因而面臨了一項挑戰 (尤其是剛開始移轉至雲端的企業),也就是不熟悉雲端的運作方式以及雲端與純企業內環境的差異。企業的雲端通常不只由單一環境所構成,而是結合了各種不同的服務供應商,而且經常還保留了實體資料中心。
類似的挑戰也出現在企業資安方面,有些資安風險來自於雲端部署環境的防護不足,有些則是因為不夠熟悉雲端服務的組態設定細節所引起。雲端工作負載或雲端應用程式可能因為各種原因而暴露於駭客攻擊的風險當中,包括:組態設定錯誤、技術使用不當、缺乏雲端系統相關的操作和防護經驗,有時甚至單純只是因為開發人員或雲端工程師的疏失。雲端系統的各項元件在許多方面都環環相扣,因此不易釐清明確的潛在攻擊途徑。對於才剛開始駕馭雲端平台及服務的 IT 人員來說,資安可說是一項艱難的任務。
在一份名為「解構錯綜複雜的雲端資安威脅」(Untangling the Web of Cloud Security Threats) 的白皮書中,我們列舉了一些企業在移轉至雲端或採用雲端服務之後可能遭遇的威脅和風險。我們發現,不論是哪一種雲端服務或平台,雲端資安最主要的問題之一就是組態設定錯誤,此問題不論是訂閱雲端服務的企業或是使用雲端式軟體的使用者都會受到影響。
可公開寫入的 Amazon S3 儲存貯體 (Bucket)
Amazon Web Services (AWS) 是當今雲端產業的龍頭之一,提供了多樣化的產品。在所有 AWS 產品當中,最熱門的莫過於 Amazon Simple Storage Service (Amazon S3),一些全球知名的企業如 Netflix、Reddit 和 Pinterest 皆採用此儲存服務。
在我們研究 Amazon S3 儲存貯體 (Bucket) 的過程中發現到一種普遍的現象就是,許多企業機構的儲存貯體是設定成可公開寫入的狀態。像這樣的組態設定錯誤,會讓未經授權的使用者也能寫入儲存貯體。洛杉磯時報 (L.A.Times) 就曾發生過一個知名案例,該報之前有某個網路存取控管名單 (ACL) 竟然允許任何人都能寫入其兇殺案網站所使用的儲存貯體。駭客因而在其網站的 JavaScript 程式碼當中插入虛擬加密貨幣挖礦程式。
此外,根據趨勢科技 Smart Protection NetworkTM 全球威脅情報網從 Akamai 蒐集到的監測資料也顯示,2019 年發生了多起因儲存貯體設定成可公開寫入而使得網站遭到攻擊的案例,有些攻擊在網站上插入了惡意程式碼,有些則是外洩了網站表單上的資料。另一個我們發現的問題是有些 Amazon S3 儲存貯體內竟然含有惡意檔案,其中有許多儲存貯體是使用舊式傳統路徑名稱來指定,換句話說,就是這些儲存貯體是使用通用的 Amazon S3 主機名稱,而非使用虛擬主機指定方式,也就是將儲存貯體名稱包含在主機名稱內。
這樣的作法會造成資安過濾上的困難,因為如果為了攔截某個惡意網站而擋掉某個以路徑方式指定的主機名稱,就會連同一些非惡意的網站也擋掉。
雲端第二項最重要的服務就是運算服務,而目前最夯的是 容器技術。除了雲端本身之外,容器近幾年來的普及率也相當高。Docker、Kubernetes 和 AWS Lambda 之類的軟體都在促進容器技術的發展,為希望簡化開發營運的企業提供了輕量化、高效率的雲端部署模式。不過,組態設定上的疏失和錯誤卻也相當普遍,駭客因而有機可乘,透過這些組態設定錯誤來入侵系統。
Docker
目前 Docker 使用者最苦惱的問題就是暗藏虛擬加密貨幣挖礦程式的不肖容器氾濫,其原因通常是因為 Docker 容器暴露在網際網路上所引起。這些挖礦程式會讓被感染的系統效能嚴重受到影響,如果容器是使用會自動擴充的雲端運算實體,甚至會因為 CPU 異常滿載而使得費用增加。
駭客有許多技巧可以將挖礦程式注入暴露在外的 Docker 伺服器。最簡單的方式就是直接使用含有挖礦程式碼的映像來安裝挖礦程式。另一個常見的手法是經由像 Ubuntu 這類流通廣泛的基底映像,在開機階段安裝挖礦程式。
AWS Lambda
AWS Lambda 屬於無伺服器事件導向流程,可為一些不常用到的應用程式提供兼具輕量化與成本效益的解決方案。人們對於 Lambdas 經常有個錯誤的迷思就是駭客無法直接取得其功能名稱,因此不會遭到攻擊。這項迷思經常導致功能在實作時缺乏適當的安全認證機制。
但其實駭客是有辦法透過各種管道找到 Lambda,例如:監聽網路流量,或者檢視網站的原始程式碼來找出網站是否使用了 Lambda 以及 API 閘道。因此,如果 Lambda 缺乏安全認證機制,就有可能導致敏感資訊洩漏。
除此之外,隨開發人員撰寫程式的方式而定,許多以 Python 開發的 Lambda 功能在收到錯誤的輸入參數時,都會列出堆疊追蹤資料,這就使得駭客有辦法掌握一些 Lambda 建置環境的技術細節。
Kubernetes
Kubernetes 是一個開放原始碼容器協調平台,用來管理容器工作負載。2019 年 1 月,我們透過 Shodan 搜尋引擎在網際網路上找到了 32,000 個暴露在外的 Kubernetes 伺服器。如同其他組態設定錯誤問題一樣,任何 Kubernetes 服務或其中的元件如果暴露在網路上可供大眾存取,那就可能遭到惡意攻擊。
Kubelet
Kubernetes 使用一種名為「Kubelet」的次級元件 API 來管理每個節點內的容器。Kubelet 對外的連接埠位於 10255 (資料埠) 和 10250 (控制埠)。這兩個連接埠都有遭到攻擊的可能,儘管控制埠 (10250) 遭到攻擊的情況顯然較為常見 (例如被用來安裝虛擬加密貨幣挖礦程式),但資料埠 (10255) 若遭到攻擊卻可能造成敏感資料外洩。
etcd
Etcd 是一個分散式複製「機碼/數值」組合儲存庫,這是 Kubernetes 的主要資料儲存庫 (datastore),負責保存 Kubernetes 安裝環境的組態設定,以及提供服務搜尋所需的後端儲存。除了 Kubernetes 之外,其他應用程式如 CoreDNS 和 Rook 也會用到 etcd。由於 etcd 扮演的是資料儲存庫的角色,因此如果暴露在外的話很可能會讓敏感資料外洩,包括:伺服器和應用程式所使用的登入憑證。我們透過 Shodan 搜尋引擎在網路上發現了 2,400 個暴露在外的 etcd 伺服器,意味著有一些 Kubernetes 和其他軟體暴露在網路上。
登入憑證管理不當
登入憑證是雲端運算最重要但卻經常遭到忽視的一個環節。由於企業無法像保護資料中心那樣採取實體安全措施來保護雲端系統,因此登入憑證的安全性便顯得格外重要。保護登入憑證的挑戰之一,就是許許多多需要存取資料和其他資源的流程都需要安全認證。這表示使用者務必妥善保管資料和登入憑證以防止外洩。
程式設計師經常犯的一個錯誤就是不小心將登入憑證儲存到 GitHub 這類公開的儲存庫當中。網路上分享的程式碼片段經常可以看到像 API 金鑰這樣的敏感資料,讓歹徒有機會盜取登入憑證對應的使用者帳號。而被盜的帳號還可進一步用於各種不當用途,例如:竊取客戶資料然後拿去地下市場販售。
還有一個問題是,我們發現許多經驗不足的程式設計師經常被一些錯誤的雲端教學所誤導,直接將登入憑證寫死在程式碼當中。這樣一來,萬一程式被發佈到公開的儲存庫,那麼任何人都能輕易取得這個登入憑證。
隨著雲端服務日益普及,企業機構必須徹底了解自己將面臨何種資安威脅,並且做好萬全的準備來確保雲端系統的安全。如果沒有嚴密的安全措施,雲端的效益就無法徹底實現。這份研究報告所分析的威脅雖未涵蓋雲端所有潛在的威脅和風險,但卻已囊括了最重要的一些問題。這對需要了解雲端架構以及擬定雲端防護策略的企業 IT 和資安人員來說,尤其重要。
請閱讀我們的「解構錯綜複雜的雲端資安威脅」(Untangling the Web of Cloud Security Threats) 白皮書,這報告深入分析了本文探討的各項威脅並提供您如何防範的建議。