TripleDoggy 使用教程
TripleDoggy 基于clang static analyzer的源码漏洞检测插件 项目地址: https://gitcode.com/gh_mirrors/tr/TripleDoggy
1. 项目介绍
TripleDoggy 是一个基于 clang static analyzer 的源码漏洞检测工具。Clang static analyzer 是一个强大的 C/C++/Objective-C 源代码分析框架,它通过符号执行来遍历整个源文件,从而发现潜在的安全问题。TripleDoggy 目前实现了三个 checker,分别是 NewDereferenceChecker(用于检测空指针解引用漏洞)、DoubleFreeChecker(用于检测 double-free、use-after-free 和内存泄漏漏洞)以及 OverflowChecker(用于检测整数溢出漏洞)。
2. 项目快速启动
环境准备
- 操作系统:推荐使用 Ubuntu 16.04 LTS x64
- 安装依赖:安装 cmake 和 Z3
sudo apt-get install cmake
git clone https://github.com/Z3Prover/z3.git ~/z3
cd z3
python scripts/mk_make.py
cd build
make
sudo make install
下载源码及编译
cd ~
mkdir clang
cd clang
git clone https://github.com/GoSSIP-SJTU/TripleDoggy.git ./llvm
mkdir build
cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../llvm
make
使用方法
以下为使用 TripleDoggy 的示例命令:
- 测试 NewDereferenceChecker
./build/bin/clang -cc1-analyze-analyzer-checker=alpha.unix.NewDereference ./llvm/tripledoggy_test/nulldereference.c
- 测试 DoubleFreeChecker
./build/bin/clang -cc1-analyze-analyzer-checker=alpha.unix.DoubleFree ./llvm/tripledoggy_test/doublefree.c
- 测试 OverflowChecker
./build/bin/clang -cc1-analyze-analyzer-checker=alpha.unix.OverFlow ./llvm/tripledoggy_testoverflow.c
3. 应用案例和最佳实践
案例:在一个项目中,使用 TripleDoggy 检测潜在的空指针解引用漏洞。
void function() {
char *p = malloc(10);
if (p == NULL) {
// 处理错误
}
*p = 'A'; // 此处可能会发生空指针解引用
}
最佳实践:在调用内存分配函数后,应该检查返回值是否为 NULL,以避免空指针解引用漏洞。
void function() {
char *p = malloc(10);
if (p != NULL) {
*p = 'A';
} else {
// 处理错误
}
}
4. 典型生态项目
TripleDoggy 可以作为代码审计工具的一部分,集成到持续集成/持续部署(CI/CD)流程中,与代码质量分析工具、代码风格检查工具等共同构建一个完整的代码质量保障体系。此外,TripleDoggy 也可以与其他静态分析工具如 Coverity、Fortify 等 结合使用,以提高代码的安全性。
TripleDoggy 基于clang static analyzer的源码漏洞检测插件 项目地址: https://gitcode.com/gh_mirrors/tr/TripleDoggy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考