觀點 · 資訊分享

Argo CD 唯讀帳號可透過 ServerSideDiff 讀到明文 Secret:5 月 1 日已公告,3.3.9 修正

Argo CD 3.2.0 到 3.3.8 的 ServerSideDiff 端點沒有遮蔽 Kubernetes Secret,擁有唯讀權限的使用者可能取得明文機密。專案在 5 月 1 日已公告嚴重等級 Critical(9.6)並釋出 3.2.11 與 3.3.9,NVD 在 5 月 2 日收錄。

發布
2026-05-03
篇幅
約 4 分鐘 · 1,658 字
結構
7 節 + 3 題常見問題
標籤
#Argo CD#Kubernetes#GitOps#Secret#存取控制
Argo CD 唯讀帳號可透過 ServerSideDiff 讀到明文 Secret:5 月 1 日已公告,3.3.9 修正

一句話看懂:Argo CD 3.2.0 到 3.3.8 的 ServerSideDiff 端點沒有遮蔽 Kubernetes Secret,有唯讀權限的使用者可能拿到明文機密;專案 5 月 1 日已公告並釋出修正版。

Argo CD ServerSideDiff 洩漏 Secret資訊圖卡:有唯讀權限的使用者,可能透過比對功能取得明文的 Kubernetes Secret

先用白話講:Argo CD 和 Secret 是什麼?

Argo CD 是很多團隊用來把程式部署到 Kubernetes(一種管理大量伺服器的系統)的工具,它會比對「Git 裡寫的樣子」和「叢集裡實際的樣子」。Secret 則是 Kubernetes 用來存密碼、API 金鑰、憑證這類機密的地方。

正常情況下,Argo CD 顯示資源狀態時,會把 Secret 的內容遮成一排星號。這次的問題是:有一個叫 ServerSideDiff 的比對功能,漏掉了遮蔽。

發生什麼事

  • 5 月 1 日:Argo CD 專案發布安全公告 GHSA-3v3m-wc6v-x4x3,嚴重等級 Critical,CVSS 9.6,並釋出修正版
  • 5 月 2 日:NVD 收錄 CVE-2026-43824,描述的受影響版本相同;公告頁另外標示 CVE-2026-42880

所以這不是 5 月 3 日才揭露的新漏洞,而是專案早已公告、之後陸續補上公開編號。

問題出在哪?

依官方公告,Argo CD 其他回傳資源狀態的端點(例如取得 manifest、取得資源)都會呼叫遮蔽函式;只有 ServerSideDiff 端點把未遮蔽的資料直接放進回應。

公告還說明:Argo CD 本來有另一層防護,會剔除不屬於它管理的欄位,避免真實的 Secret 值透過比對流出;但當應用程式帶有 argocd.argoproj.io/compare-options: IncludeMutationWebhook=true 的標註時,這層防護會被整個略過。

項目 內容
受影響版本 3.2.0 到 3.3.8
修正版本 3.2.11、3.3.9
需要的權限 只需讀取(唯讀)權限
影響 可取得明文的服務帳號權杖、憑證、資料庫帳密與 API 金鑰等 Secret 內容

給開發者的技術細節

  • 公告指出,每位已登入的 Argo CD 使用者,在預設的 role:catch-all 政策下就有 get 權限,所以「只有唯讀」並不代表風險低
  • 要讓機密真的流出,Secret 的 data 欄位需要被至少一個非 Argo CD 的 Server-Side Apply 欄位管理者持有,這是公告列出的利用條件之一
  • 官方沒有提供不升級的暫時緩解方式,建議直接升級;升級後可以順便檢查哪些帳號有叢集的讀取權限,並視需要輪替可能暴露過的機密

我的看法

我自己的服務以單一 NAS 為主,沒有用到 Argo CD,但這件事對團隊很有參考價值:很多人會認為「唯讀帳號很安全,隨便發給大家」。這個漏洞說明,只要有任何一個端點忘了遮蔽,唯讀就等於能看到機密。

如果你的團隊有用 Argo CD,我會做三件事:先升級;再盤點誰有登入權限,尤其是預設的 catch-all 政策;最後把可能被讀到的機密當成已外洩評估,必要時輪替。升級修的是程式,但已經被拿走的機密不會因此失效。

名詞小辭典

  • GitOps:把系統該長什麼樣子寫在 Git 裡,由工具自動讓實際環境和 Git 保持一致的做法。
  • Kubernetes Secret:Kubernetes 用來存放密碼、金鑰等機密資料的物件。
  • Server-Side Apply:Kubernetes 讓多個管理者共同維護同一個資源欄位的機制。
  • CVSS:漏洞嚴重度評分,滿分 10,9.0 以上屬於嚴重。

資料來源

常見問題

為什麼一個「比對差異」的功能會洩漏機密?
官方說明:Argo CD 其他回傳資源狀態的端點都會把 Secret 內容遮蔽,只有 ServerSideDiff 端點直接回傳未遮蔽的資料,所以擁有讀取權限的人可以經由它看到明文。
這是 5 月 3 日才公告的嗎?
不是。專案在 5 月 1 日已發布公告並釋出修正版,NVD 在 5 月 2 日收錄 CVE,這篇是整理這件事的重點。
我需要馬上升級嗎?
官方說明受影響的是 3.2.0 到 3.3.8,如果你使用這些版本,建議盡快升級到 3.2.11 或 3.3.9。公告也指出預設的 role:catch-all 政策讓每位已登入使用者都有讀取權限,所以不能只當成「管理員自己的問題」。
LINE