linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...
2019年5月,Kubernetes社區(qū)(后面簡(jiǎn)稱(chēng)”社區(qū)“)修復(fù)了標(biāo)號(hào)為CVE-2019-11244的安全漏洞,這個(gè)修復(fù)方案似乎并不徹底,于是有人發(fā)布Issue對(duì)此提出異議,希望提供進(jìn)一步修復(fù)方案。
雖然Kubernetes已經(jīng)非常安全,但對(duì)于一些安全標(biāo)準(zhǔn)更高的用戶(hù)來(lái)講,還是需要針對(duì)Kubernetes做進(jìn)一步的安全加固。
本文先深度分析一下這個(gè)漏洞,看在什么情況下會(huì)產(chǎn)生安全風(fēng)險(xiǎn),接著再探討一下這個(gè)漏洞應(yīng)該如何修復(fù),以但給廣大Kubernetes用戶(hù)提供一些提示。
背景知識(shí)
為了能更好的理解這個(gè)漏洞,需要一些關(guān)于Linux 文件權(quán)限的基礎(chǔ)知識(shí)。
也許你經(jīng)常使用chmod命令來(lái)為某個(gè)文件設(shè)置權(quán)限,比如給某個(gè)文件設(shè)置權(quán)限:chmod 755 xxx。這里755為十進(jìn)制數(shù)字分別代表文件Owner權(quán)限、文件Owner同組用戶(hù)權(quán)限和其他用戶(hù)權(quán)限,如下圖所示:
在Linux下,使用ls命令可以看到文件的權(quán)限,如下圖所示:
針對(duì)一個(gè)文件設(shè)置權(quán)限無(wú)非就是限制文件的讀、寫(xiě)和可執(zhí)行權(quán)限,那么如何理解一個(gè)目錄的讀、寫(xiě)和可執(zhí)行權(quán)限呢? 跟據(jù)我小范圍調(diào)查,大多數(shù)人不能很好的回答這個(gè)問(wèn)題:一個(gè)用戶(hù)對(duì)某個(gè)目錄擁有讀或?qū)憴?quán)限分別意味著什么?
漏洞描述
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.
簡(jiǎn)單的理解就是kubectl創(chuàng)建的緩存文件權(quán)限為rw-rw-rw-,也即666,這些緩存文件有被其他用戶(hù)修改的風(fēng)險(xiǎn)。
這里其他用戶(hù)是包含兩類(lèi):
同group下的其他用戶(hù)(后面稱(chēng)group用戶(hù));
不同group的其他用戶(hù)(后面稱(chēng)other用戶(hù));
那么修復(fù)這個(gè)漏洞,就要收縮這些文件權(quán)限,只要做到這些文件不能被這兩類(lèi)用戶(hù)修改即可(可以擁有讀權(quán)限)。
社區(qū)修復(fù)方案
kubectl會(huì)創(chuàng)建一個(gè)專(zhuān)門(mén)的目錄來(lái)存放緩存文件,所以這里既要控制目錄權(quán)限還要控制文件的權(quán)限。
在社區(qū)的修復(fù)方案中,緩存目錄權(quán)限由755變成了750,即other用戶(hù)將不能進(jìn)入這個(gè)目錄,Group用戶(hù)仍擁有r-x權(quán)限,即可以讀取目錄下的文件列表、可以進(jìn)入該目錄。
針對(duì)緩存文件的修改,權(quán)限由755變成了660,這里有三個(gè)變化:
Owner用戶(hù)不再擁有可執(zhí)行權(quán)限(緩存文件擁有可執(zhí)行文件權(quán)限本身也沒(méi)有意義);
Group用戶(hù)擁有rw-權(quán)限,即Group用戶(hù)仍然可以修改緩存文件;
Other用戶(hù)不授予任何權(quán)限(即便有權(quán)限也無(wú)效,因?yàn)樯蠈幽夸浺巡荒茉L問(wèn));
看到這里,問(wèn)題就清楚了,緩存文件仍然可以被Group用戶(hù)修改,實(shí)際上漏洞并沒(méi)有完全修復(fù)。 我們可以實(shí)際操作演示一下,這里如無(wú)特別說(shuō)明表示使用root用戶(hù)操作:
創(chuàng)建一個(gè)目錄,并設(shè)置權(quán)限為755: # mkdir -m 0750 myPath0750
在目錄中創(chuàng)建一個(gè)文件,并設(shè)置權(quán)限為660:# touch myPath0750/myFile0660; chmod 0660 myPath0750/myFile0660
創(chuàng)建一個(gè)root組用戶(hù),并設(shè)置密碼:# useradd -G root -d /home/horen -m horen; passwd horen
切換到新用戶(hù),嘗試修改文件內(nèi)容:# echo "Hello" > myPath0750/myFile0660;
可以發(fā)現(xiàn)文件是可以被修改的。
加固方案
也許社區(qū)的修復(fù)方案并不能滿(mǎn)足你的安全要求,你仍然需要基于社區(qū)方案做一些安全加固,就是把緩存文件的權(quán)限進(jìn)一步收縮,由660變?yōu)?40,即Group用戶(hù)最多只能查看緩存文件內(nèi)容。
另外,由于目錄權(quán)限為750,Group用戶(hù)對(duì)該目錄沒(méi)有寫(xiě)權(quán)限,所以不能修改目錄名,不能在該目錄下創(chuàng)建文件,達(dá)到目錄專(zhuān)用的目的。
這里也順便總結(jié)一下目錄的可讀、可寫(xiě)和可執(zhí)行三個(gè)權(quán)限的含義。其實(shí)目錄本身也是文件,其內(nèi)容是其子層目錄結(jié)構(gòu),比如目錄中的文件列表,文件屬性等。
可讀:表示你可以列出目錄中有什么文件;
可寫(xiě):表示你可以在目錄中創(chuàng)建、刪除文件;
可執(zhí)行:表示你可以進(jìn)入該目錄;
后續(xù)
社區(qū)的修復(fù)方案雖不徹底也可以降低風(fēng)險(xiǎn),有需要的可以考慮升級(jí)。 社區(qū)方案已于2019年5月合入v1.12.9、v1.13.7、v1.14.3版本(當(dāng)時(shí)1.15.0尚未發(fā)布)。
進(jìn)一步修復(fù)該漏洞的建議不知能否被采納,本文僅做參考。
總結(jié)
以上是生活随笔為你收集整理的linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 疏通输卵管怎么疏通
- 下一篇: linux 关机 日志,centos7