GWP-ASan 和 KFENCE 分别是面向用户空间和内核的概率性内存检测工具。启用后,少量分配会受到围绕已分配内存的额外内存页保护。这样可以以可忽略的性能开销检测缓冲区溢出和释放后使用错误。即使受保护分配的采样率很小,大规模部署时,它们也可以有效地检测内存安全漏洞。自推出以来,这些工具已帮助识别出许多平台漏洞,并已被证明是提高稳定性和安全性的宝贵工具。我们鼓励供应商启用它们,并密切监控最终用户设备上检测到的漏洞。
开发者应通过检查 /data/tombstones
、logcat
或监控供应商 DropboxManager
管道来检查是否存在最终用户错误造成的崩溃。
如需了解更多信息,请参阅我们的 Android 原生代码调试文档。
调试原生 Android 平台代码GWP-ASan:用于检测用户空间内存安全漏洞
GWP-ASan 在 Android 11 中引入,用于用户空间堆分配。当 GWP-ASan 检测到漏洞时,它会记录崩溃报告(Cause: [GWP-ASan]:
),并终止进程。错误报告包含额外的分配和解除分配信息,可更轻松地确定根本原因。
GWP-ASan 在启动时随机为 1% 的系统进程或应用以及在 AndroidManifest.xml
文件中设置 android:gwpAsanMode
的应用启用。
KFENCE:用于检测内核内存安全漏洞
Android 12 引入了 KFENCE,用于内核堆分配。当 KFENCE 检测到漏洞时,它会记录以 BUG: KFENCE,
开头的崩溃报告,禁用保护页并继续执行。这实现了一种内核漏洞检测机制,可最大限度地减少对用户体验的影响。
要详细了解 KFENCE,请参阅 https://linuxkernel.org.cn 上的文档