揭秘 KASAN:毒区、红区与影子内存
Poison, redzones and shadows: inside KASAN
虽然 Rust 正在 Linux 内核中逐渐普及,但 C 语言依然是主流,这也带来了缓冲区溢出等内存错误风险。KASAN(Kernel Address Sanitizer)是内核开发者的必备工具,能精准捕获越界访问和释放后使用问题。本文不教如何使用,而是深入 KASAN 内部,解析其编译时插桩与影子内存(shadow memory)机制。通过 virtme-ng 搭建测试环境,我们亲眼目睹 KASAN 如何报告内存错误,并理解其用 1/8 系统内存追踪状态的精妙设计。
"即使 Rust 在 Linux 内核代码库中的存在正缓慢增加,该项目在很大程度上仍是用 C 语言编写的。"