CVE-2021-4034 PwnKit PolKit pkexec 本地提权漏洞
内容提要
Qualys研究团队在PolKit pkexec中发现了本地特权升级漏洞CVE-2021-4034,该漏洞名为PwnKit,允许巧妙的利用。文章对漏洞进行了全面分析,包括利用过程和预防措施。该漏洞允许任意环境变量注入和特权升级。
延伸解读
漏洞利用的技术核心
PwnKit 的巧妙之处在于利用 pkexec 处理参数时的越界访问。当 execve 传入空 argv 时,pkexec 错误地将 envp[0] 当作 argv[1] 读取,并通过 PATH 环境变量进行路径扩展,导致越界写入,从而改写 envp[0] 注入任意环境变量。这种从内存错误到环境变量注入的链条,展示了本地提权漏洞的典型利用思路。
环境变量注入与动态库加载
攻击者通过越界写入注入 GCONV_PATH 环境变量,并配合 glib 的 g_printerr 函数。在字符集转换过程中,glib 会依据 GCONV_PATH 加载自定义的动态库,从而执行任意代码。这一步骤将环境变量注入转化为代码执行,是提权成功的关键。
利用过程中的注意事项
在实际利用时,需注意 setenv 函数可能导致环境变量数组 envp 发生位置迁移。如果环境变量数组被重新分配,之前通过越界写入修改的 envp[0] 可能失效,导致利用失败。因此,构造稳定的利用链需要仔细处理环境变量的布局和操作顺序。
Q&A
CVE-2021-4034漏洞是什么?
CVE-2021-4034是Qualys研究团队发现的本地提权漏洞,名为PwnKit,位于PolKit pkexec中。
PwnKit漏洞的利用过程是怎样的?
利用过程包括execve执行时让argv为空数组,导致越界访问和写入,从而注入任意环境变量。
如何通过CVE-2021-4034漏洞实现特权升级?
通过控制PATH环境变量和注入GCONV_PATH环境变量,加载自定义动态库来实现特权升级。
PwnKit漏洞有哪些预防措施?
文章未详细列出预防措施,但提到利用时需注意setenv可能导致环境变量数组位置迁移。
CVE-2021-4034漏洞获得了什么奖项?
该漏洞获得了Pwnie Awards / Epic Achievement提名。
PwnKit漏洞的利用需要注意哪些细节?
利用时需注意setenv可能导致环境变量数组位置迁移,这可能影响漏洞的利用效果。