内核信息泄漏 是指攻击者通过系统调用、文件读取、内存操作等手段,获取操作系统内核中本应受限访问的敏感信息,例如内核地址、堆栈信息、结构体内容、ASLR 基址、密钥等。这类信息往往可用于后续的漏洞利用(如绕过 KASLR、防御绕过、任意读写等),是提权链中的关键一环。
现代操作系统中的内核负责管理硬件资源,运行在高权限(Ring 0)下。为了提升安全性,内核通常与用户态隔离,且采取多种保护机制(如 KASLR、SMEP、KPTI)。
内核信息泄漏漏洞的成因主要包括:
printk() 等调试语句中输出敏感数据,若攻击者可读取 /proc、dmesg 等接口,便可获得关键内部信息。| 泄露信息类型 | 利用效果 |
|---|---|
| 内核地址(如函数指针) | 绕过 KASLR,配合 ROP 实现提权 |
| 结构体内容(如 cred) | 获取当前用户权限结构,为修改权限做准备 |
| 内核栈内容 | 重构栈帧,实现返回地址劫持 |
| 内核随机值(如 canary) | 绕过栈溢出保护(栈 canary) |
通常作为提权链条中的第一步:
task_struct、cred、内核函数地址等;ROP 链;| 防护措施 | 描述 |
|---|---|
| 内核地址空间布局随机化(KASLR) | 增加地址猜测难度 |
| 清零返回数据 | 使用 memset()、kmem_cache_alloc_zero() 等 |
| 减少信息接口 | 限制 /proc, /sys, dmesg 的读取权限 |
| LSM 限制 | SELinux、AppArmor 限制用户空间对特定文件的访问 |
ip6gre 信息泄漏Linux kernel 网络子系统中 ip6gre_err() 存在错误的 skb 处理逻辑,可能将内核内存信息通过错误处理路径泄漏给用户空间,影响版本包括 4.10.x 及之前。
该漏洞可配合堆喷射与任意写漏洞进行提权利用。
参考链接:
copy_to_user() 未清零结构体;/proc/kallsyms 是否已开启地址隐藏。内核信息泄漏虽不直接造成破坏,但常作为攻击链中的基础环节,协助攻击者绕过防御、构造稳定的提权方式。开发者应强化内核空间与用户空间之间的隔离,严禁随意暴露内核内部信息。