CVE-2021-33909:Linux本地权限提升漏洞
Linux本地權(quán)限提升漏洞影響大多數(shù)Linux發(fā)行版。
漏洞概述
Qualys研究人員在Linux kernel中發(fā)現(xiàn)一個(gè)本地權(quán)限提升漏洞——Sequoia,該漏洞是Linux kernel文件系統(tǒng)層中的size_t-to-int 類型轉(zhuǎn)化漏洞。漏洞CVE編號(hào)為CVE-2021-33909,攻擊者利用該漏洞可以在大多數(shù)Linux發(fā)行版上獲得root權(quán)限。
Linux文件系統(tǒng)
Linux文件系統(tǒng)是存儲(chǔ)設(shè)備上數(shù)據(jù)和元數(shù)據(jù)的組織形式,控制著數(shù)據(jù)的存儲(chǔ)、提取,其最重要的功能是管理用戶數(shù)據(jù)。Linux文件系統(tǒng)接口以分層架構(gòu)實(shí)現(xiàn),可以將用戶接口層與文件系統(tǒng)實(shí)現(xiàn)、以及操作存儲(chǔ)設(shè)備的驅(qū)動(dòng)隔離開來。
技術(shù)細(xì)節(jié)
Linux kernel的 seq_file接口可以生成包含記錄序列的虛擬文件。每個(gè)記錄都必須與一個(gè)seq_file緩存相適配,緩存可以根據(jù)需要擴(kuò)大,參見242行代碼:
m->size是 size_t(無符號(hào)64位整數(shù)),但是size_t也會(huì)傳遞給size參數(shù)為int(有符號(hào)32位整數(shù))而非size_t的函數(shù)。比如,227行調(diào)用的show_mountinfo()函數(shù)調(diào)用了150行的seq_dentry()函數(shù),該函數(shù)會(huì)調(diào)用530行的dentry_path(),該函數(shù)會(huì)調(diào)用387行的prepend():
因此,如果非特權(quán)的本地攻擊者創(chuàng)建、掛載或刪除了完整路徑長度超過1GB的目錄結(jié)構(gòu),同時(shí)如果攻擊者使用open()和 read()打開和讀取/proc/self/mountinfo,那么:
?在seq_read_iter()中,就會(huì)分配一個(gè)2GB的緩存(242行),并調(diào)用show_mountinfo()(227行);
?在show_mountinfo()中,seq_dentry()以及2GB的空緩存會(huì)被調(diào)用(150行);
?在seq_dentry()中,dentry_path()以及2GB大小會(huì)被調(diào)用(530行);
?在dentry_path()中,int buflen是負(fù)的(INT_MIN, -2GB),p指向-2GB的偏移量,同時(shí)會(huì)調(diào)用387行的prepend();
?在prepend()中,*buflen會(huì)減少10字節(jié),并成為更大的正的int(13行),*buffer會(huì)減少10字節(jié),并指向-2GB-10B的偏移量(16行),10字節(jié)的字符串“//deleted”會(huì)越界寫(17行)。
漏洞影響
攻擊者利用該漏洞可以在有漏洞的主機(jī)(默認(rèn)配置情況下)上使非特權(quán)用戶獲得root權(quán)限。Qualys安全研究人員還獨(dú)立驗(yàn)證了該漏洞,開發(fā)了漏洞利用,并在以下版本中獲得了完全root權(quán)限:
?Ubuntu 20.04;
?Ubuntu 20.10;
?Ubuntu 21.04;
?Debian 11;
?Fedora 34 。
其他Linux發(fā)行版理論上也受到該漏洞的影響。
【網(wǎng)安學(xué)習(xí)資料白嫖的哦】
總結(jié)
以上是生活随笔為你收集整理的CVE-2021-33909:Linux本地权限提升漏洞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenRASP xss算法的几种绕过方
- 下一篇: Linux Security Modul