CVE-2021-4034 PwnKit PolKit pkexec 本地提权漏洞
内容提要
Qualys研究团队在PolKit pkexec中发现了一个本地特权提升漏洞CVE-2021-4034,该漏洞被命名为PwnKit,允许巧妙的利用。文章对漏洞进行了全面分析,包括利用过程和预防措施。该漏洞允许任意环境变量注入和特权提升。
延伸解读
漏洞利用的巧妙之处
PwnKit 的利用链设计非常精妙,它通过让 pkexec 的 argv 为空数组,触发越界读取和写入,从而注入任意环境变量。这种利用方式不依赖复杂的内存布局,而是巧妙结合了 execve 和 PATH 环境变量的控制,最终加载恶意动态库完成提权。其思路展示了环境变量处理不当可能带来的严重后果。
提权过程中的关键步骤
利用过程分为几个关键步骤:首先通过 execve 使 argv 为空,导致 pkexec 越界访问 envp[0];然后控制 PATH 环境变量进行相对路径扩展;接着越界写入改写 envp[0] 注入 GCONV_PATH;最后利用 glib 的 g_printerr 在字符集转换时加载自定义 so 动态库。每一步都环环相扣,缺一不可。
利用时的注意事项
在实际利用中,需要注意 setenv 可能导致环境变量数组 envp 发生位置迁移。这意味着在构造利用链时,必须考虑环境变量数组的内存布局变化,否则可能导致利用失败。这一细节体现了漏洞利用对环境依赖的敏感性,也增加了利用的复杂性。
Q&A
CVE-2021-4034漏洞是什么?
CVE-2021-4034是Qualys研究团队发现的PolKit pkexec中的本地特权提升漏洞,命名为PwnKit。
PwnKit漏洞的利用过程是怎样的?
利用过程包括execve执行PolKit pkexec时让argv为空数组,导致越界访问和写入,通过控制PATH和注入GCONV_PATH实现提权。
如何预防CVE-2021-4034漏洞的利用?
预防措施包括注意setenv可能导致环境变量数组位置迁移,确保环境变量的安全性。
CVE-2021-4034漏洞获得了什么奖项?
该漏洞获得了Pwnie Awards / Epic Achievement提名。
利用PwnKit漏洞需要注意哪些事项?
利用过程中需注意setenv可能导致环境变量数组位置迁移。
PwnKit漏洞的核心原理是什么?
核心原理是通过execve控制argv和envp,实现越界访问和任意环境变量注入。