Docker 安全性公告

Docker Desktop 4.34.2 安全性更新:CVE-2024-8695 和 CVE-2024-8696

上次更新日期:2024 年 9 月 13 日

Cure534.34.2CVE-2024-8695 :在 4.34.2 之前的 Docker Desktop 中,惡意擴充功能可能會濫用透過精心製作的擴充功能說明/變更記錄進行遠端程式碼執行 (RCE) 的弱點。[嚴重]

  • CVE-2024-8696 :在 4.34.2 之前的 Docker Desktop 中,惡意擴充功能可能會濫用透過精心製作的擴充功能發行者網址/其他網址進行遠端程式碼執行 (RCE) 的弱點。[高]
  • 在擴充功能市集中未發現任何利用這些弱點的現有擴充功能。Docker 團隊將密切監控並仔細審查任何發佈新擴充功能的請求。

    我們強烈建議您更新至 Docker Desktop 4.34.2 。如果您無法立即更新,可以 停用 Docker 擴充功能 作為因應措施。

    強制執行 SSO 時,CLI 上的密碼登入將被棄用

    上次更新日期:2024 年 7 月

    強制執行 SSO 首次推出時,Docker 提供了一個寬限期,允許在向 Docker Hub 驗證時繼續在 Docker CLI 上使用密碼。允許這樣做是為了讓組織更容易使用 SSO 強制執行。建議設定 SSO 的管理員鼓勵使用 CLI 的使用者改用個人存取權杖 (PAT),以因應此寬限期結束。

    2024 年 9 月 16 日,寬限期將結束,當強制執行 SSO 時,密碼將無法再透過 Docker CLI 向 Docker Hub 進行驗證。受影響的使用者必須改用 PAT 才能繼續登入。

    在 Docker,我們希望為我們的開發人員和組織提供最安全的體驗,而這次的淘汰是朝這個方向邁出的重要一步。

    Docker 安全性公告:runc、BuildKit 和 Moby 中的多個弱點

    上次更新日期:2024 年 2 月 2 日

    Docker 優先考慮軟體的安全性和完整性,以及使用者的信任。Snyk Labs 的安全研究人員在容器生態系統中發現並回報了四個安全漏洞。其中一個漏洞,CVE-2024-21626,與 runc 容器執行階段有關,其他三個則影響 BuildKit(CVE-2024-23651...CVE-2024-23652...CVE-2024-23653...)。我們向社群保證,我們的團隊正與回報者和開源維護者合作,努力協調和實施必要的修復措施。

    我們致力於維持最高的安全標準。我們已於 1 月 31 日發布了 runc、BuildKit 和 Moby 的修補版本,並於 2 月 1 日發布了 Docker Desktop 的更新,以解決這些漏洞。此外,我們最新的 BuildKit 和 Moby 版本包含了針對 CVE-2024-23650...CVE-2024-24557... 的修復,這些漏洞分別由一位獨立研究人員和 Docker 的內部研究計畫發現。

    受影響的版本
    runc<= 1.1.11
    BuildKit<= 0.12.4
    Moby (Docker Engine)<= 25.0.1 以及 <= 24.0.8
    Docker Desktop<= 4.27.0

    如果我使用受影響的版本,該怎麼辦?

    如果您使用的是受影響的 runc、BuildKit、Moby 或 Docker Desktop 版本,請務必更新至下表中連結的最新版本。

    已修補版本
    runc>= 1.1.12
    BuildKit>= 0.12.5
    Moby (Docker Engine)>= 25.0.2... 以及 >= 24.0.9...
    Docker Desktop>= 4.27.1

    如果您無法立即更新至未受影響的版本,請遵循以下最佳實務來降低風險:

    • 僅使用受信任的 Docker 映像(例如 Docker 官方映像)。
    • 不要從不受信任的來源或不受信任的 Dockerfile 建置 Docker 映像。
    • 如果您是使用 Docker Desktop 的 Docker Business 客戶,且無法更新至 v4.27.1,請務必啟用 強化 Docker Desktop 功能,例如:
    • 對於 CVE-2024-23650、CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653,避免使用來自不受信任來源的 BuildKit 前端。前端映像通常在 Dockerfile 中指定為 #syntax 行,或在使用 `buildctl build` 命令時使用 `--frontend` 旗標指定。
    • 為了減輕 CVE-2024-24557 的影響,請確保在建置映像時使用 BuildKit 或停用快取。從 CLI 可以透過 `DOCKER_BUILDKIT=1` 環境變數(如果已安裝 buildx 外掛程式,則 Moby >= v23.0 的預設值)或 `--no-cache` 旗標來完成。如果您直接或透過客戶端使用 HTTP API,則可以透過將 /build API 端點... 的 `nocache` 設定為 `true` 或將 `version` 設定為 `2` 來完成。

    技術細節和影響

    CVE-2024-21626(高)

    在 runc v1.1.11 和更早版本中,由於某些檔案描述符洩漏,攻擊者可以透過使新產生的容器行程(來自 `runc exec`)在主機檔案系統命名空間中具有工作目錄,或者透過誘騙使用者執行惡意映像並允許容器行程透過 `runc run` 存取主機檔案系統來存取主機檔案系統。這些攻擊也可以修改為覆蓋半任意的主機二進位制檔案,從而允許容器完全逃逸。請注意,當使用更高級別的執行階段(例如 Docker 或 Kubernetes)時,可以透過執行惡意容器映像(無需額外設定)或在啟動容器時傳遞特定的 workdir 選項來利用此漏洞。在 Docker 的情況下,也可以從 Dockerfile 中利用此漏洞。

    此問題已在 runc v1.1.12 中修復。

    CVE-2024-23651(高)

    在 BuildKit <= v0.12.4 中,兩個並行執行的惡意建置步驟共用相同的具有子路徑的快取掛載可能會導致競爭條件,從而導致建置容器可以存取主機系統中的檔案。僅當使用者嘗試建置惡意項目的 Dockerfile 時才會發生這種情況。

    此問題已在 BuildKit v0.12.5 中修復。

    CVE-2024-23652(高)

    在 BuildKit <= v0.12.4 中,惡意的 BuildKit 前端或使用 `RUN --mount` 的 Dockerfile 可以欺騙移除為掛載點建立的空檔案的功能,從而從主機系統中移除容器外部的檔案。僅當使用者使用惡意的 Dockerfile 時才會發生這種情況。

    此問題已在 BuildKit v0.12.5 中修復。

    CVE-2024-23653(高)

    除了將容器作為建置步驟執行之外,BuildKit 也提供 API 來執行基於建置映像檔的互動式容器。在 BuildKit <= v0.12.4 中,可以使用這些 API 要求 BuildKit 以提升的權限執行容器。通常,只有在 buildkitd 設定啟用特殊 security.insecure 授權,並且初始化建置請求的使用者允許的情況下,才允許執行此類容器。

    此問題已在 BuildKit v0.12.5 中修復。

    CVE-2024-23650 (中等)

    在 BuildKit <= v0.12.4 中,惡意的 BuildKit 用戶端或前端可以製作一個請求,導致 BuildKit 守護程式因 panic 而當機。

    此問題已在 BuildKit v0.12.5 中修復。

    CVE-2024-24557 (中等)

    在 Moby <= v25.0.1 和 <= v24.0.8 中,如果映像檔是從頭開始建置 (FROM scratch),則傳統建置器快取系統容易受到快取污染。此外,對某些指令(最重要的是 HEALTHCHECKONBUILD)的更改不會導致快取失效。了解某人正在使用的 Dockerfile 的攻擊者可以透過讓他們提取一個特製的映像檔來污染他們的快取,該映像檔將被視為某些建置步驟的有效快取候選。

    此問題已在 Moby >= v25.0.2 和 >= v24.0.9 中修復。

    Docker 產品如何受到影響?

    Docker Desktop

    Docker Desktop v4.27.0 及更早版本受到影響。Docker Desktop v4.27.1 於 2 月 1 日發布,其中包含 runc、BuildKit 和 dockerd 二進制檔的修補程式。除了更新到這個新版本之外,我們鼓勵所有 Docker 使用者謹慎使用 Docker 映像檔和 Dockerfile,並確保在建置中僅使用受信任的內容。

    與往常一樣,您應該在更新之前檢查 Docker Desktop 系統需求是否符合您的作業系統(WindowsLinuxMac),以確保完全相容。

    Docker Build Cloud

    任何新的 Docker Build Cloud 建置器執行個體都將使用最新的 Docker Engine 和 BuildKit 版本進行佈建,因此不會受到這些 CVE 的影響。現有的 Docker Build Cloud 建置器也已推出更新。

    沒有其他 Docker 產品受到這些漏洞的影響。

    Text4Shell CVE-2022-42889

    上次更新時間:2022 年 10 月

    在熱門的 Apache Commons Text 函式庫中發現了 CVE-2022-42889(圖示)。此函式庫 1.10.0 之前的版本都受到此漏洞的影響。

    我們強烈建議您更新到最新版本的 Apache Commons Text(圖示)

    掃描 Docker Hub 上的映像檔

    在 2021 年 10 月 21 日 1200 UTC 之後觸發的 Docker Hub 安全掃描現在可以正確識別 Text4Shell CVE。此日期之前的掃描目前未反映此漏洞的狀態。因此,我們建議您透過將新映像檔推送至 Docker Hub 來觸發掃描,以在漏洞報告中查看 Text4Shell CVE 的狀態。詳細說明,請參閱在 Docker Hub 上掃描映像檔

    受 CVE-2022-42889 影響的 Docker 官方映像檔

    許多Docker 官方映像檔都包含易受攻擊的 Apache Commons Text 版本。以下列出可能包含易受攻擊的 Apache Commons Text 版本的 Docker 官方映像檔

    我們已將這些映像檔中的 Apache Commons Text 更新至最新版本。某些映像檔可能基於其他原因而不受影響。建議您也參考上游網站上發布的準則。

    Log4j 2 CVE-2021-44228

    上次更新時間:2021 年 12 月

    常見 Java 紀錄程式庫 Log4j 2 中的Log4j 2 CVE-2021-44228 漏洞允許遠端程式碼執行,而且攻擊者通常可以輕鬆取得執行環境。例如,在 Minecraft 伺服器中發現此漏洞,允許在聊天紀錄中輸入指令,因為這些指令會被傳送到紀錄器。由於此紀錄程式庫被廣泛使用,而且可能很容易被利用,因此這是一個非常嚴重的漏洞。許多開放原始碼維護人員正努力修復軟體生態系統並提供更新。

    受影響的 Log4j 2 版本為 2.0 至 2.14.1 版(含)。第一個修復版本為 2.15.0。我們強烈建議您更新至最新版本(如果可以)。如果您使用的是 2.0 之前的版本,則也不受此漏洞影響。

    如果您使用的是這些版本,可能不會受到影響,因為您的設定可能已經減輕了此問題,或者您記錄的內容可能不包含任何使用者輸入。然而,若不詳細了解所有可能記錄的程式碼路徑以及它們可能取得輸入的位置,則可能難以驗證。因此,您可能需要升級所有使用受影響版本的程式碼。

    CVE-2021-45046

    2.15.0 版中針對CVE-2021-44228CVE-2021-45046CVE-2021-45105掃描 Docker Hub 上的映像檔

    在 2021 年 12 月 13 日 17:00 (UTC) 之後觸發的 Docker Hub 安全掃描現在可以正確識別 Log4j 2 CVE。此日期之前的掃描目前未反映此漏洞的狀態。因此,建議您透過將新的映像檔推送至 Docker Hub 來觸發掃描,以在漏洞報告中檢視 Log4j 2 CVE 的狀態。詳細說明請參閱「在 Docker Hub 上掃描映像檔」。

    受 Log4j 2 CVE 影響的 Docker 官方映像檔

    上次更新時間:2021 年 12 月

    許多Docker 官方映像檔包含受影響的 Log4j 2 CVE-2021-44228 版本。下表列出可能包含受影響 Log4j 2 版本的 Docker 官方映像檔。我們已將這些映像檔中的 Log4j 2 更新至最新版本。某些映像檔可能基於其他原因而不受影響。建議您也參考上游網站上發布的準則。

    儲存庫已修補版本其他說明文件
    couchbase7.0.3Couchbase 部落格
    Elasticsearch6.8.22, 7.16.2Elasticsearch 公告
    Flink1.11.6, 1.12.7, 1.13.5, 1.14.2Flink 針對 Log4j CVE 的建議
    Geonetwork(圖示)3.10.10Geonetwork GitHub 討論
    lightstreamer等待資訊等待資訊
    logstash6.8.22, 7.16.2Elasticsearch 公告
    neo4j(圖示)4.4.2Neo4j 公告
    solr(圖示)8.11.1Solr 安全性新聞
    sonarqube8.9.5, 9.2.2SonarQube 公告
    storm等待資訊等待資訊

    注意事項

    雖然某些掃描器可能會將 xwiki 影像偵測為含有漏洞,但作者認為這些影像並未受到 Log4j 2 CVE 漏洞的影響,因為 API jar 檔不包含該漏洞。 Nuxeo 影像已被棄用,並且將不會更新。