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