最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

網(wǎng)安 | Linux Polkit 權(quán)限提升漏洞(CVE-2021-4034)

2023-04-10 16:29 作者:蝸牛學(xué)苑  | 我要投稿

一、漏洞簡介

2021年,Qualys研究團(tuán)隊(duì)公開披露了在Polkit的pkexec 中發(fā)現(xiàn)的一個權(quán)限提升漏洞,也被稱為PwnKit。該漏洞是由于pkexec 沒有正確處理調(diào)用參數(shù),導(dǎo)致將環(huán)境變量作為命令執(zhí)行,攻擊者可以通過構(gòu)造環(huán)境變量的方式,誘使pkexec執(zhí)行任意代碼使得非特權(quán)本地用戶獲取到root的權(quán)限。

影響范圍(受影響的主流Linux發(fā)行版本):Ubuntu 21.10 (Impish Indri) policykit-1 < 0.105-31ubuntu0.1 Ubuntu 21.04 (Hirsute Hippo) policykit-1 Ignored (reached end-of-life) Ubuntu 20.04 LTS (Focal Fossa) policykit-1 < Released (0.105-26ubuntu1.2) Ubuntu 18.04 LTS (Bionic Beaver) policykit-1 < Released (0.105-20ubuntu0.18.04.6) Ubuntu 16.04 ESM (Xenial Xerus) policykit-1 < Released (0.105-14.1ubuntu0.5+esm1) Ubuntu 14.04 ESM (Trusty Tahr) policykit-1 < Released (0.105-4ubuntu3.14.04.6+esm1) CentOS 6 polkit < polkit-0.96-11.el6_10.2 CentOS 7 polkit < polkit-0.112-26.el7_9.1 CentOS 8.0 polkit < polkit-0.115-13.el8_5.1 CentOS 8.2 polkit < polkit-0.115-11.el8_2.2 CentOS 8.4 polkit < polkit-0.115-11.el8_4.2 Debain stretch policykit-1 < 0.105-18+deb9u2 Debain buster policykit-1 < 0.105-25+deb10u1 Debain bookworm, bullseye policykit-1 < 0.105-31.1

二、漏洞原理

2.1 Polkit

Polkit(PolicyKit)是類Unix系統(tǒng)中一個應(yīng)用程序級別的工具集,通過定義和審核權(quán)限規(guī)則,實(shí)現(xiàn)不同優(yōu)先級進(jìn)程間的通訊。pkexec是Polkit開源應(yīng)用框架的一部分,可以使授權(quán)非特權(quán)用戶根據(jù)定義的策略以特權(quán)用戶的身份執(zhí)行命令。

2.2 原理分析

該漏洞主要是使用pkexec加載惡意的so文件來進(jìn)行提權(quán),這里使用的是polkit-0.120的源碼進(jìn)行分析。下載地址為:https://www.freedesktop.org/software/polkit/releases/polkit-0.120.tar.gz?。src/programs/pkexec.c的部分代碼如下:

435行:main函數(shù),兩個參數(shù)含義如下:

  • argc (argument count):表示傳入main函數(shù)中參數(shù)的個數(shù),包括這個程序本身。

  • argv(argument vector):表示傳入main函數(shù)中的參數(shù)列表,其中argv[0]是這個函數(shù)的名稱。

534-568行:main函數(shù)處理命令行參數(shù)。

610-640 行:在 PATH 環(huán)境變量的目錄中搜索要執(zhí)行的程序,如果其路徑不是絕對路徑(path[0] != '/'),則argv[n] = path = s。

若我們讓argc為0,即傳入的參數(shù)為空,則會出現(xiàn)以下情況:

第534行:n被賦值為1。

第610行:argv[n] (此時為argv[1])將會越界讀取指針路徑。

第639行:指針s被越界寫入argv[1]的內(nèi)容。

而要知道這個越界的argv[1]讀寫的什么內(nèi)容,我們就必須得了解execve函數(shù),其原型如下:

當(dāng)使用execve()函數(shù)啟動一個新程序時,內(nèi)核將參數(shù)、環(huán)境變量字符串以及指針(argv與envp)復(fù)制到新程序堆棧的末尾。如使用其啟動pkexec,則execve("/usr/bin/pkexec",{"program","-option",...},{"value","PATH=name",...})的內(nèi)存布局如下圖:

由上圖可知,argv和envp指針在內(nèi)存中是連續(xù)的,若argc為0,則argv[1]指向的就是envp[0],就是第一個環(huán)境變量“value”。繼續(xù)前面的分析:

第610行:將要執(zhí)行的程序的路徑從argv[1](即envp[0])中越界讀取,并指向“value”。

第632行:這個路徑“value”被傳遞給 g_find_program_in_path函數(shù),在 PATH 環(huán)境變量的目錄中搜索一個名為“value”的可執(zhí)行文件;如果找到這樣的可執(zhí)行文件,則將其完整路徑返回給pkexec第 632 行的指針s;

第639行:這個完整路徑被越界寫入argv[1](即envp[0]),從而覆蓋了我們的第一個環(huán)境變量。

但是在670行對環(huán)境變量進(jìn)行了校驗(yàn),防止引入危險的環(huán)境變量。

該validate_environment_variable() 函數(shù)部分代碼如下:

其中使用了g_printerr()函數(shù)打印錯誤消息,該函數(shù)調(diào)用了glibc的函數(shù)iconv_open()函數(shù)。iconv_open()函數(shù)使用時首先會找到系統(tǒng)提供的gconv-modules文件(這個文件中包含了各個字符集的相關(guān)信息存儲的路徑,每個字符集的相關(guān)信息存儲在一個.so文件中,即gconv-modules文件提供了各個字符集的.so文件所在位置)。然后再根據(jù)gconv-modules文件的指示去鏈接參數(shù)對應(yīng)的.so文件。

而GCONV_PATH這個環(huán)境變量可以修改指向gconv-modules的位置,也就是說如果攻擊者控制了GCONV_PATH就可以讓iconv_open找到攻擊者構(gòu)造的gconv-modules,讓其執(zhí)行指定的.so文件內(nèi)的特定函數(shù)來進(jìn)行提權(quán)。

三、漏洞復(fù)現(xiàn)

3.1 實(shí)驗(yàn)環(huán)境

操作系統(tǒng):Centos7.9(鏡像地址:https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso)

普通用戶:zhangsan

漏洞利用工具:https://github.com/berdav/CVE-2021-4034

3.2 復(fù)現(xiàn)過程

下載漏洞利用工具,這里現(xiàn)將工具壓縮包下載值kali,在kali上用python開啟web服務(wù),來讓被攻擊主機(jī)下載。

壓縮,編譯,利用。

提權(quán)成功。

四、修復(fù)建議

更新官方補(bǔ)丁,下載地址:https://gitlab.freedesktop.org/polkit/polkit/-/commit/a2bf5c9c83b6ae46cbd5c779d3055bff81ded683

根據(jù)不同廠商的修復(fù)建議或安全通告進(jìn)行防護(hù)。

Redhat:https://access.redhat.com/security/cve/CVE-2021-4034

Ubuntu:https://ubuntu.com/security/CVE-2021-4034

Debian:https://security-tracker.debian.org/tracker/CVE-2021-4034

臨時防護(hù)可以移除 pkexec 的 suid位。

五、參考文章

CVE-2021-4034 Linux Polkit 權(quán)限提升漏洞挖掘思路解讀(https://cloud.tencent.com/developer/article/1940677)。

SUID提權(quán):CVE-2021-4034漏洞全解析(https://www.cnblogs.com/northeast-coder/p/15925463.html)。

CVE-2021-0434 詳解 exp編寫 復(fù)現(xiàn)(https://www.cnblogs.com/ash-33/p/16118713.html)。

CVE-2021-4034:Linux Polkit 權(quán)限提升漏洞復(fù)現(xiàn)及修復(fù)(https://blog.csdn.net/laobanjiull/article/details/122715651)。

PwnKit: Local Privilege Escalation Vulnerability Discovered in polkit’s pkexec (CVE-2021-4034) (https://blog.qualys.com/vulnerabilities-threat-research/2022/01/25/pwnkit-local-privilege-escalation-vulnerability-discovered-in-polkits-pkexec-cve-2021-4034)。




網(wǎng)安 | Linux Polkit 權(quán)限提升漏洞(CVE-2021-4034)的評論 (共 條)

分享到微博請遵守國家法律
海南省| 大埔县| 河北省| 广宗县| 城口县| 沿河| 从化市| 张家口市| 大名县| 根河市| 鲁甸县| 凤台县| 北宁市| 天峻县| 桐柏县| 南漳县| 虎林市| 聂荣县| 甘南县| 西丰县| 乐陵市| 望城县| 成都市| 陆良县| 林甸县| 新余市| 韶山市| 宝兴县| 堆龙德庆县| 棋牌| 麦盖提县| 汉中市| 玉田县| 普洱| 任丘市| 沧州市| 牟定县| 桂平市| 镇原县| 高密市| 志丹县|