Kubernetes威脅建模指南

為雲端管理員提供用Kubernetes進行容器編排時該如何制定安全策略的建議

Kubernetes是雲端環境最常用的容器編排(container orchestration)系統之一。因此跟其他被廣泛使用的應用程式一樣,它也成為吸引網路犯罪分子或其他惡意份子的誘人目標。雲端管理員在保護自己的部署時必須要特別注意三大領域的問題,因為它們可能對用Kubernetes驅動的容器化策略帶來威脅風險:

  • 外部攻擊:來自組織外部的攻擊(任何未經身份認證的攻擊都屬此類)
  • 設定不當問題:由不安全的設定所引起的問題
  • 有漏洞的應用程式:由軟體或應用程式的漏洞所引起的問題

外部攻擊

圖1秀出了Kubernetes官方文件所列出Kubernetes部署或集群(cluster)的元件。

圖1. Kubernetes元件圖

所有的通訊都是透過kube-api-server封送,這是個提供API服務的控制面板元件。它其實就是作為控制面板前端的REST API,並且可以讓使用者定義和控制所有的Kubernetes管理功能。使用API最簡單的方法是在命令列用命令kubectl(或是在OpenShift使用oc)。

如果攻擊者可以成功存取API就幾乎可以做到所有想做的事情。例如可以安裝惡意容器來從資料庫提取資訊,或使用所有的資源進行虛擬貨幣挖礦活動。

確保只有集群內的電腦以及管理集群的電腦可以存取此API,這樣有助於阻止外部攻擊者。

為了做到一點,雲端管理員需要記住kube-api-server預設會使用兩個端口:

  • 端口8080只接受來自本地主機(localhost)的連線
    • 透過此端口對API的任何請求都會繞過身份認證和授權模組。
    • 可以用–insecure-bind-address標記讓此端口接受來自其他主機的連線。
    • 可以用–insecure-port標記來變更預設端口。
  • 端口6443開放在公開IP地址上
    • 預設是第一個非localhost的網路介面,也被稱為”安全端口”。
    • 請求可以經過身份認證和授權來正確地發送。
    • 可以用–secure-port標記變更預設端口。

加強對端口8080和6443的安全防護並且注意有哪些事情不該做有助於防止入侵。

保護集群(cluster)抵禦外部攻擊的建議

  • 利用防火牆規則來確保只有需要存取API的電腦可以進行連線。
  • 不要用–insecure-bind-address選項在非本地主機開啟純文字端口。
  • 使用像趨勢科技TippingPoint Threat Protection System解決方案這樣有SSL解密功能的入侵防禦系統(IPS)能夠監控對API的進出流量來偵測零時差和已知漏洞攻擊。

不當設定的問題

Kubernetes是個複雜的系統,它提供許多設定選項帶來了相當大的靈活度。但這些設定選項需要被正確地理解且以安全的方式設置,以免集群(cluster)遭受駭客入侵破壞。

光是身份認證設定一項在Kubernetes中就已經相當複雜了,因為有許多種可用的身份認證模式(基於角色、基於屬性或基於節點)。為了幫助管理此問題,雲端管理員可以用命令kubectl auth can-i查詢特定權限。Kubernetes使用者和服務帳號應該被鎖定只用所需的權限。

我們會特別在Kubernetes強調這一方面是因為我們已經看到太多不當設定的執行實例在全世界運行著。像圖2的Shodan快速掃描結果顯示出全球大約有3,000台主機的etcd(Kubernetes使用的鍵值伺服器,因此是不該對外暴露的服務)可以被公開存取。

圖2. Shodan掃描到暴露的etcd服務(於2020年3月23日)

雲端管理員另一件需要特別注意的事情是,如果沒有為特定命名空間(namespace)指定網路政策,則預設政策是允許所有對此命名空間(namespace)內所有Pod的進出流量。每個Pod都可以跟其他Pod對話,所以當攻擊者可以進入對外開放的Pod(比方說有網頁應用程式),就可以用它來連上其他Pod。這使得在發生入侵事件時更容易進行橫向移動。

最佳做法是預設拒絕存取,除了明確允許的流量之外。至少也必須有預設政策來拒絕進入流量。雲端管理員可以用Kubernetes官方文件所提供的程式碼來建立此政策。

保護集群(cluster)防止不當設定問題的建議

  • 對所有的Kubernetes使用者和服務帳號進行徹底審核,確保只能進行必要的操作。此後要定期進行檢查以確保繼續執行。
  • 考慮用如RedHat的OpenShift這樣整合Kubernetes的版本,儘管可能會有些受限,但卻提供現成可用的安全設定,。
  • 檢視雲端服務商所提供指南內的相關說明。(根據集群被部署的地方,多數雲端服務商都有此指南)。也可以到Center for Internet Security查看CIS Kubernetes Benchmark。
  • 確保Kubernetes所用的服務都有用防火牆加以保護並且沒有對外開放。
  • 注意網路政策,預設要拒絕對內流量。

有漏洞的應用程式

就跟一般的伺服器和作業系統一樣,不管為保護Kubernetes集群付出了多少努力,它的安全等級取決於執行中和對外開放裡最脆弱的服務。容器和容器編排工具不僅有助於在異質環境中部署各種應用程式,還可以自由的排列組合使用應用程式。但它們不能解決所有的問題。事實上,容器的特性使得讓所有需要的地方保持更新變得更加困難,因為每個應用程式都有自己的一份程式庫副本。

如圖3所示,同一個程式庫可以安裝在不同基礎映像的多個映像內。而這些都需要被更新並安裝修補程式。這時候將趨勢科技Deep Security Smart check這樣的解決方案整合進DevOps流程可以有所幫助。

A picture containing text, map

Description automatically generated
A screenshot of a cell phone

Description automatically generated

圖3. 程式庫被部署到多個映像,其中許多映像使用不同基礎,可能需要接受多方更新。

保護集群(cluster)解決有漏洞應用程式的建議

透過雲端專屬防護來保護集群(cluster)

容器透過更好的流程隔離在DevOps和安全性(DevSecOps)方面向前邁進了一步。而Kubernetes這樣的容器編排工具提供了一層重要的抽象化,使其在可擴展環境中更加有用。雖然部署起來可能複雜,但按照上述步驟有助於確保雲端環境安全。如Hybrid Cloud Security(混合雲防護)趨勢科技Cloud One這樣為雲端設計的安全解決方案可以為這些執行實例帶來更加有效的保護。

Hybrid Cloud Security提供威脅防禦能力來保護執行時期(runtime)中實體、虛擬和雲端工作負載(workload)以及容器。還可以在開發階段掃描容器映像。

Cloud One,一個給雲端建構者的安全服務平台,可以為CI/CD管道和應用程式提供自動化的保護。它還可以協助更快地識別和解決安全問題,並且縮短DevOps團隊的交付時間。它包括了:

@原文出處:Guidance on Kubernetes Threat Modeling 作者:Brandon Niemczyk(雲端安全研究負責人)

暴露的 Redis 執行實例,被用來進行遠端程式碼執行跟虛擬貨幣挖礦

我們最近寫了一篇在網路上發現8,000多個沒有保護好Redis執行實例的文章。在本篇文章裡,我們會介紹這些執行實例會如何被用來進行遠端程式碼執行(RCE),就如惡意軟體在真實世界裡所做的。這些惡意程式會將Redis執行實例變成虛擬貨幣挖礦機器人,並且透過”蠕蟲”散播功能來感染其他有漏洞的執行實例。

Redis是設計使用在受信任環境並提供了保護模式設定,而且即將更新到Redis 6.0,在新版本中會導入如存取控制列表(ACL)等新的安全功能。但在目前,如果使用者的Redis執行實例沒有加上TLS加密或密碼保護,一旦攻擊者進入了環境就可以使用超過200個命令來進行攻擊。目前Redis預設並沒有身份認證。即使有設定密碼,也要確認密碼足夠強到抵抗暴力破解攻擊。

我們在蜜罐系統裡觀察到駭客使用了下列情境,這些蜜罐系統是為了吸引和監視真實攻擊而設置:

情境一:利用config命令


攻擊者用Redis資料庫檔設定多個的鍵值來成為cron任務。資料庫值遵循著cron(執行排程命令的守護程序)和crontab(用於排程執行程式的檔案)格式規範。

繼續閱讀

雲端優先,但不是只有雲端:為什麼組織需要簡化網路安全?

全球的公共雲市場在今年有望成長17%,去到2,660億美元。這數字很令人印象深刻,不管Covid-19會對宏觀經濟在短期內造成怎樣的影響,這數字都標誌著世界的發展方向。但儘管許多企業都將自己描述為“雲端優先”,但他們肯定不是“只有雲端”。混合雲已經成為今日的主角:融合了多個雲端服務和多個資料中心。

這樣新的現實在推動敏捷、差異化和增長的同時,也帶來了網路風險。當IT主管想制定方向時,會尋求更全面、更簡單的方式來管理混合雲的安全防護。

給所有人的雲端環境


可以理解組織為什麼熱衷於擁抱雲端平台。誰不想讓員工提高生產力且讓DevOps提供敏捷、以客為尊的服務?但數位轉型面臨著一連串的挑戰。轉變通常在整個組織裡以不同的速度發生。想在整個企業內獲得統一的能見度並以一致的方式管理安全策略變得很困難,尤其是當不同業務單位及部門會各自做決策時。現在估計有85%的組織使用著多個雲端平台,有76%的組織使用了2到15種混合雲服務。


為了管理這樣的複雜性,企業開始擁抱容器和無伺服器架構以更有效地開發新應用程式。但使用這些技術的DevOps團隊主要專注在產品上市時間,有時會犧牲掉安全性。使用第三方程式碼就是個典型的例子:可能讓組織陷入有缺陷甚至充滿惡意軟體的程式碼泥沼。

繼續閱讀

在雲端發現超過8,000個不安全的Redis 執行實例

趨勢科技發現有8,000個不安全Redis執行實例在世界各地運行著,有些甚至部署到公共雲上。這些Redis執行實例並未使用TLS加密也沒有密碼保護。根據開發者的說法,Redis原本是設計在受信任環境裡使用。如果放任其不受保護並允許其面向外部網路或整合進物聯網(IoT)裝置,則網路犯罪份子就能夠找到Redis伺服器並用來發動如SQL注入、跨站腳本、惡意檔案上傳甚至是遠端攻擊程式碼執行等攻擊。駭客還可以查看、存取和修改暴露Redis執行實例的儲存資料。過去曾發生過名為Fairware的假勒索病毒攻擊了被駭Linux伺服器上18,000個不安全的Redis執行實例

我們已經與Redis取得聯繫,他們分享了Redis有保護模式的配置,此配置自2017年7月發表的Redis 4.0就開始提供。同時也已經向下移植到之前的版本Redis 3.2.0。如果使用預設配置運行Redis而沒有設置密碼保護時就會進入保護模式。在此模式下,Redis只會回應來自Loopback介面的查詢,如果從其他IP地址連到Redis的客戶端則會收到錯誤訊息。這是種額外的保護措施來減少不安全Redis執行實例遭受外部網路連線的機會。但Redis警告說,儘管在保護模式下會發送錯誤訊息,系統管理員仍然可以忽略這些訊息,手動綁定所有介面,甚至完全停用保護模式。

Redis還分享了他們計劃在2020年4月發表的Redis 6.0穩定版,此版本會具備存取控制列表(ACL)和TLS,有可以顯著地提高Redis安全性。

什麼是Redis


Redis是Remote Dictionary Server的縮寫,是款熱門的開放原始碼記憶體內資料存放區,被用於資料庫、快取和訊息代理程式。因為Redis駐留在記憶體內,因此能夠為多種需要處理大量連線的應用程式(如聊天室和即時通、金融服務、醫療保健和遊戲等)提供短於毫秒的回應速度。

繼續閱讀

Raccoon浣熊病毒利用Google Cloud Services及多種派送技術竊取帳密 、信用卡等資訊

Raccoon是在2019年4月崛起的惡意軟體即服務(MaaS)。儘管Raccoon的功能簡單,但卻在網路犯罪分子之間廣為流行,且在一份惡意軟體流行度報告中被稱為地下論壇裡值得注意的新興惡意軟體。

此惡意軟體可以竊取登錄帳密、信用卡資訊、虛擬貨幣錢包及瀏覽器資訊。 Raccoon具備了基本的資訊竊取功能,而事實證明積極的行銷加上良好的整體使用者體驗足以彌補其不足之處。該服務也相對地便宜,價格從每週75美元到每月200美元不等。

它能夠利用各種交付技術(如漏洞攻擊套件、網路釣魚或和其他惡意軟體綁在一起)到達系統。我們在本文中調查了使用漏洞攻擊套件Fallout和Rig的攻擊活動,同時看到其用Google Drive作為躲避偵測的手段之一。

漏洞攻擊套件

我們在2019年7月和10月記錄到Rig漏洞攻擊套件及兩起Fallout漏洞攻擊套件案例會植入Raccoon竊取病毒。下表總結了這三起案例的感染鏈。

繼續閱讀