目前狀態:2019 年 Kubernetes 第三方安全稽核

我們預期 Kubernetes 全新第三方安全稽核將於本月稍晚(2022 年 10 月)發布。

為了準備,讓我們看看上次 2019 年第三方安全稽核中公開的調查結果狀態,該稽核基於 Kubernetes v1.13.4

動機

Craig Ingram 多年來一直熱心嘗試追蹤上次稽核中報告的調查結果狀態,詳見此議題:kubernetes/kubernetes#81146。這篇部落格文章將嘗試更深入探討此問題,解決追蹤中的任何缺口,並成為 2019 年報告的調查結果狀態的即時摘要。

本文也應透過透明的溝通,協助讀者對社群為解決這些調查結果所做的工作建立信心,並浮現任何需要社群貢獻者協助的調查結果。

目前狀態

此處每個議題/調查結果的狀態皆以盡力而為的方式呈現。作者不聲稱狀態 100% 準確,如果目前狀態未準確反映,歡迎直接在相關議題上評論,以進行任何更正或意見回饋。

#標題議題狀態
1hostPath PersistentVolumes 啟用 PodSecurityPolicy 繞過#81110已關閉,已透過 kubernetes/website#15756kubernetes/kubernetes#109798 解決
2Kubernetes 不支援憑證撤銷#81111重複議題,與 #18982 相同,且需要 KEP
3HTTPS 連線未經身分驗證#81112大致上留給終端使用者練習,以設定正確的組態
4將 PID 移動到管理員的 cgroup 時,透過 kubelet 發生 TOCTOU#81113需要節點存取才能成功利用。需要修正
5kubectl cp 中未正確修補的目錄遍歷#76788已關閉,已指派 CVE-2019-11249,已在 #80436 中修正
6Bearer 權杖在記錄中洩露#81114已關閉,已指派 CVE-2019-11250,已在 #81330 中修正
7Seccomp 預設為停用#81115已關閉,已透過 #101943 解決
8普遍可世界存取的文件權限#81116#112384(進行中)
9環境變數洩露敏感資料#81117已關閉,已透過 #84992#84677 解決
10SSH 連線中使用 InsecureIgnoreHostKey#81118此功能已在 v1.22 中移除:#102297
11使用 InsecureSkipVerify 和其他 TLS 弱點#81119需要 KEP
12kubeadm 執行可能危險的重設操作#81120已關閉,已透過 #81495#81494kubernetes/website#15881 修正
13使用 strconv.Atoi 並向下轉換結果時發生溢位#81121已關閉,已透過 #89120 修正
14kubelet 可能因惡意 manifest 造成記憶體不足錯誤#81122已關閉,已透過 #76518 修正
15kubectl 可能因惡意 Pod 規格造成記憶體不足錯誤#81123需要修正
16不正確的 PID 擷取允許不正確的 cgroup 移動#81124需要修正
17執行 kube-apiserver 和 kubelet 的主機記錄目錄遍歷#81125已關閉,已透過 #87273 修正
18非恆定時間密碼比較#81126已關閉,已透過 #81152 修正
19加密建議不符合最佳實務#81127工作中
20預設將憑證新增至容器是不安全的#81128已關閉,已透過 #89193 修正
21kubelet 存活探針可用於列舉主機網路#81129需要 KEP
22iSCSI 磁碟區儲存明文密碼在記錄中#81130已關閉,已透過 #81215 修正
23硬式編碼的憑證路徑#81131已關閉,等待更多證據
24記錄輪換不是原子性的#81132需要修正
25不限制的任意檔案路徑#81133需要修正。
26不安全的 JSON 建構#81134部分修正
27kubelet 因未正確處理的錯誤而崩潰#81135已關閉。已透過 #81135 修正
28舊版權杖不會過期#81136已關閉,已作為 #70679 的一部分修正
29CoreDNS 跨命名空間洩露內部叢集資訊#81137已關閉,已透過 CoreDNS v1.6.2 解決。#81137(評論)
30服務使用有問題的預設函數#81138需要修正
31容器管理員中不正確的 docker daemon 程序名稱#81139已關閉,已透過 #81083 修正
32在任何地方都使用標準格式#81140需要 KEP
33膚淺的健康檢查提供錯誤的安全感#81141已關閉,已透過 #81319 修正
34硬式編碼使用不安全的 gRPC 傳輸#81142需要 KEP
35不正確處理 Retry-After#81143已關閉,已透過 #91048 修正
36不正確的 isKernelPid 檢查#81144已關閉,已透過 #81086 修正
37Kubelet 支援不安全的 TLS 加密套件#81145已關閉,但 #91444 需要修正(請參閱 此評論

啟發的成果

除了修正特定議題外,2019 年第三方安全稽核也促使 Kubernetes 在接下來幾個版本中更注重安全性的增強功能。其中一個範例是 Kubernetes 增強提案 (KEP) 1933 透過靜態分析防禦記錄機密,以防止使用 Patrick Rhomberg 驅動實作將機密洩露到記錄中。由於此 KEP,go-flow-levee,一個配置為偵測機密記錄的汙染傳播分析工具,在 script 中作為 Prow 預提交作業執行。此 KEP 在 v1.20.0 中作為 Alpha 功能引入,然後在 v1.21.0 中升級為 Beta,並在 v1.23.0 中升級為穩定版。作為穩定版,分析作為封鎖預提交測試執行。此 KEP 也協助解決 2019 年第三方安全稽核中的以下議題

剩餘工作

在過去 3 年中,我們社群成員的工作已修正已識別的 37 項調查結果中的許多項。但是,我們仍有一些工作要做。以下是剩餘工作的細目,以及修正這些待處理議題所需時間投入、複雜性和對生態系統的好處的粗略估計。

標題議題時間投入複雜性對生態系統的好處
Kubernetes 不支援憑證撤銷#81111
使用 InsecureSkipVerify 和其他 TLS 弱點#81119
kubectl 可能因惡意 Pod 規格造成本機記憶體不足錯誤#81123
不正確的 PID 擷取允許不正確的 cgroup 移動#81124
kubelet 存活探針可用於列舉主機網路#81129
API 伺服器支援不安全的 TLS 加密套件#81145
將 PID 移動到管理員的 cgroup 時,透過 kubelet 發生 TOCTOU#81113
記錄輪換不是原子性的#81132
不限制的任意檔案路徑#81133
服務使用有問題的預設函數#81138
在任何地方都使用標準格式#81140非常低
硬式編碼使用不安全的 gRPC 傳輸#81142非常低

若要開始修正任何這些需要協助的調查結果,請考慮參與 Kubernetes SIG Security,方法是加入我們的雙週會議,或在我們的 Slack 頻道上與我們交流。