address-sanitizer
整合 AddressSanitizer (ASan) 以检测 C/C++ 项目中的内存安全漏洞,如缓冲区溢出与释放后使用错误。
简介
AddressSanitizer (ASan) 是一套关键的运行时检测工具,专为发现 C、C++ 和 Rust 代码库中严重的内存损坏错误而设计。此技能提供自动化工作流程,将 ASan 整合到您的模糊测试 (fuzzing) 与测试管线中,确保内存安全违规(通常是可利用安全漏洞的根本原因)能在开发阶段早期被拦截。本工具适用于开发系统级代码、需要手动内存管理的软件工程师、安全研究人员与 QA 测试人员。
-
于编译时对源代码进行插装 (instrumentation) 以监控内存分配,实现实时检测非法内存操作。
-
提供堆缓冲区溢出 (heap-buffer-overflow)、栈缓冲区溢出 (stack-buffer-overflow)、释放后使用 (use-after-free)、重复释放 (double-free) 与内存泄漏的深度诊断报告。
-
简化 ASAN_OPTIONS 的配置,以应对不同环境的需求,例如详细信息输出 (verbosity)、泄漏检测管理与错误中断设置。
-
支持整合 libFuzzer 与 AFL++ 等工业级模糊测试引擎。
-
提供将 ASan 与 UndefinedBehaviorSanitizer (UBSan) 等其他消毒器结合的指引,以构建全面的安全防御体系。
-
在模糊测试或单元测试期间,使用此技能通过 -fsanitize=address 进行编译插装。
-
需要谨慎管理内存限制(例如在 libFuzzer 中设置 -rss_limit_mb=0),因为 ASan 会保留约 20TB 的虚拟内存。
-
由于潜在的性能开销(通常约 2-4 倍的减速)以及若错误报告暴露可能导致的安全性风险,不建议在生产环境中使用。
-
非常适合用于调试间歇性崩溃、审计遗留代码库的安全回归问题,以及建立稳健的测试工具链。
-
限制包括对 Windows 与 macOS 等非 Linux 平台的支持有限或尚处于实验阶段,且其性能开销可能不适用于资源受限的环境。
仓库统计
- Star 数
- 4,874
- Fork 数
- 424
- Open Issue 数
- 21
- 主要语言
- Python
- 默认分支
- main
- 同步状态
- 空闲
- 最近同步时间
- 2026年4月29日 06:42