共計 1870 個字符,預計需要花費 5 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關 Kubernetes 中 CVE-2019-11244 漏洞怎么修復,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
背景知識
為了能更好的理解這個漏洞,需要一些關于 Linux 文件權限的基礎知識。
也許你經常使用 chmod 命令來為某個文件設置權限,比如給某個文件設置權限:chmod 755 xxx。這里 755 為十進制數字分別代表文件 Owner 權限、文件 Owner 同組用戶權限和其他用戶權限,如下圖所示:
在 Linux 下,使用 ls 命令可以看到文件的權限,如下圖所示:
針對一個文件設置權限無非就是限制文件的讀、寫和可執行權限,那么如何理解一個目錄的讀、寫和可執行權限呢?跟據我小范圍調查,大多數人不能很好的回答這個問題:一個用戶對某個目錄擁有讀或寫權限分別意味著什么?
漏洞描述
CVE-2019-11244 漏洞原文描述如下:
In Kubernetes v1.8.x-v1.14.x, schema info is cached by kubectl in the location specified by –cache-dir (defaulting to $HOME/.kube/http-cache), written with world-writeable permissions (rw-rw-rw-). If –cache-dir is specified and pointed at a different location accessible to other users/groups, the written files may be modified by other users/groups and disrupt the kubectl invocation.
簡單的理解就是 kubectl 創建的緩存文件權限為 rw-rw-rw-,也即 666,這些緩存文件有被其他用戶修改的風險。
這里其他用戶是包含兩類:
同 group 下的其他用戶(后面稱 group 用戶);
不同 group 的其他用戶(后面稱 other 用戶);
那么修復這個漏洞,就要收縮這些文件權限,只要做到這些文件不能被這兩類用戶修改即可(可以擁有讀權限)。
社區修復方案
kubectl 會創建一個專門的目錄來存放緩存文件,所以這里既要控制目錄權限還要控制文件的權限。
在社區的修復方案中,緩存目錄權限由 755 變成了 750,即 other 用戶將不能進入這個目錄,Group 用戶仍擁有 r - x 權限,即可以讀取目錄下的文件列表、可以進入該目錄。
針對緩存文件的修改,權限由 755 變成了 660,這里有三個變化:
Owner 用戶不再擁有可執行權限(緩存文件擁有可執行文件權限本身也沒有意義);
Group 用戶擁有 rw- 權限,即 Group 用戶仍然可以修改緩存文件;
Other 用戶不授予任何權限(即便有權限也無效,因為上層目錄已不能訪問);
看到這里,問題就清楚了,緩存文件仍然可以被 Group 用戶修改,實際上漏洞并沒有完全修復。我們可以實際操作演示一下,這里如無特別說明表示使用 root 用戶操作:
創建一個目錄,并設置權限為 755: # mkdir -m 0750 myPath0750
在目錄中創建一個文件,并設置權限為 660:# touch myPath0750/myFile0660; chmod 0660 myPath0750/myFile0660
創建一個 root 組用戶,并設置密碼:# useradd -G root -d /home/horen -m horen; passwd horen
切換到新用戶,嘗試修改文件內容:# echo Hello myPath0750/myFile0660;
可以發現文件是可以被修改的。
加固方案
也許社區的修復方案并不能滿足你的安全要求,你仍然需要基于社區方案做一些安全加固,就是把緩存文件的權限進一步收縮,由 660 變為 640,即 Group 用戶最多只能查看緩存文件內容。
另外,由于目錄權限為 750,Group 用戶對該目錄沒有寫權限,所以不能修改目錄名,不能在該目錄下創建文件,達到目錄專用的目的。
這里也順便總結一下目錄的可讀、可寫和可執行三個權限的含義。其實目錄本身也是文件,其內容是其子層目錄結構,比如目錄中的文件列表,文件屬性等。
可讀:表示你可以列出目錄中有什么文件;
可寫:表示你可以在目錄中創建、刪除文件;
可執行:表示你可以進入該目錄;
關于“Kubernetes 中 CVE-2019-11244 漏洞怎么修復”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。