linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...
2019年5月,Kubernetes社區(后面簡稱”社區“)修復了標號為CVE-2019-11244的安全漏洞,這個修復方案似乎并不徹底,于是有人發布Issue對此提出異議,希望提供進一步修復方案。
雖然Kubernetes已經非常安全,但對于一些安全標準更高的用戶來講,還是需要針對Kubernetes做進一步的安全加固。
本文先深度分析一下這個漏洞,看在什么情況下會產生安全風險,接著再探討一下這個漏洞應該如何修復,以但給廣大Kubernetes用戶提供一些提示。
背景知識
為了能更好的理解這個漏洞,需要一些關于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用戶對該目錄沒有寫權限,所以不能修改目錄名,不能在該目錄下創建文件,達到目錄專用的目的。
這里也順便總結一下目錄的可讀、可寫和可執行三個權限的含義。其實目錄本身也是文件,其內容是其子層目錄結構,比如目錄中的文件列表,文件屬性等。
可讀:表示你可以列出目錄中有什么文件;
可寫:表示你可以在目錄中創建、刪除文件;
可執行:表示你可以進入該目錄;
后續
社區的修復方案雖不徹底也可以降低風險,有需要的可以考慮升級。 社區方案已于2019年5月合入v1.12.9、v1.13.7、v1.14.3版本(當時1.15.0尚未發布)。
進一步修復該漏洞的建議不知能否被采納,本文僅做參考。
總結
以上是生活随笔為你收集整理的linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 疏通输卵管怎么疏通
- 下一篇: 泰拉瑞亚神圣箭矢怎么做