本仓库包含一个针对 CVE-2017-7184 的 本地权限提升概念验证攻击程序,该漏洞是 Linux 内核中 XFRM(IPsec)netlink 子系统的一个安全漏洞。
该攻击程序演示了无特权用户如何通过以下步骤获取真正 root(UID 0):
创建一个无特权的用户 + 网络命名空间
在命名空间内获取 CAP_NET_ADMIN
触发 XFRM netlink 处理中的内核栈溢出
执行内核 ROP 链以调用:
prepare_kernel_cred(NULL)commit_creds()安全返回用户空间并拥有完整的 root 权限
不需要 sudo。
| 字段 | 值 |
|---|---|
| CVE | CVE-2017-7184 |
| 组件 | Linux 内核 – XFRM Netlink |
| 漏洞类型 | 内核栈溢出 |
| 影响 | 本地权限提升 |
| 攻击向量 | 本地(无特权用户) |
| 攻击类别 | 命名空间滥用 + ROP |
| 首次受影响 | Linux 内核 ≤ 4.8 |
| 修复版本 | 2017 年发布的内核补丁 |
无特权用户命名空间
unshare(CLONE_NEWUSER | CLONE_NEWNET)CAP_NET_ADMINXFRM Netlink 滥用
NETLINK_XFRM 套接字XFRM_MSG_NEWSA 消息内核 ROP 执行
返回用户空间
swapgs; iretqunprivileged_userns_clone = 1gcc检查命名空间支持:
cat /proc/sys/kernel/unprivileged_userns_clone
预期输出:
1
gcc exploit.c -o exploit -pthread
./exploit
不要使用 sudo。
如果成功,你将获得一个真正的 root shell:
uid=0(root) gid=0(root) groups=0(root)
该攻击程序尝试:
从 /proc/kallsyms 泄露符号
如果受限,则回退到硬编码偏移量,用于:
commit_credsprepare_kernel_cred⚠️ ROP 小工具和偏移量是内核版本相关的。 你需要针对其他编译版本进行调整。
这仍然证实系统存在漏洞。
sysctl -w kernel.unprivileged_userns_clone=0
此代码仅用于教育和安全研究目的。
commit_creds 利用