Docker 安全性非事件


此頁面列出 Docker 已緩解的安全性漏洞,使得在 Docker 容器中執行的程序永遠不會受到錯誤的影響,即使在錯誤修復之前也是如此。這假設容器在沒有新增額外功能或未以 `--privileged` 方式執行的情況下運行。

以下列表並非完整列表。相反地,它是我們實際注意到的一些已吸引安全審查和公開披露漏洞的範例。實際上,未報告的錯誤很可能遠遠超過已報告的錯誤。幸運的是,由於 Docker 透過 AppArmor、Seccomp 和移除功能來預設安全的方法,它可以有效地緩解未知錯誤,就像緩解已知錯誤一樣。

已緩解的錯誤

  • CVE-2013-1956, 1957, 1958, 1959, 1979, CVE-2014-4014, 5206, 5207, 7970, 7975, CVE-2015-2925, 8543, CVE-2016-3134, 3135, etc.: The introduction of unprivileged user namespaces lead to a huge increase in the attack surface available to unprivileged users by giving such users legitimate access to previously root-only system calls like mount(). All of these CVEs are examples of security vulnerabilities due to introduction of user namespaces. Docker can use user namespaces to set up containers, but then disallows the process inside the container from creating its own nested namespaces through the default seccomp profile, rendering these vulnerabilities unexploitable.
  • CVE-2014-0181CVE-2015-3339CVE-2014-4699CVE-2014-9529: 一系列精心設計的 `keyctl()` 呼叫可能導致核心 DoS / 記憶體損毀。Docker 使用 Seccomp 停用容器內的 `keyctl()`。
  • CVE-2015-3214, 4036: 這些是常見虛擬化驅動程式中的錯誤,可能會允許客體作業系統使用者在主機作業系統上執行程式碼。利用這些錯誤需要在客體中存取虛擬化裝置。Docker 在沒有 --privileged 的情況下執行時,會隱藏對這些裝置的直接存取。有趣的是,這些情況似乎是容器比虛擬機器「更安全」,這與虛擬機器比容器「更安全」的普遍看法相反。
  • CVE-2016-0728: 由精心設計的 keyctl() 呼叫引起的釋放後使用可能會導致權限提升。Docker 使用預設的 seccomp 設定檔在容器內停用 keyctl()
  • CVE-2016-2383CVE-2016-313449974998CVE-2015-32905157CVE-2016-5195

    編輯此頁面 要求變更