该项目是一个模拟系统,用于重现 Linux pkexec 守护进程中发现的 CVE-2021-4034(越界读/写) 漏洞的核心运行原理。在没有实际 SUID 权限提升的情况下,在受控环境中安全地模拟了环境变量内存区域越界及恶意载荷注入机制。
特别是,该模拟系统能够检测最新 Linux 内核的 execve 防御机制(传递空数组时强制插入空字符串从而形成 argc=1 的现象),并通过修正偏移量,成功模拟了过去存在漏洞的内存环境。
cve-2021-4034-mock/
├── README.md # 项目说明及执行指南
├── src/
│ ├── mock_pkexec.c # 缺少参数值 (argc) 校验的目标守护进程源码
│ └── exploit.c # 通过 execve 传递攻击载荷的攻击者源码
└── bin/ # 编译后的可执行文件存储路径(构建时生成)
在终端中进入项目根目录后,按顺序逐行输入以下命令以编译源码。
# 1. 创建存放可执行文件的 bin 文件夹
mkdir -p bin
# 2. 编译目标程序(模拟系统)
gcc -Wall -Wextra -o bin/mock_pkexec src/mock_pkexec.c
# 3. 编译攻击利用脚本
gcc -Wall -Wextra -o bin/exploit src/exploit.c
编译成功后,bin/ 文件夹内将生成 mock_pkexec 和 exploit 可执行文件。
正常传递参数执行,证明防御逻辑导致权限校验失败或程序安全退出。
./bin/mock_pkexec test_argument
[OK] 消息结束。运行攻击脚本,强制传递 argc=0 载荷(NULL 数组),触发漏洞。
./bin/exploit
argc 调整为 1,并动态修正内存引用索引。argv 数组边界,侵入相邻的 envp 区域。GCONV_PATH)被成功覆写到系统内存,并输出红色的 [FATAL] ENVIRONMENT CORRUPTION DETECTED! 警告。测试结束后,如需删除编译的二进制文件,请使用以下命令。
rm -rf bin/