SuperAPI AI 工具集

llvm-security

安全与审计

查看项目

更新于 10-15 21:53

技能介绍

用途:该技能面向使用 LLVM/Clang 进行安全开发与检测的场景,覆盖基于 LLVM 的安全特性、Sanitizer、加固机制与安全编译实践。

主要能力:一是 Sanitizer,包括 AddressSanitizer 检测缓冲区溢出、释放后使用、作用域外使用与内存泄漏,命令如 clang -fsanitize=address -g program.c -o program;MemorySanitizer 检测未初始化内存读取;ThreadSanitizer 检测多线程数据竞争;UndefinedBehaviorSanitizer 检测运行时未定义行为,并可按具体检查项启用。

二是加固技术:栈保护 -fstack-protector-strong、栈冲突保护 -fstack-clash-protection、安全栈 -fsanitize=safe-stack;控制流完整性(CFI)前向边检查,如 -fsanitize=cfi -flto 及 cfi-vcall、cfi-nvcall、cfi-icall;影子调用栈 -fsanitize=shadow-call-stack 保护返回地址;以及 -fPIE -pie 支持完整 ASLR。

三是符号执行与漏洞缓解:集成 KLEE、SymCC,以及 Caffeine、SymSan、Haybale 等工具;含类型检查、内存泄漏检测(LeakSanitizer)与影子栈返回地址保护、ARM 指针认证等思路。

四是安全编译流程与模糊测试:给出加固编译标志清单和编译器安全检查选项,并演示 libFuzzer 与 Sanitizer 组合,如 clang -fsanitize=fuzzer,address,undefined -fno-omit-frame-pointer -g。

使用方式:通过给 Clang 添加相应 -fsanitize 或加固标志进行编译与检测,并在模糊测试或符号执行工作流中组合使用。

适用场景与限制:适用于 C/C++ 程序的内存安全检测、多线程竞态排查、运行时未定义行为检查和安全加固编译。技能文档仅提供概念与示例命令,未说明具体平台支持范围、性能开销、版本要求或与现有构建系统的集成步骤;详细且最新的工具列表需从资料中给出的 README 地址获取。分类:安全与审计。