Docker Content Trust (DCT) 功能解說與它如何保護容器映像

您的容器映像值得信賴嗎?看看 Docker Content Trust (DCT) 內容信賴功能如何將數位簽章運用於容器映像驗證以及管理可信賴內容


「映像是否值得信賴?」以容器建構的系統,其最重要一項必須解決的資安問題就是:驗證您所使用的容器是否正確,以及是否來自安全來源 (或者是否已遭惡意篡改)。根據我們的 2020 年 資安預測指出,惡意的容器映像一旦進入企業,很可能對企業造成危害。我們也曾撰文指出某些攻擊會利用不肖的容器映像來從事惡意活動,例如: 掃描網路上含有漏洞的伺服器挖礦( coinmining )

為了解決這項問題,Docker 推出了一項名為「內容信賴」(Content Trust) 的功能。此功能讓使用者能安心將映像部署至叢集 (Cluster) 或群集 (Swarm),並驗證是否為您原本想要的映像。不過 Docker Content Trust (DCT) 沒辦法做到持續監控您映像在 swarm 內所發生的變更或任何類似狀況。它單純只是一種由 Docker 用戶端 (而非伺服器) 所做的一次性檢查。

這一點對於 DCT 作為一種全時一致性監控系統的實用性有很大問題。趨勢科技在先前一篇有關雲端原生系統的一文當中提到可以使用像 Notary 這類映像簽署工具來解決「映像是否值得信賴」的問題。DCT 正是試圖提供一個內建工具讓 Docker 用戶端能做到這點。

本文將探討四個主題:

  • DCT 如何運作?
  • 如何啟用 DCT?
  • 如何在持續整合/持續部署 (CI/CD) 的流程當中將信賴驗證步驟自動化?
  • 此功能有何限制?

本文的另一個目的是提供一份完整教學來讓您了解如何輕鬆安裝及測試 DCT,因為現有的文件似乎相當零散稀少。

繼續閱讀

暴露在外的 Docker 伺服器遭駭客植入挖礦程式與 DDoS 殭屍病毒

駭客持續鎖定 Docker 容器環境,趨勢科技最近發現了一起網路攻擊會在使用Alpine Linux 建立的映像產生的 Docker 容器內植入虛擬加密貨幣挖礦程式與 DDoS 殭屍病毒。

暴露在外的 Docker 伺服器遭駭客植入挖礦程式與 DDoS 殭屍病毒

駭客持續鎖定 Docker 容器環境,我們最近發現了一起網路攻擊會在使用Alpine Linux 建立的映像產生的 Docker 容器內植入虛擬加密貨幣挖礦程式與分散式阻斷服務 (DDoS) 殭屍病毒。趨勢科技今年五月也曾經通報過類似的攻擊案例,在上次的攻擊案例中,駭客建立了一個 惡意的 Alpine Linux 容器,然後在裡面暗藏惡意挖礦程式與 DDoS 殭屍病毒。

感染程序分析


最近這一次攻擊,駭客會先連線至暴露在網路上的 Docker 伺服器,然後在伺服器上建立並執行一個 Docker 容器,接著在 Docker 容器內執行圖 1 當中的指令。

A code snippet of the command that is executed on the Docker container
圖 1:駭客在 Docker 容器內執行的指令。
繼續閱讀

為何在 Docker 中執行特權容器不是個好主意?

所謂的特權容器 (privileged container),簡而言之就是 Docker 環境中擁有主機完整系統權限 (root) 的容器,它可存取一般容器無法存取的資源。特權容器的用途之一,就是在 Docker 容器當中執行另一個 Docker daemon;另一個用途就是當容器需要對硬體進行直接存取時。原本,在 Docker 中執行 Docker (也就是所謂的 Docker-in-Docker) 的用意是為了開發 Docker 本身。但今天,特權容器已經出現各種不同的使用情境,例如在開放原始碼自動化伺服器 Jenkins 當中將持續整合/持續交付 (CI/CD) 工作自動化。然而,執行特權容器卻可能帶來安全上的疑慮。以下我們將詳細說明,執行一個擁有特權但卻不安全的容器,如何讓網路犯罪集團有機會在企業的系統當中植入後門。

特權容器的問題

一般來說,使用 Docker-in-Docker 是為了在現有容器當中再執行另一個容器。不過,使用一個缺乏安全的特權容器,可能會引發一些嚴重問題。

繼續閱讀

何謂容器(Container)?

什麼是「容器 (Container) 」? 「容器 (Container)? 」 是一個軟體單元,裡面包含了所有讓應用程式在各種不同環境 (如不同電腦硬體、基礎架構或雲端環境) 都能順利執行的必要元素,包括:程式碼、執行時期環境、系統工具、系統程式庫、軟體相依性等等。

採用容器,讓軟體開發更加方便。傳統上,一個軟體要從某個運算環境移植到另一個運算環境上執行,會遭遇許多困難。例如,當底層支援的軟體環境不同時,就可能帶來許多挑戰。而容器之所以能解決此問題,就是因為容器將所有必要的元素全部包裝在一起。如此一來,就能消除底層作業系統和基礎架構差異性所帶來的問題,因為容器執行時期環境已抽離這些差異性。

什麼是容器映像(container image)?

容器映像 (container image) 包含了可執行程式碼、支援程式庫、運算要求條件,以及在某種 IT 基礎架構上運作一個執行程序所需的其他物件。每個容器都需要載入一個容器映像來執行。

繼續閱讀

AESDDoS 殭屍網路變種,經由暴露在外的 Docker API 滲透容器

AESDDoS 殭屍網路變種,經由暴露在外的 Docker API 滲透容器

組態設定錯誤的問題早已不是新聞,不過對網路犯罪集團來說,這類問題卻是他們入侵企業電腦資源以從事惡意活動的一項有效管道,同時也是資安的首要問題之一。在這篇文章,我們將詳細說明 Docker Engine-Community 這套熱門的開放原始碼 DevOps 工具如何因為組態設定上的錯誤,而讓駭客滲透到容器內部並執行 Linux 殭屍網路惡意程式 AESDDoS 的某個變種 (趨勢科技命名為 Backdoor.Linux.DOFLOO.AA,我們是經由誘捕網路所發現)。

在容器主機上運作的 Docker API 可讓主機接收所有容器相關的指令,然後交由具備系統管理 (root) 權限執行的容器引擎來執行。如果這些 API 的連接埠因為蓄意或組態設定上的錯誤而提供給外部存取,就可能讓駭客有機會掌控主機,在主機上的容器內植入惡意程式,然後從遠端存取使用者的伺服器與硬體資源。先前,我們曾見過暴露在外的 Docker 主機遭歹徒植入虛擬加密貨幣挖礦惡意程式

[延伸閱讀:Container Security: Examining Potential Threats to the Container Environment]

攻擊方式

在這項新的攻擊中,歹徒會先從外部掃瞄某個 IP 範圍的主機,發送 TCP SYN 封包到連接埠 2375,這是 Docker 引擎接收通訊的預設連接埠。一旦找到有效的連接埠,歹徒就會試圖建立連線來尋找運作中的容器。一旦找到,就會利用 docker exec 指令在容器內植入 AESDDoS 殭屍病毒,讓駭客經由指令列存取該主機上所有可存取的執行中容器。如此一來,惡意程式就能在運作中的容器內執行並隱藏蹤跡。

繼續閱讀