parag25mcf10022/OverflowGuard
GitHub: parag25mcf10022/OverflowGuard
一个集成了AST/CFG分析、Z3符号执行、跨文件污点追踪及IaC扫描的多语言深度安全分析框架,用于从代码到基础设施的全栈漏洞检测与修复。
Stars: 1 | Forks: 0
# 🛡️ OverflowGuard v11.0
**首席研究员:** Parag Bagade
**GitHub:** [parag25mcf10022/OverflowGuard](https://github.com/parag25mcf10022/OverflowGuard)
**Medium:** 在这里阅读关于该工具的文章 [https://medium.com/@bagade1122/i-built-a-security-scanner-that-goes-beyond-regex-heres-why-and-how-0713f64d03ae]
**状态:** v11.0 (IaC 扫描 + 跨文件污点分析 + 容器安全 + OWASP Top 10 + 自定义规则 + 自动修复 + JSON 输出 + 趋势跟踪 + CI 模板)





## 🚀 概述
**OverflowGuard** 是一个多语言安全编排框架,用于检测、分类和报告**14种编程语言**中的内存损坏和逻辑漏洞:C、C++、Python、Go、Rust、Java、JavaScript、TypeScript、PHP、Ruby、C#、Kotlin、Swift 和 Scala。
与依赖正则表达式模式匹配的表层扫描器不同,OverflowGuard 具备**真正的 AST 解析** (tree-sitter)、基于控制流图 (CFG) 的**真正的数据流分析**(到达定义、带有 gen/kill 语义的污点传播)、**真正的符号执行**(具有位向量算术、路径约束和反例生成的 Z3 SMT 求解器)、**上下文感知的误报过滤**(基于支配者的清理器验证、死代码消除、测试代码检测)、**高级源到汇污点分析**(Checkmarx/CodeQL 风格的风险评分)、**差异化扫描**(git 感知,仅扫描更改的文件)、**修复指导**(针对28种漏洞类型的安全替代代码片段)、**基础设施即代码扫描** (Terraform、Kubernetes、Docker、CloudFormation、Ansible)、**跨文件污点分析**、**容器镜像扫描**、**OWASP Top 10 覆盖率报告**、**自定义规则引擎**、**自动修复补丁生成**、**JSON 机器可读输出**、**严重性趋势跟踪**,以及用于 GitLab、Jenkins、Bitbucket 和 Azure Pipelines 的 **CI/CD 模板**。
| 阶段 | 技术 | 覆盖范围 |
|---|---|---|
| 0 — 真正的 AST + CFG | `tree_sitter_engine.py` + `cfg_builder.py` | **14种语言** — 真正的语法树分析 |
| 0a — 真正的数据流 | `real_dataflow.py` (基于 CFG 的污点) | **14种语言** — 源→汇以及在 CFG 上的 gen/kill |
| 0b — 真正的符号执行 | `real_symbolic.py` (Z3 / 区间) | **14种语言** — 路径敏感,反例生成 |
| 0c — 误报过滤器 | `false_positive_filter.py` | **14种语言** — 基于支配者的守卫验证 |
| 1a — 污点 / 数据流 | `taint_analyzer.py` (零依赖) | C/C++, Python, Java, Go, Rust |
| 1b — AST 汇/源 | libclang + 正则表达式回退 | C, C++ |
| 1c — 深度模式 | `deep_analyzer.py` | C/C++ |
| 1d — SSA 数据流 | `dataflow.py` 定义-使用链 | C/C++, Python |
| 1e — 调用摘要 | `call_summary.py` | C/C++, Python |
| 1f — 符号范围 | `symbolic_check.py` (Z3 / 回退) | C/C++, Python |
| 1g — 过程间分析 | `interprocedural_taint.py` | C/C++, Python |
| 1h — 并发 | `concurrency_analyzer.py` | C/C++, Go |
| 1i — 高级污点 | `advanced_taint.py` (源→汇, CVSS 风险评分) | C/C++, Python, Java, Go, Rust |
| 2a — 外部 SAST | cppcheck + clang-tidy + semgrep + Infer + LLVM | C/C++, Python, Java |
| 2b — 混合模糊测试 | `concolic_fuzzer.py` (angr → AFL++ → ASAN) | C/C++ |
| 3 — SCA | `sca_scanner.py` (OSV API) | 所有 manifest 格式 |
| 4 — 密钥扫描 | `secrets_scanner.py` (30+ 模式 + 熵) | 所有源码 + 配置文件 |
| **★ GitHub** | **`github_scanner.py` (克隆或 Contents API)** | **任何公共或私有 GitHub 仓库** |
| 阶段 | 技术 | 覆盖范围 |
|---|---|---|
| 7 — IaC 扫描 | `iac_scanner.py` (44条规则,5种框架) | Terraform, Kubernetes, Docker, CloudFormation, Ansible |
| 8 — 跨文件污点 | `cross_file_taint.py` (文件级调用图) | C/C++, Python, Java, Go, Rust, JS/TS — 多跳注入路径 |
| 9 — 容器扫描 | `container_scanner.py` (CIS Benchmark) | Dockerfiles, docker-compose.yml — 18条规则 + EOL 基础镜像库 |
| 10 — 自定义规则 | `custom_rules.py` (YAML 引擎) | 任何语言 — 用户定义的基于正则表达式的安全规则 |
| 11 — OWASP Top 10 | `owasp_mapper.py` (200+ CWE 映射) | 将所有发现映射到 OWASP Top 10 (2021) 类别 |
| 12 — 自动修复 | `autofix.py` (统一差异补丁) | C/C++, Python, Go, Java — 18种自动修复模式 |
| 13 — 趋势跟踪 | `trend_tracker.py` (SQLite) | 带有质量门的历史严重性趋势 |
| 14 — JSON 输出 | `json_output.py` | 用于 CI/CD 流水线的机器可读 JSON 报告 |
输出格式:**HTML 仪表板**(带有安全替代修复卡片 + OWASP 覆盖率)、**SARIF 2.1.0** (GitHub Code Scanning / Azure DevOps)、**CycloneDX 1.4 SBOM**、**JSON** (适用于 CI/CD 的机器可读格式)。
扫描模式:**完整目录扫描**、**单文件**、**GitHub 仓库**、**差异化扫描** (git 感知,`--diff` 标志)、**增量扫描** (依赖锥,`--incremental` 标志)。
## ✨ 功能
### v11.0 — IaC 扫描、跨文件污点分析、容器安全、OWASP Top 10、自定义规则、自动修复、JSON 输出、趋势跟踪、CI 模板
- **项目配置** (`project_config.py`) — 带有路径排除、规则过滤、严重性阈值、语言选择和功能开关的 `.overflowguard.yml` 配置文件;通过向上遍历目录树自动发现配置;使用 `--init-config` 生成示例配置
- **基础设施即代码扫描** (`iac_scanner.py`) — 涵盖 **5种 IaC 框架** 的44条安全规则:Terraform (14条规则:S3 公开访问、未加密存储、开放安全组、无日志记录、公共 IP 等)、Kubernetes (11条规则:特权容器、主机 PID/网络、缺少资源限制、`latest` 标签等)、Dockerfile (9条规则:来自 URL 的 `ADD`、`curl | bash`、ENV 中的机密等)、CloudFormation (6条规则:公开 S3、未加密的 RDS/EBS、IAM 通配符、开放 SG)、Ansible (4条规则:明文密码、缺少 no_log、shell 注入、HTTP 下载)
- **跨文件污点分析** (`cross_file_taint.py`) — 通过 C/C++ (`#include`)、Python (`import`/`from`)、Java (`import`)、Go (`import`)、Rust (`use`/`mod`) 和 JavaScript/TypeScript (`import`/`require`) 的导入/包含构建文件级调用图;跨越文件边界传播污点发现,以检测多跳注入路径;按语言区分的源/汇数据库
- **自动修复补丁生成** (`autofix.py`) — 为18种漏洞模式生成统一差异补丁:C/C++ (7种: `gets`→`fgets`, `strcpy`→`strncpy`, `sprintf`→`snprintf`, printf format, `system()`, `rand()`→`arc4random()`), Python (7种: SQL injection, `os.system`, `eval`, `pickle`, weak-crypto, hardcoded-password, path-traversal), Go (2种: SQL, `InsecureSkipVerify`), Java (2种: `Statement`→`PreparedStatement`, weak-crypto);传递 `--autofix` 以生成 `.patch` 文件
- **JSON 机器可读输出** (`json_output.py`) — `--format json` 生成结构化的 JSON 报告,包含摘要、所有发现、SCA、IaC、跨文件污点、自动修复、OWASP 映射和趋势数据;非常适合 CI/CD 流水线消费和 ASPM 集成
- **严重性趋势跟踪** (`trend_tracker.py`) — 基于 SQLite 的历史扫描数据库 (`~/.overflowguard/trends.db`);记录每次扫描的严重性计数、git commit 和分支;将当前扫描与上一次进行比较并显示增量 (↑/↓/→);**质量门**:如果严重或高危发现增加则失败;趋势数据包含在 JSON 输出中
- **自定义规则引擎** (`custom_rules.py`) — `rules/` 目录中基于 YAML 的规则定义;每条规则包含 id、正则表达式模式、消息、严重性、语言过滤器、CWE 和修复建议;使用 `--init-rules` 生成示例规则;当检测到 `rules/` 目录时自动运行扫描
- **容器和 Dockerfile 扫描** (`container_scanner.py`) — 18条 CIS Docker Benchmark 规则,涵盖权限提升(以 root 运行、`--privileged`)、供应链攻击(`curl | bash`、来自 URL 的 `ADD`)、网络暴露(SSH 端口 22、数据库端口)、镜像中的机密(`.env`、`.pem`、硬编码的 ENV 密码)以及最佳实践(未固定基础镜像、缺少 `HEALTHCHECK`、`apt-get` 缓存清理);25条记录的 EOL/漏洞基础镜像数据库;docker-compose.yml 扫描(特权模式、主机网络、危险挂载)
- **增量跨文件分析** (`incremental_analysis.py`) — 将 git diff 与依赖锥分析相结合:仅重新分析更改的文件以及导入/包含这些文件的文件;通过 BFS 遍历反向依赖图;报告扫描节省的百分比;传递 `--incremental` 以启用
- **OWASP Top 10 (2021) 覆盖率报告** (`owasp_mapper.py`) — 使用包含200多个 CWE 到 OWASP 映射的表以及基于关键字的回退机制,将所有发现映射到 OWASP Top 10 类别;生成 CLI 表格和 HTML 片段,显示覆盖率、按类别的发现计数以及严重性细分;包含在 JSON 输出中
- **CI/CD 流水线模板** (`ci_templates/`) — 适用于 **GitLab CI**(4个阶段:test、scan、diff-scan、pages)、**Jenkins**(声明式流水线,带有 JUnit + HTML publisher 的4个阶段)、**Bitbucket Pipelines**(default + PR + branch 流水线)和 **Azure Pipelines**(带有 JUnit publish 和 build artifacts 的2个阶段)的现成流水线配置
### v10.0 — 差异化扫描、修复指导、高级污点分析
- **差异化扫描** (`diff_scanner.py`) — git 感知模式,仅扫描**更改的文件**,以大幅缩短大型仓库的扫描时间;支持五种 diff 模式:`staged` (git 索引中的文件)、`working` (未暂存的更改)、`head` (上一次提交)、`commits:N` (最近 N 次提交)、`last-tag` (自最近一个标签以来的更改);自动检测仓库根目录,如果 git 不可用则回退到完全扫描;在 CLI 中传递 `--diff [mode]` 和可选的 `--diff-only`
- **修复指导** (`remediation_db.py`) —,每一项发现都在 HTML 报告中包含一个**“安全替代方案”**代码片段卡片,并在 CLI 输出中包含单行提示;涵盖**28种漏洞类型**,包含危险调用解释、为何危险、安全替换、带语言标签的代码片段以及参考链接 (CWE / OWASP);直接集成为 HTML 仪表板中可折叠的 `
` 块,位于各项发现的卡片内
- **高级源到汇污点分析** (`advanced_taint.py`) — 精英级 Checkmarx / CodeQL 风格的污点引擎,可跟踪从**源** (network sockets, `recv`, `fgets`, `input()`, `http.Request`, `stdin`) 到**汇** (`system()`, `exec()`, `memcpy`, `strcpy`, SQL execute, `eval`) 的攻击者可控数据,并带有**类似 CVSS 的风险评分** (0–10 分);双引擎:基于 CFG 的定点污点跟踪器 (tree-sitter) + 正则表达式回退;针对 C/C++, Python, Java, Go, Rust 的按语言区分的源/汇/清理器数据库;清理器家族(bounds_check、shell_escape、parameterization、input_validation 等)降低风险分数;风险来源加权(network=9.8, user_input=8.0, env=5.5, file=3.0)
### v9.0 — 真正的分析引擎(工业级)
- **真正的 AST 解析** (`tree_sitter_engine.py`) — 使用 [tree-sitter](https://tree-sitter.github.io/) 为 **14种语言** 构建合适的语法树:C、C++、Python、Java、Go、Rust、JavaScript、TypeScript、PHP、Ruby、C#、Kotlin、Swift、Scala;用合适的节点类型感知 AST 遍历取代正则表达式模式匹配;包含200多个条目的按语言区分的汇/源/清理器数据库;当未安装 tree-sitter 时,可优雅地回退到正则表达式
- **控制流图构建器** (`cfg_builder.py`) — 从 tree-sitter AST 构建合适的基本块 CFG;处理 if/else 分支、循环 (for/while/do)、switch/match、try/catch/finally、break/continue、return;计算**支配者树** (Cooper-Harvey-Kennedy 算法) 以进行守卫验证;支持所有14种语言
- **真正的数据流分析** (`real_dataflow.py`) — 具有适当的 gen/kill 语义和定点迭代的基于 CFG 的污点传播;到达定义分析;带有完整污点流路径的源→汇路径跟踪;基于支配者的清理器验证(非 ±10 行启发式);通过调用图摘要进行过程间污点分析;通过基于 AST 的变量跟踪进行双重释放 (double-free) 和释放后使用 (use-after-free) 检测;未检查的数组访问检测
- **真正的符号执行** (`real_symbolic.py`) — 使用带有64位位向量算术的 Z3 SMT 求解器进行路径敏感分析;分支处的路径约束累积;不可行路径修剪;缓冲区溢出证明(memcpy size > alloc size);strcpy 无界源证明;整数溢出/回绕检测;数组越界证明;**反例生成**(Z3 生成触发 bug 的具体输入);当缺少 Z3 时,回退到区间抽象解释
- **上下文感知的误报过滤器** (`false_positive_filter.py`) — 测试文件/函数检测(自动降级测试代码中的发现);死代码消除(抑制 `if(0)` / `if False` 内的发现);CFG 上**基于支配者的清理器守卫验证**;自动生成代码检测;重复/包含关系合并;置信度分数调整
### v8.1 — GitHub 仓库扫描
- **GitHub 仓库扫描** (`github_scanner.py`) — 在提示符下输入 URL (`https://github.com/owner/repo`)、SSH URL (`git@github.com:owner/repo.git`) 或简写 (`owner/repo` 或 `owner/repo@branch`),即可**直接扫描任何 GitHub 仓库**;使用 `git` 自动浅克隆(首选)或回退到 GitHub Contents API(无需 git);获取仓库元数据(stars、forks、language、licence、topics);通过 `GITHUB_TOKEN` 环境变量支持私有仓库;扫描后自动清理临时克隆;整个流水线在下载的代码上原样运行
### v8.0 — 供应链安全
- **SCA — 依赖项漏洞扫描** (`sca_scanner.py`) — 解析 `requirements.txt`、`pyproject.toml`、`Pipfile`、`package.json`、`Cargo.toml`、`go.mod`、`pom.xml`、`build.gradle`;查询 [OSV API](https://osv.dev) 以获取已知的 CVE;自动修复消息会显示确切的安全升级路径
- **许可证合规性** — 检测依赖项中可能“感染”专有代码的 GPL / LGPL / AGPL / SSPL / EUPL / MPL / CDDL 许可证;评级为 HIGH (GPL/AGPL/SSPL)、MEDIUM (LGPL/MPL);包含修复指导
- **OSS 片段匹配** — 对每个源文件进行 SHA-256 指纹识别,并查找已知的开源代码签名,以便即使在没有包 manifest 的情况下也能检测到 copyleft 代码
- **密钥 / 凭证扫描器** (`secrets_scanner.py`) — 30多个正则表达式模式,涵盖 AWS 访问密钥、GitHub token (ghp\_/gho\_/ghu\_/ghs\_)、Google API 密钥、Slack token + webhooks、Stripe 实时/测试密钥、Twilio SID、SendGrid/NPM/PyPI API token、PEM 私钥 (RSA/EC/OpenSSH/PGP)、JWT token、数据库连接字符串、硬编码密码分配、Azure 存储密钥和 URL 中的 Basic-Auth;为每个模式匹配提供 Shannon 熵分析支持;抑制测试夹具和占位符值
- **SBOM 生成** (`sbom_generator.py`) — 生成 **CycloneDX 1.4 JSON** 软件物料清单,列出每个检测到的依赖项及其 PURL、版本、许可证、已知 CVE 和建议的修复版本;满足 NTIA 最低 SBOM 要求和美国 EO 14028 联邦供应链指令
- **SARIF 2.1.0 导出** (`sarif_output.py`) — 将所有发现(SAST + SCA + 密钥)转换为行业标准的 SARIF 格式,该格式被 GitHub Code Scanning(PR diff 上的免费注解)、Azure DevOps、VS Code 问题面板以及所有主要 SIEM/ASPM 平台原生接受;无需竞品集成
- **多语言污点分析** (`taint_analyzer.py`) — 零外部依赖的数据流引擎,包含 C/C++ (double-free、off-by-one、alloc sizes 中的 integer overflow、NULL-unchecked malloc、path traversal、weak-RNG)、Python (SQL injection、SSRF、template injection、JWT none-alg、XSS、insecure deserialisation)、Java (LDAP injection、SpEL injection、open redirect、XXE)、Go (insecure TLS、race condition、resource leak) 和 Rust (unsafe block、`mem::transmute`、panic-unwrap) 的60多条规则
- **基于 AST 的汇/源跟踪** — libclang 遍历解析树以查找危险调用 (`strcpy`、`gets`、`sprintf`、`strncat`、`tmpnam`、`system`、`popen`)、堆与栈分类、双重释放检测和差一循环分析
- **SSA 风格的定义-使用数据流** (`dataflow.py`) — 构建定义-使用链,通过赋值和函数返回传播污点,捕获单遍污点分析遗漏的二阶流
- **过程间污点分析** (`interprocedural_taint.py`) — 使用调用图摘要跟踪跨函数边界的污点;捕获多跳注入路径
- **符号范围检查** (`symbolic_check.py`) — 使用 Z3 SMT 求解器(可选;回退到区间算术)来证明或反驳差一和整数溢出条件
- **并发分析** (`concurrency_analyzer.py`) — 检测 C/C++ 和 Go 中的数据竞争、锁顺序倒置和缺少的互斥锁守卫
- **LLVM IR 分析** (`llvm_analyzer.py`) — 编译为 LLVM IR 并检查不安全的内联函数和整数回绕
- **混合模糊测试器** (`concolic_fuzzer.py`) — angr 符号执行 → AFL++ 变异 → ASAN 插桩的暴力测试
- **ML 误报过滤器** (`ml_filter.py`) — 可选的 RandomForest 分类器;模型文件仅从 `~/.overflowguard` 自动加载
- **持久化扫描缓存** (`cache_manager.py`) — SHA-256 内容寻址的 SQLite 缓存;跳过未更改的文件
- **构建系统集成** (`build_integration.py`) — 自动检测 Makefile / CMake / Cargo / Gradle;注入 ASAN/UBSan 标志
- **智能目录扫描** — 修剪 `.venv/`、`__pycache__/`、`site-packages/`、`node_modules/`、`.git/`、构建产物目录
- **42+ 条目的漏洞数据库** — 每个条目都有真实的 CVE、CVSS v3.1 分数、CWE、描述和修复指南
- **置信度徽章** — 每项发现的 HIGH (绿色) / MEDIUM (琥珀色) / LOW (灰色) 标识
- **HTML 报告** — 深色主题仪表板,带有严重性细分、检测阶段图表、文件摘要和各项发现的卡片
- **GitHub Actions CI** — 4个作业流水线:pytest、cppcheck、Bandit SAST、完整扫描 + HTML artifact 上传
- **单元测试套件** — 24个 pytest 测试
## 🛠️ 安装说明
### 1. 克隆
```
git clone https://github.com/parag25mcf10022/OverflowGuard.git
cd OverflowGuard
```
### 2. 系统依赖
```
sudo apt update
sudo apt install -y \
gcc g++ \
cppcheck clang-tidy \
golang-go \
rustc cargo \
openjdk-17-jdk \
python3-pip python3-venv
```
### 3. Python 环境
```
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
或者运行一体式引导程序 (安装系统依赖 + venv + semgrep):
```
chmod +x setup.sh && ./setup.sh
```
### 4. 可选:Facebook Infer
```
# Infer 提供深入的 C/Java 空指针解引用和内存泄漏分析。
# 安装自:https://fbinfer.com/docs/getting-started
```
## ▶️ 使用方法
### 扫描 GitHub 仓库 (任何公共仓库或带有 token 的私有仓库)
```
source .venv/bin/activate
python3 main.py
# 出现提示时:输入 Path/File/GitHub Repo:torvalds/linux
# ...或完整的 URL:
# 输入 Path/File/GitHub Repo:https://github.com/pallets/flask
# ...或特定分支:
# 输入 Path/File/GitHub Repo:pallets/flask@main
```
对于**私有仓库**或为了避免 60次请求/小时的未验证速率限制:
```
export GITHUB_TOKEN=ghp_your_token_here
python3 main.py
# 输入 Path/File/GitHub Repo:your-org/private-repo
```
### 扫描单个文件
```
source .venv/bin/activate
python3 main.py
# 出现提示时:输入 Path/File:samples/stack_overflow.c
```
### 扫描整个目录
```
python3 main.py
# 出现提示时:输入 Path/File:samples
```
### 差异化扫描 (仅更改的文件)
```
# 仅扫描自上次 commit 以来更改的文件(默认:工作树更改)
python3 main.py --diff
# 出现提示时:输入 Path/File:samples
# 仅扫描暂存的文件
python3 main.py --diff staged
# 扫描最近 3 次 commit 中的更改
python3 main.py --diff commits:3
# 扫描自上次 git tag 以来的更改
python3 main.py --diff last-tag
# 仅扫描更改的文件(完全跳过完整扫描)
python3 main.py --diff --diff-only
```
### v11.0 新的 CLI 选项
```
# 生成 JSON 输出(用于 CI/CD 流水线)
python3 main.py --format json samples/
# 生成自动修复补丁文件
python3 main.py --autofix samples/
# 增量扫描(仅更改的文件 + 依赖锥)
python3 main.py --incremental samples/
# 设置最低严重性阈值
python3 main.py --severity high samples/
# 禁用特定的扫描阶段
python3 main.py --no-iac --no-container samples/
# 使用特定目录中的自定义规则
python3 main.py --rules-dir /path/to/rules samples/
# 生成示例配置文件
python3 main.py --init-config
# 生成示例自定义规则
python3 main.py --init-rules
```
### 运行独立的模糊测试器
```
python3 fuzzer.py
# 输入 binary/script 路径,选择 payload 模式 (1=args, 2=stdin, 3=both)
```
### 运行测试套件
```
python3 -m pytest tests/ -v
```
## 📊 终端输出示例
```
⛔ OVERFLOW GUARD v11.0 | Researcher: Parag Bagade
┌─────────────────────────────────────────────────────────────────┐
│ ANALYZING: sample.c │
└─────────────────────────────────────────────────────────────────┘
[*] v9.0 AST(tree‑sitter) real dataflow / symbolic pass (c)...
[!!!] RealDataflow [High] use-after-free @ line 23
[!!!] RealDataflow [Medium] buffer-overflow @ line 21
[~] Symbolic(Z3) [High] buffer-overflow @ line 13 — Z3 proved: strcpy overflow
[!!!] AdvancedTaint [8.0/10] stack-buffer-overflow @ line 6 — gets → stack buffer
💡 Remediation: Replace gets() with fgets(buf, sizeof(buf), stdin)
━━━ Stage 7: Infrastructure-as-Code (IaC) Scanning ━━━
[iac] scanning main.tf
IaC Summary: 3 issues (1 high, 2 medium) across 1 file(s)
━━━ Stage 8: Cross-file Taint Analysis ━━━
[✔] Cross-file taint: 2 cross-boundary flows detected
━━━ Stage 11: OWASP Top 10 (2021) Coverage Report ━━━
A01:2021 Broken Access Control 0 findings ✗ No findings
A03:2021 Injection 5 findings ✓ COVERED (2 critical, 3 high)
A05:2021 Security Misconfiguration 3 findings ✓ COVERED (1 high, 2 medium)
Coverage: 40% (8/12 findings mapped)
━━━ v11.0 Summary ━━━
AST engine : AST(tree‑sitter)
Languages supported : C, C++, Python, Java, Go, Rust, JS, TS, PHP, Ruby, C#, Kotlin, Swift, Scala
SCA findings : 0 CVEs in dependencies
IaC findings : 3
Cross-file taint : 2 flows
Container issues : 0
OWASP coverage : 40%
Auto-fix patches : 2
Output format : html
```
## 🎯 置信度级别
HTML 报告中的每一项发现都会显示一个颜色编码的置信度徽章:
| 徽章 | 颜色 | 含义 |
|---|---|---|
| **HIGH** | 🟢 绿色 | 高确定性检测(直接匹配汇点,确认污点路径) |
| **MEDIUM** | 🟡 琥珀色 | 可能的漏洞(模式匹配,部分污点路径) |
| **LOW** | ⚫ 灰色 | 低确定性信号(启发式,需人工审查) |
## 🔬 检测能力
| 漏洞类别 | CWE | 语言 | 检测方法 |
|---|---|---|---|
| 栈缓冲区溢出 | CWE-121 | C/C++ | **AST + CFG 数据流 + Z3 符号执行** + cppcheck + fuzzer |
| 堆缓冲区溢出 | CWE-122 | C/C++ | **AST + CFG 数据流 + Z3 符号执行** + cppcheck + ASAN |
| 释放后使用 | CWE-416 | C/C++ | **基于 AST 的变量跟踪** + cppcheck |
| 双重释放 | CWE-415 | C/C++ | **基于 AST 的变量跟踪** + 污点分析 |
| 差一错误 | CWE-193 | C/C++ | **Z3 符号执行** + 污点分析 + AST |
| 整数溢出 / 截断 | CWE-190/197 | C/C++, **JS, TS, PHP, C#** | **Z3 位向量回绕证明** + UBSan |
| 格式化字符串 | CWE-134 | C/C++ | AST + clang-tidy |
| 空指针解引用 | CWE-476 | C/C++ | cppcheck + Clang SA + Infer |
| 内存泄漏 | CWE-401 | C/C++ | cppcheck + Infer |
| 不安全的 Eval | CWE-95 | Python, **JS, TS, PHP, Ruby** | **AST + CFG 污点分析** + Bandit |
| OS 命令注入 | CWE78 | Python, Java, Go, Rust, **JS, TS, PHP, Ruby, C#, Kotlin, Swift, Scala** | **AST + CFG 污点分析** + Bandit + fuzzer |
| SQL 注入 | CWE-89 | Python, Java, Go, **PHP, Ruby, C#** | **AST + CFG 污点分析** + Bandit |
| XSS | CWE-79 | Python, **JS, TS, PHP** | **AST + CFG 污点分析** |
| 路径遍历 | CWE-22 | C/C++, Python, Java, **PHP** | **AST + CFG 污点分析** |
| SSRF | CWE-918 | Python, Go, **PHP** | **AST + CFG 污点分析** |
| 不安全的反序列化 | CWE-502 | Python, Java, **PHP, Ruby, C#, Kotlin, Swift, Scala** | **AST + CFG 污点分析** + Bandit |
| 弱随机数生成器 | CWE-338 | C/C++, Python, Java, Go | 污点分析 + Bandit |
| 弱加密 | CWE-327 | C/C++, Python, Java, Go | 污点分析 + Bandit + semgrep |
| 模板注入 | CWE-94 | Python, Java | 污点分析 |
| 开放重定向 | CWE-601 | Python, Java, Go | 污点分析 |
| LDAP 注入 | CWE-90 | Java | 污点分析 |
| XXE 注入 | CWE-611 | Python, Java | 污点分析 |
| JWT None-Alg | CWE-347 | Python | 污点分析 |
| 硬编码密码 | CWE-259 | Python, Java, Go, Rust | 污点分析 + Bandit |
| 不安全的 TLS | CWE-295 | Python, Go | 污点分析 + Bandit |
| 不安全的配置 | CWE-16 | Python, Go | 污点分析 |
| 资源泄漏 | CWE-772 | Go | 污点分析 |
| Unsafe 块 / Transmute | CWE-119 | Rust | **AST + CFG 污点分析** |
| Panic / Unwrap | CWE-248 | Rust | 污点分析 |
| 竞态条件 | CWE-362 | Go, C/C++, Java, Python | 并发分析 + Go race detector |
## 📋 系统要求
### Python 包
```
# 核心
colorama>=0.4.6
libclang>=18.1.1
bandit>=1.7.0
pytest>=7.0
semgrep>=1.60.0
requests==2.31.0
click==8.1.7
flawfinder==2.0.19
# v9.0 — 真实的 AST + CFG 数据流 + 符号执行
tree-sitter>=0.25.0
tree-sitter-c tree-sitter-cpp tree-sitter-python
tree-sitter-java tree-sitter-go tree-sitter-rust
tree-sitter-javascript tree-sitter-typescript
tree-sitter-php tree-sitter-ruby tree-sitter-c-sharp
z3-solver>=4.12.0 # real_symbolic.py (Z3 SMT solver)
# v10.0 — 无需额外的 pip 依赖
# diff_scanner.py — 使用 subprocess (git) — 仅限 stdlib
# remediation_db.py — 纯 Python dataclass DB — 仅限 stdlib
# advanced_taint.py — 复用 tree-sitter(已在上方安装)
# v11.0 — 无需额外的 pip 依赖
# 所有 v11.0 模块仅使用 Python 标准库(os、re、json、
# sqlite3、subprocess、dataclasses)。PyYAML 对于 project_config.py
# 和 custom_rules.py 是可选的 — 内置的 YAML 解析器可处理简单的配置。
PyYAML>=6.0 # optional: for .overflowguard.yml and custom rules
# 可选 — 高级分析(在不存在时会被优雅地跳过)
scikit-learn>=1.3.0 # ml_filter.py
angr>=9.2 # concolic_fuzzer.py (~1 GB)
```
SCA、密钥扫描、SBOM 和 SARIF 模块仅使用 Python 标准库 (`urllib`、`hashlib`、`json`、`re`) — v8.0 功能**不需要额外的 pip 包**。
v9.0 真正的分析引擎使用单独的 `tree-sitter-*` 语法 wheel (11种语言)。如果没有它们,工具会优雅地回退到基于正则表达式的分析。Z3 (`z3-solver`) 支持带有反例的已验证符号执行发现;如果没有它,引擎会回退到区间抽象解释。
v10.0 模块 (`diff_scanner.py`、`remediation_db.py`、`advanced_taint.py`) **不需要额外的 pip 包** — 它们使用 Python 标准库并复用已为 v9.0 安装的 tree-sitter 语法。差异扫描器要求 `$PATH` 中包含 `git`。
v11.0 模块 (`project_config.py`、`iac_scanner.py`、`cross_file_taint.py`、`autofix.py`、`json_output.py`、`trend_tracker.py`、`custom_rules.py`、`container_scanner.py`、`incremental_analysis.py`、`owasp_mapper.py`) **不需要额外的 pip 包** — 它们仅使用 Python 标准库。`PyYAML` 是可选的(内置解析器可处理简单的 YAML 配置)。趋势跟踪使用 SQLite (标准库 `sqlite3`)。
### 系统工具
| 工具 | 用途 | 安装 |
|---|---|---|
| `gcc` / `g++` | 使用 ASAN/UBSan 编译 | `apt install gcc g++` |
| `cppcheck` | 静态分析 (XML) | `apt install cppcheck` |
| `clang-tidy` | Clang 静态分析器 | `apt install clang-tidy` |
| `clang` / `llvm` | LLVM IR 发射 | `apt install clang llvm` |
| `afl++` | 变异模糊测试层 | `apt install afl++` |
| `bear` | clang-tidy 的编译数据库 | `apt install bear` |
| `semgrep` | 多语言 SAST 模式 | `pip install semgrep` |
| `tree-sitter` | v9.0 真正的 AST 解析 (14种语言) | `pip install tree-sitter tree-sitter-c ...` |
| `z3-solver` | v9.0 符号执行 + 证明 | `pip install z3-solver` |
| `git` | v10.0 差异化扫描 | `apt install git` |
| `infer` | Facebook 深度 C/Java 分析 | [fbinfer.com](https://fbinfer.com) |
| `go` | Go 竞态检测器 | `apt install golang-go` |
| `rustc` | Rust 关键字/污点扫描 | `apt install rustc` |
| `java` | Java 静态模式检查 | `apt install openjdk-17-jdk` |
## 🔄 CI/CD
该仓库附带了一个 **GitHub Actions** 工作流 (`.github/workflows/ci.yml`),它会在每次推送到 `main` 或 `feature/**` 时运行:
| 作业 | 步骤 |
|---|---|
| `test` | 安装依赖,运行 `pytest tests/test_audit.py -v` |
| `static-analysis` | 在 `samples/` 上运行 cppcheck,上传结果 artifact |
| `bandit` | 运行 `bandit -r .`,上传结果 artifact |
| `full-scan` | 在 `samples/` 上运行 `python main.py`,上传 HTML 报告 artifact |
## 🗓️ 更新日志
| 版本 | 日期 | 亮点 |
|---|---|---|
| **v11.0** | 2026-03-09 | **12项新功能**:项目配置 (`.overflowguard.yml`);**IaC 扫描** (Terraform, K8s, Docker, CloudFormation, Ansible — 44条规则);**跨文件污点分析** (文件级调用图,多跳注入);**自动修复补丁生成** (18种模式,统一差异);**JSON 输出** (`--format json`);**严重性趋势跟踪** (SQLite,质量门);**自定义规则引擎** (YAML,`--init-rules`);**容器扫描** (CIS Docker Benchmark,18条规则,EOL 基础镜像库);**增量分析** (依赖锥,`--incremental`);**OWASP Top 10 映射** (200+ CWE 映射,覆盖率报告);**CI 模板** (GitLab, Jenkins, Bitbucket, Azure);10个新 Python 模块,4个 CI 模板文件 |
| **v10.0** | 2026-03-08 | **差异化扫描** (`diff_scanner.py` — git 感知,5种 diff 模式,`--diff` CLI 标志);**修复指导** (`remediation_db.py` — 28种漏洞类型,在 HTML + CLI 中带有安全替代代码片段);**高级源到汇污点分析** (`advanced_taint.py` — Checkmarx/CodeQL 风格,CVSS 风险评分 0–10,双 CFG + 正则引擎,按语言区分的源/汇/清理器数据库) |
| **v9.0** | 2026-03-07 | **真正的 AST 解析** (tree-sitter,14种语言);**真正的基于 CFG 的数据流** (到达定义,带有 gen/kill 的污点分析,定点迭代);**真正的符号执行** (Z3 位向量,路径约束,反例);**基于支配者的误报过滤器** (清理器守卫验证,死代码消除);5个新模块 (`tree_sitter_engine.py`、`cfg_builder.py`、`real_dataflow.py`、`real_symbolic.py`、`false_positive_filter.py`);8种新语言 (JS, TS, PHP, Ruby, C#, Kotlin, Swift, Scala) |
| **v8.1** | 2026-03-07 | `github_scanner.py` — 通过 URL/简写扫描任何 GitHub 仓库;git-clone + Contents API 回退;通过 GITHUB_TOKEN 支持私有仓库;在下载的代码上运行完整的6阶段流水线 |
| **v8.0** | 2026-03-07 | `sca_scanner.py` (OSV API,7种 manifest 格式);`secrets_scanner.py` (30+ 模式 + 熵);`sbom_generator.py` (CycloneDX 1.4);`sarif_output.py` (SARIF 2.1.0);6阶段流水线 |
| **v7.1** | 2026-03-03 | 智能目录扫描 (跳过 `.venv/`、`site-packages/`);SQL f-string 修复;更安全的 pickle 加载 |
| **v7.0** | 2026-03-03 | 10个新的高级分析模块;8阶段流水线;持久化扫描缓存;ML 误报过滤器 |
| **v6.0** | 2026-03-03 | 多语言污点分析 (Go, Rust, Java),semgrep,Infer,GitHub Actions CI,HTML 仪表板 |
| **v5.0** | 2026-03-03 | Python SAST (Bandit),深度模式分析器,CVE/CWE/CVSS v3.1 漏洞数据库 |
## 📄 许可证
MIT 许可证 — 详情见 [LICENSE](LICENSE)。
### 误报
与所有 SAST 工具一样,OverflowGuard 也会产生误报。误报过滤器 (false_positive_filter.py) 使用基于支配者的清理器验证来减少噪音,但始终建议对发现进行人工审查。有关降低误报率的持续工作在 issues 部分进行跟踪
## ⚠️ 免责声明
本工具仅用于**授权的安全研究和教育目的**。
`samples/` 中的示例文件是故意存在漏洞的 — 请勿部署它们。
作者不对本软件的任何滥用行为负责。
标签:AST解析, C/C++安全, CI/CD安全, CISA项目, DevSecOps, Docker扫描, Git差异化扫描, Go安全, JSON输出报告, Kubernetes扫描, Llama, OWASP Top 10, Rust安全, SAST, StruQ, Terraform扫描, Tree-sitter, Z3约束求解器, 上游代理, 代码安全审计, 内存安全漏洞检测, 基础设施即代码扫描, 多语言安全分析框架, 容器安全扫描, 控制流图, 提示注入防御, 文档安全, 混合模糊测试, 源代码安全, 漏洞自动修复, 盲注攻击, 符号执行, 跨语言分析, 逆向工具, 静态应用安全测试