2022年Linux內(nèi)核提權(quán)漏洞總結(jié)
今年以來(lái)Linux內(nèi)核出現(xiàn)很多嚴(yán)重安全漏洞,我們?cè)俅斡枰钥偨Y(jié),以供大家參考學(xué)習(xí)和修復(fù)。
CAP_SYS_ADMIN導(dǎo)致Kubernetes容器逃逸(CVE-2022-0185)
(1) 漏洞說(shuō)明
Linux kernel 中發(fā)現(xiàn)一個(gè)新的安全漏洞CVE-2022-0185。由于Linux內(nèi)核"File System Context"組件中的一個(gè)堆緩存溢出漏洞,攻擊者利用該漏洞可以實(shí)現(xiàn)越界寫、權(quán)限提升、DoS 和任意代碼執(zhí)行。使用非特權(quán)的命名空間或使用 unshare進(jìn)入含有 CAP_SYS_ADMIN 權(quán)限的命名空間。Docker seccomp 默認(rèn)攔截unshare命令,所以運(yùn)行該命令一般是不允許的。
(2) 漏洞影響
大于5.1-rc1 以來(lái)的所有 Linux kernel 版本,包括最新5.4.173、5.10.93、5.15.1。也影響 Ubuntu 20/21、Debian 11 和部分 Red Hat Centos 8包。
(3) 危害等級(jí)
高危(CVSS 評(píng)分7.8)
(4) 修復(fù)和緩解建議
升級(jí) Linux kernel 到 5.16.2 版本來(lái)修復(fù)該漏洞。對(duì)于這些暫時(shí)沒(méi)有可用補(bǔ)丁的系統(tǒng),建議用戶禁用非特權(quán)用戶命名空間。在 Ubuntu 系統(tǒng)中,可以使用以下命令來(lái)禁用非特權(quán)命名空間:
sysctl -w kernel.unprivileged_userns_clone=0
紅帽用戶可以使用以下命令來(lái)禁用用戶命名空間:
echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/sysctl.d/userns.conf
TIPC遠(yuǎn)程堆棧溢出(CVE-2022-0435)
安全研究者在Linux內(nèi)核用于進(jìn)程間透明網(wǎng)絡(luò)模塊通信 (TIPC) 協(xié)議中發(fā)現(xiàn)了本地和遠(yuǎn)程可訪問(wèn)的堆棧溢出。該模塊存在于大多數(shù)主要發(fā)行版中找到該模塊,在該模塊加載的情況下就可被利用。此外,對(duì)于遠(yuǎn)程利用目標(biāo)需要已經(jīng)設(shè)置TIPC承載,即漏洞擴(kuò)展到使用TIPC系統(tǒng)。漏洞利用非常容易,并且可能導(dǎo)致通過(guò)內(nèi)核拒絕服務(wù)崩潰。在沒(méi)有或繞過(guò)堆棧KASLR的情況下,漏洞可能導(dǎo)致任意控制流劫持有效載荷該模塊是Linux 4.8版本中的監(jiān)控框架中引入,并且此后該漏洞一直存在。
(1) 漏洞說(shuō)明
漏洞在于`member_cnt在最初的期間檢查,函數(shù)不檢查是否低于MAX_MON_DOMAIN 定義了 `members` 數(shù)組的最大長(zhǎng)度。通過(guò)偽裝成對(duì)等節(jié)點(diǎn)并與目標(biāo)建立鏈接,在本地或遠(yuǎn)程,能夠首先提交惡意域包含任意有效載荷的記錄;發(fā)送一個(gè)更新域記錄,將導(dǎo)致之前的惡意記錄被 memcpy到一個(gè)272字節(jié)的本地`struct tipc_mon_domain` &dom_bef[6] 觸發(fā)堆棧溢出。這樣可以通過(guò)覆蓋以下堆棧的內(nèi)容&dom_bef 與來(lái)自惡意域的任意成員緩沖區(qū)首先提交的記錄;其大小受媒體限制 MTU(以太網(wǎng)、UDP、Inifiband),目前該漏洞已經(jīng)出現(xiàn)可以利用Poc并可被直接利用:
(2) 影響范圍
Linux Kernel版本 >= 4.8。
CentOS 8默認(rèn)內(nèi)核版本受該漏洞影響。
(3) 危害等級(jí)
高危(CVSS 評(píng)分7.1)
(4) 修復(fù)建議
將Linux最新內(nèi)核升級(jí)版本。紅帽官方已經(jīng)發(fā)布升級(jí)補(bǔ)丁,Centos 8.4可以用過(guò):
yum update kernel
升級(jí)。
cgroups漏洞容器逃逸和任意命令漏洞(CVE-2022-0492)
漏洞存在于Linux內(nèi)核control groups組件的cgroups的v1版本,該組件用來(lái)實(shí)現(xiàn)將進(jìn)程劃分成組,并進(jìn)行CPU、內(nèi)存、磁盤IO、網(wǎng)絡(luò)等資源限制?,F(xiàn)代容器(docker)廣泛依賴cgroups的特性實(shí)現(xiàn)。
(1) 漏洞說(shuō)明
CVE-2022-0492的主要是因?yàn)閷?duì)release_agent文件的進(jìn)程是否具有管理權(quán)限(即 CAP_SYS_ADMIN 功能)未進(jìn)行檢查導(dǎo)致。攻擊者可以通過(guò)release_agent強(qiáng)制內(nèi)核以提升的權(quán)限調(diào)用選擇的二進(jìn)制文件并接管機(jī)器。由于release_agent 文件的所有者設(shè)置為root,該漏洞的利用需要具有“root”權(quán)限的進(jìn)程才能寫入文件,因此, 該漏洞僅允許root進(jìn)程提升權(quán)限。運(yùn)行 AppArmor或SELinux安全系統(tǒng)的容器不受影響。
(2) 危害等級(jí)
高危(CVSS 評(píng)分7.0)
(3) 影響范圍
所有運(yùn)行Root權(quán)限運(yùn)行docker容器的宿主機(jī)都受漏洞影響。包括CentOS 8,centOS7和centOS 6。
(4) 修復(fù)和緩解建議
將Linux最新內(nèi)核升級(jí)版本。
排查以root權(quán)限啟動(dòng)的容器,以非權(quán)限賬號(hào)啟動(dòng)。
- 啟用 AppArmor 或 SELinux。
- 啟用 Seccomp。
DirtyPipe本地權(quán)限提升漏洞 (CVE-2022-0847)
日Linux內(nèi)核中的一個(gè)權(quán)限提升漏洞(CVE-2022-0847,簡(jiǎn)稱“Dirty Pipe”),利用該漏洞普通允用戶可以通過(guò)注入和覆蓋任意只讀文件中的數(shù)據(jù)進(jìn)行權(quán)限提升并獲得root權(quán)限。漏洞存在于Linux Kernel 5.8及更高版本的內(nèi)核。目前該漏洞的PoC/EXP已經(jīng)發(fā)布,可以被直接利用。
(1) 漏洞說(shuō)明
CVE-2022-0847存在于Linux內(nèi)核5.8及之后版本中的本地提權(quán)漏洞。攻擊者通過(guò)利用此漏洞,可覆蓋重寫任意可讀文件中的數(shù)據(jù),從而可將普通權(quán)限的用戶提升到特權(quán)root。由于其利用原理類似于臟牛漏洞(Dirty Cow,CVE-2016-5195),但更容易被利用,該漏洞被命名為“Dirty Pipe”。
(2) 危害等級(jí)
高危(CVSS 評(píng)分7.8)
(3) 影響范圍
- Linux Kernel版本 >= 5.8
- Linux Kernel版本 < 5.16.11 / 5.15.25 / 5.10.102
- CentOS 8默認(rèn)內(nèi)核版本受該漏洞影響
- CentOS 7及以下版本不受CentOS 8
可以具體通過(guò)以下命令排查范圍:
uname -a
查看當(dāng)前使用的內(nèi)核版本,如果該版本在大于5.8則需要更新內(nèi)核版本到對(duì)應(yīng)的 5.16.11/5.15.25/5.10.102。
(4) 修復(fù)建議
需要將Linux內(nèi)核升級(jí)至以下安全版本:
- Linux 內(nèi)核 >= 5.16.11
- Linux 內(nèi)核 >= 5.15.25
- Linux 內(nèi)核 >= 5.10.102