Linux内核漏洞利用攻击手册
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/kernel-exploitation-15at
技能介绍
要解决的问题
内核漏洞利用的难点往往不在找到漏洞本身,而在于触发之后的整条利用链:在开启 SMEP/SMAP/KPTI 的内核上如何构造内核 ROP 链、拿到 root 权限、再把控制权干净地交还给用户态。通用大模型经常混淆用户态与内核态的利用约束——例如在 SMEP 开启时仍建议 ret2usr,或不知道 KPTI 下直接 swapgs; iretq 会直接崩溃。这份技能把 ctf-wiki 内核章节与真实内核 CVE(如 CVE-2022-0847 DirtyPipe、CVE-2016-5195 DirtyCow)的打法整理成一套可对照操作的攻击手册。
核心能力与关键步骤
- 环境搭建:QEMU 加载自定义内核、GDB 调试(含物理内存读取)、initramfs 修改
- 漏洞分类速查:UAF、越界读写、竞态(TOCTOU)、整数溢出、类型混淆、Double Free、栈溢出,附对应 CVE 实例
- 提权目标:
commit_creds(prepare_kernel_cred(0))、覆写modprobe_path、直接清零 cred 结构的 uid/gid、容器命名空间逃逸 - 内核 ROP:被污染函数指针、返回地址、ops 结构(如
seq_operations劫持)三条控制 RIP 的来源,以及xchg eax, esp; ret等栈迁移 gadget - 返回用户态:
iretq、KPTI trampoline、signal handler 返回三条路径的取舍
适用边界与注意点
- SMEP 之后 ret2usr 失效,ROP 链只能使用内核空间 gadget
- 内核栈只有 8KB–16KB,栈溢出类漏洞在实际中相当罕见
- 可用
-append "nokaslr"、-cpu kvm64,+smep,+smap等 QEMU 开关控制缓解措施,便于验证利用思路 - 技能定位是利用方法论参考,不包含漏洞挖掘或扫描能力
使用场景
- 搭建 QEMU 自定义内核环境,验证 DirtyPipe(CVE-2022-0847)等 UAF/越界漏洞的利用链是否成立
- 内核态已拿到控制流但 SMEP 开启,需要挑选内核空间 ROP gadget 构造提权链
- 利用 KPTI 环境下直接 swapgs; iretq 崩溃的问题,改用 KPTI trampoline 或 signal handler 返回 root shell
- CTF 比赛中拿到内核模块 seq_operations 劫持点,需要据此完成栈迁移和 commit_creds 提权
适合人员
- 安全研究员,正在复现真实内核 CVE 并梳理从漏洞触发到 root 提权的完整利用链
- CTF 参赛选手,需要在内核利用题中快速定位提权路径和返回用户态的正确方式
- 内核/系统开发者,想评估 SMEP、SMAP、KPTI 等缓解措施被绕过的实际风险
- DevSecOps 工程师,需要针对容器逃逸场景验证命名空间隔离的有效性