2022 年 Kubernetes 高危漏洞盤點(diǎn)
2022 年,Kubernetes繼續(xù)鞏固自己作為關(guān)鍵基礎(chǔ)設(shè)施領(lǐng)域的地位。從小型到大型組織,它已成為廣受歡迎的選擇。出于顯而易見的原因,這種轉(zhuǎn)變使 Kubernetes 更容易受到攻擊。但這還沒有結(jié)束,開發(fā)人員通常將Kubernetes 部署與其他云原生組件一起使用來構(gòu)建一個完善的工作系統(tǒng)。不幸的是,這種組合會導(dǎo)致具有更多組件的更復(fù)雜的基礎(chǔ)架構(gòu)。這最終會增加易受攻擊的表面積和范圍。
根據(jù) Red Hat 的2022 年 Kubernetes 安全狀況報(bào)告:
https://www.redhat.com/rhdc/managed-files/cl-state-of-kubernetes-security-report-2022-ebook-f31209-202205-en.pdf,去年接受調(diào)查的人中有 93% 報(bào)告了至少一次影響 Kubernetes 環(huán)境的事件。在報(bào)告的全部安全事件中,53% 是由于配置錯誤造成的,38% 是由于利用漏洞造成的。該趨勢表明漏洞數(shù)量增加主要是由于攻擊面的增加和漏洞管理的復(fù)雜性。
在本文中,我們討論了 2022 年 Kubernetes 漏洞以及我們可以從中學(xué)到什么。為了確保我們都在同一頁面上,讓我們重溫一下 NIST SP 800-53中的標(biāo)準(zhǔn)漏洞定義:系統(tǒng)安全程序、設(shè)計(jì)、實(shí)施或內(nèi)部控制中的缺陷或弱點(diǎn)可能會被執(zhí)行(意外觸發(fā)或故意利用)并導(dǎo)致安全漏洞或違反系統(tǒng)安全政策。
在哪里尋找 Kubernetes 漏洞?
有各種受信任的數(shù)據(jù)源負(fù)責(zé)識別、收集和發(fā)布公共領(lǐng)域中的漏洞。主要有 NVD(國家漏洞數(shù)據(jù)庫)CVE 數(shù)據(jù)庫、GitHub 安全公告、Exploit-DB、供應(yīng)商通知和官方項(xiàng)目公告。
以下是查找 Kubernetes 漏洞的來源列表:
- https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=kubernetes
- https://kubernetes.io/docs/reference/issues-security/official-cve-feed/
- https://groups.google.com/g/kubernetes-security-announce
- https://www.cvedetails.com/vulnerability-list/vendor_id-15867/product_id-34016/Kubernetes-Kubernetes.html
- https://github.com/advisories?query=kubernetes
Kubernetes相關(guān)漏洞分類
拒絕服務(wù): 當(dāng)合法用戶或客戶端由于惡意威脅行為者的行為而無法訪問服務(wù)或系統(tǒng)時(shí),就會出現(xiàn)此漏洞。例如,假設(shè)有人正在通過大量請求您的Kubernetes API 服務(wù)器;API 服務(wù)器可能會停止響應(yīng)其他合法請求。- 特權(quán)升級:某些系統(tǒng)弱點(diǎn)允許攻擊者在安全范圍內(nèi)獲得未經(jīng)授權(quán)的訪問。在 Kubernetes 中,容器逃逸是一個常見的弱點(diǎn),當(dāng)黑客利用它時(shí),可以以提升的權(quán)限訪問主機(jī)。
- 繞過一些東西:這是一類漏洞的更廣泛術(shù)語,包括身份驗(yàn)證繞過、執(zhí)行代碼繞過、權(quán)限繞過等。
- 緩沖區(qū)溢出:通常,由于代碼中的錯誤(例如對越界內(nèi)存緩沖區(qū)的處理不當(dāng)),可能會發(fā)生緩沖區(qū)溢出。它允許惡意行為者訪問其他共同托管進(jìn)程的內(nèi)存并泄露不需要的信息。
- 任意代碼執(zhí)行:
- 在這里,攻擊者利用代碼中的缺陷并使用它來執(zhí)行任意惡意代碼,通常是為了獲得更高的訪問權(quán)限、網(wǎng)絡(luò)訪問權(quán)限或?qū)χ鳈C(jī)系統(tǒng)的控制。
- 目錄或文件遍歷:利用此漏洞,黑客可以利用代碼中的弱點(diǎn)遍歷主機(jī)系統(tǒng)或網(wǎng)絡(luò)上的任意文件和目錄。
2022 主要漏洞盤點(diǎn)
1. CVE-2022-0811 – CRI-O 運(yùn)行時(shí)中的容器轉(zhuǎn)義漏洞
今年早些時(shí)候, CrowdStrike安全研究人員披露了 Kubernetes 使用的容器運(yùn)行時(shí) CRI-O 中的這個漏洞,其 CVE 評分為 9.0(嚴(yán)重)。它允許具有訪問權(quán)限的惡意行為者在 Kubernetes 集群中創(chuàng)建 pod,以通過濫用 kernel.core_pattern 參數(shù)在主機(jī)上設(shè)置任意內(nèi)核參數(shù)。該漏洞允許黑客逃離 Kubernetes 容器并獲得對主機(jī)的 root 訪問權(quán)限,從而可能使他們能夠部署惡意軟件、竊取數(shù)據(jù)并在集群中實(shí)現(xiàn)橫向移動。
(1) 漏洞詳細(xì)影響:
直接受影響的軟件 CRI-O 版本1.19 + 要確定主機(jī)是否受到影響:
雖然該漏洞存在于 CRI-O 中,但依賴它的軟件和平臺也可能存在漏洞,包括:
- OpenShift 4+
- 用于 Kubernetes 的 Oracle 容器引擎
https://www.crowdstrike.com/blog/cr8escape-new-vulnerability-discovered-in-cri-o-container-engine-cve-2022-0811/
(2) 預(yù)防措施:
- 使用策略來阻止對內(nèi)核資源的不安全訪問,例如Pod Security Admission Controllers ,它已經(jīng)從 Kubernetes 1.25取代了Pod Security Policies 。您還可以使用來自 Kyverno 的第三方準(zhǔn)入控制器。
- 定期對集群進(jìn)行掃描和審計(jì),一旦發(fā)布補(bǔ)丁,第一時(shí)間修補(bǔ)漏洞。
2. CVE-2022-1708 – 通過 execSync 請求耗盡內(nèi)存的節(jié)點(diǎn) DOS
這又是 CRI-O 容器運(yùn)行時(shí)中的一個漏洞,會導(dǎo)致節(jié)點(diǎn)上的內(nèi)存或磁盤空間耗盡,從而影響系統(tǒng)可用性。它的 CVE 評分為 7.5(高)。任何有權(quán)訪問 Kubernetes API 的人都可以調(diào)用 execSync,它運(yùn)行命令或從容器同步獲取日志。如果命令的輸出量很大,可能會把內(nèi)存或磁盤填滿,導(dǎo)致節(jié)點(diǎn)或其他共管服務(wù)不可用。
CVE-2022-31030也類似于 CVE-2022-1708,但 CVE-2022-31030 是由于 containerd 容器運(yùn)行時(shí)而不是 CRI-O。
(1) 漏洞詳細(xì)影響:
在 CRI-O 中發(fā)現(xiàn)了一個漏洞,該漏洞會導(dǎo)致任何有權(quán)訪問 Kube API 的人在節(jié)點(diǎn)上耗盡內(nèi)存或磁盤空間。ExecSync 請求在容器中運(yùn)行命令并記錄命令的輸出。命令執(zhí)行后,CRI-O 會讀取此輸出,并以讀入與命令輸出對應(yīng)的整個文件的方式讀取。因此,如果命令的輸出很大,則可能耗盡CRI-O 讀取命令輸出時(shí)節(jié)點(diǎn)的內(nèi)存或磁盤空間。此漏洞的最大威脅是系統(tǒng)可用性。
https://nvd.nist.gov/vuln/detail/CVE-2022-1708
(2) 預(yù)防措施:
- 使用最小權(quán)限原則來降低被攻擊的風(fēng)險(xiǎn)。如果您不授予在 Pod 上運(yùn)行“exec”命令的權(quán)限,或者不授予與 Kubernetes API 服務(wù)器交互的應(yīng)用程序使用的服務(wù)帳戶的最低權(quán)限,黑客將無法利用該漏洞。
- 補(bǔ)丁發(fā)布后立即更新實(shí)施。
3. CVE-2022-29165 – ArgoCD 身份驗(yàn)證繞過
這個得分最高為 10.0 的嚴(yán)重漏洞讓 ArgoCD 的用戶感到恐慌,ArgoCD 是一種流行的 GitOps 持續(xù)交付工具,用于在 Kubernetes 集群上部署應(yīng)用程序。該漏洞允許未經(jīng)身份驗(yàn)證的用戶獲得匿名訪問權(quán)限,使他們能夠通過發(fā)送特制的 JSON Web 令牌 (JWT) 來冒充包括管理員在內(nèi)的任何其他用戶。
利用很容易,因?yàn)楣粽卟恍枰?ArgoCD 中的任何帳戶。默認(rèn)情況下,ArgoCD 服務(wù)帳戶獲得集群管理員角色,從而使攻擊者能夠完全訪問 Kubernetes 集群。
(1) 漏洞詳細(xì)影響:
如果啟用了對實(shí)例的匿名訪問,攻擊者可以:
提升他們的權(quán)限,有效地允許他們在集群上獲得與 Argo CD 實(shí)例相同的權(quán)限,在默認(rèn)安裝中是集群管理員。這將允許攻擊者創(chuàng)建、操縱和刪除集群上的任何資源。
通過部署具有提升權(quán)限的惡意工作負(fù)載來泄露數(shù)據(jù),從而繞過 Argo CD API 強(qiáng)制執(zhí)行的敏感數(shù)據(jù)的任何編輯
該漏洞的補(bǔ)丁已經(jīng)發(fā)布在以下 Argo CD 版本中:
- v2.3.4
- v2.2.9
- v2.1.15
https://github.com/argoproj/argo-cd/security/advisories/GHSA-r642-gv9p-2wjj
(2) 預(yù)防措施:
- 禁用對 ArgoCD 的匿名訪問。
- 遵循應(yīng)用程序服務(wù)帳戶的最小權(quán)限原則。
- 將關(guān)鍵組件端點(diǎn)置于安全邊界之后,只有受信任的人才能訪問該邊界。
4. CVE-2022-23648 – Containerd 中的任意主機(jī)文件訪問
該漏洞存在于containerd版本 1.6.1、1.5.10 和 1.14.12 中,允許攻擊者讀取任意主機(jī)文件。因此,攻擊者可以讀取 kubelet 私鑰等機(jī)密文件,并可以訪問 Kubernetes API 服務(wù)器/etcd 數(shù)據(jù)庫來竊取信息。
(1) 漏洞詳細(xì)影響:
攻擊者最有吸引力的目標(biāo)文件將是 kubelet 的私鑰,用于節(jié)點(diǎn) kubelet 和 KubeAPI 服務(wù)器之間的通信。Kubelet 是 Kubernetes 中絕對可信的組件,它可以要求 KubeAPI 服務(wù)器提供存儲在 ETCD 中的任何信息,例如Kubernetes Secrets、ConfigMaps 等。這些信息可以被泄露或在本地使用,以訪問 ETCD 中受保護(hù)的接口和數(shù)據(jù)資產(chǎn)。Kubernetes 乃至整個云基礎(chǔ)設(shè)施。
https://nvd.nist.gov/vuln/detail/CVE-2022-23648
(2) 預(yù)防措施:
- 使用Kubescape等持續(xù)掃描解決方案來檢測漏洞。
- 補(bǔ)丁發(fā)布后立即實(shí)施。
5. CVE-2022-0185 – Linux 內(nèi)核容器逃逸
Linux 中的文件上下文 API 中基于堆的緩沖區(qū)溢出缺陷會導(dǎo)致越界寫入。然后,具有本地訪問權(quán)限的惡意行為者可能會導(dǎo)致拒絕服務(wù)攻擊或在主機(jī)上運(yùn)行任意代碼。要檢測 Kubernetes 中的此漏洞暴露,您需要找到具有 CAP_SYS_ADMIN 功能的 pod。
(1) 漏洞詳細(xì)影響:
該問題是“文件系統(tǒng)上下文”組件中的整數(shù)下溢問題。整數(shù)下溢發(fā)生在對無符號整數(shù)變量的減法低于零并且計(jì)算結(jié)果環(huán)繞整數(shù)的最大值而不是顯示負(fù)值時(shí)。當(dāng)發(fā)生這種下溢時(shí),大小檢查失敗,并且調(diào)用程序可以寫入超出內(nèi)核空間中分配的 4kb 內(nèi)存的范圍。使用這種“未綁定寫入”,攻擊者可以更改內(nèi)核內(nèi)存中的值,例如,將對自己的訪問權(quán)限添加到同一節(jié)點(diǎn)上運(yùn)行的任何其他進(jìn)程。
“文件系統(tǒng)上下文”在 Linux 內(nèi)核掛載文件系統(tǒng)時(shí)使用。這已被“文件上下文 API”取代,但對于遺留支持,部分功能已向后移植,問題在于遺留參數(shù)的處理。非特權(quán)用戶本地進(jìn)程(在啟用非特權(quán)用戶命名空間的情況下)或具有 CAP_SYS_ADMIN 特權(quán)的進(jìn)程可能導(dǎo)致遺留代碼的調(diào)用,從而利用此漏洞。
預(yù)防措施:
- 限制 Kubernetes 部署中的容器功能。
- 部署成熟的檢測工具,可以快速發(fā)現(xiàn)您暴露并提醒您降低風(fēng)險(xiǎn)。
6. CVE-2022-39306 – 未經(jīng)授權(quán)訪問 Grafana 代碼庫中的任意端點(diǎn)
Grafana Labs針對其開源產(chǎn)品中的一個新的嚴(yán)重漏洞發(fā)布了安全公告。該漏洞標(biāo)記為CVE-2022-39328,可讓攻擊者繞過任意服務(wù)端點(diǎn)的授權(quán)。這是一個繞過身份驗(yàn)證的嚴(yán)重漏洞。大約 50% 的 Kubernetes 用戶在生產(chǎn)中使用 Grafana 這一事實(shí)使得這個 CVE 特別值得注意。
(1) 漏洞詳細(xì)影響:
未經(jīng)身份驗(yàn)證的用戶可以惡意查詢?nèi)我舛它c(diǎn)。
https://grafana.com/blog/2022/11/08/security-release-new-versions-of-grafana-with-critical-and-moderate-fixes-for-cve-2022-39328-cve-2022-39307-and-cve-2022-39306/
(2) 預(yù)防措施:
- Grafana 發(fā)布了一個修復(fù):版本 9.2.4。
總結(jié)
容器逃逸是 Kubernetes 中最常被利用的漏洞之一。在 Kubernetes 部署中實(shí)施 AppArmor 和 SELinux 等安全配置文件以及 Pod 安全標(biāo)準(zhǔn)可以減少遭受攻擊的風(fēng)險(xiǎn)。
在為您的服務(wù)帳戶和用戶分配角色和權(quán)限時(shí),請遵循最小權(quán)限原則。這減少了攻擊者在集群上獲得過多特權(quán)的機(jī)會,即使他們已經(jīng)滲透了它。利用Kubescape門戶中的RBAC 可視化工具來檢測具有不必要權(quán)限的角色和參與者。
使用縱深防御技術(shù)使惡意行為者更難實(shí)現(xiàn)橫向移動和泄露數(shù)據(jù)。
建議對K8s 清單文件、代碼存儲庫和集群進(jìn)行頻繁且持續(xù)的掃描以查找漏洞。
建立一個流程來定期更新 Kubernetes 集群上的軟件包。使用gVisor等容器沙箱項(xiàng)目,可以通過在多租戶系統(tǒng)中提供強(qiáng)隔離來加強(qiáng)容器邊界并防止容器逃逸和特權(quán)升級。