n132/BeapOverflow

GitHub: n132/BeapOverflow

展示 Linux 内核 x86_64 架构下堆地址随机化范围不足导致 BSS 溢出到堆的技术研究及已修复漏洞的 PoC。

Stars: 20 | Forks: 2

# BeapOverflow (Bss 溢出 -> 堆溢出) 这是一个关于地址随机化的发现。在 `bss` 段和堆区域之间可能没有间隙。 这不是一个安全的设计,因为人们可以从 `bss` 溢出到堆,并在 tcache 管理结构上部分写入重要数据。 我们可以暴力破解 0x2000 次(理论上)来执行 BeapOverflow。 但是我们需要在 `bss` 上溢出至少超过一个页面,这很罕见。 # 补丁 我向 linux 内核安全团队报告了这个问题,并且这个问题已在此次 [提交][2] 中修复 但是 `.bss` 仍然可以连接到堆。概率为 1024/1G,这在大多数情况下太小而难以利用 ``` unsigned long arch_randomize_brk(struct mm_struct *mm) { - return randomize_page(mm->brk, 0x02000000); + if (mmap_is_ia32()) + return randomize_page(mm->brk, SZ_32M); + + return randomize_page(mm->brk, SZ_1G); } ``` # 概念验证 - 编译 c 代码:[main.c](./main.c) - 多次运行 Python 脚本以查看偏移范围:[exp.py](./exp.py) ![PoC](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/33619466d4074915.png) # 最大范围 0 - 0x1fff # 源码阅读 在阅读了这篇 [文章][1] 后我定位了该文件,并且源代码确认了我代码的正确性: https://elixir.bootlin.com/linux/v6.8/source/arch/x86/kernel/process.c#L1031 # 原因 尽管我们有更多空间,但仍然使用 x86 的值 (0x2000)。
标签:BSS段溢出, Exploit开发, Linux内核安全, PoC, TCache攻击, Web报告查看器, x86架构, 二进制利用, 内存破坏, 内存管理, 内核漏洞, 地址随机化绕过, 堆溢出, 子域名枚举, 安全渗透, 暴力破解, 系统安全, 网络安全, 逆向工具, 隐私保护