pledgeandgrow/pledgerecon
GitHub: pledgeandgrow/pledgerecon
一款 Rust 原生漏洞扫描器,通过 AST 可达性分析和本地 LLM 审查大幅降低误报率,并支持 SBOM 生成与多格式报告输出。
Stars: 1 | Forks: 0
# PledgeRecon
**用 Rust 构建的最快、最准确的漏洞扫描器。**
PledgeRecon 不仅仅检查版本号 —— 它还阅读你的代码。通过基于 AST 的可达性分析,它可以确定易受攻击的函数在你的代码库中是否确实可被调用,从而在你甚至还未查看之前,就消除高达 80% 的误报。
[](https://github.com/pledgeandgrow/pledgerecon/actions/workflows/ci.yml)
[](https://opensource.org/licenses/MIT)
[](https://crates.io/crates/pledgerecon)
[](https://www.npmjs.com/package/pledgerecon)
## 快速开始
```
# 安装
npm install -g pledgerecon
# 或
cargo install pledgerecon
# 扫描你的项目
pledgerecon scan .
# 通过 reachability analysis 和 AI triage
pledgerecon scan . --reachability --triage
# 生成 SBOM
pledgerecon sbom . --format cyclonedx --output sbom.json
# CI 模式 — 遇到 high+ 严重级别时失败,输出用于 GitHub code scanning 的 SARIF
pledgerecon scan . --fail-on-findings --min-severity high --format sarif --output pledgerecon.sarif
```
## 为什么选择 PledgeRecon?
| 问题 | 其他扫描器 | PledgeRecon |
|---|---|---|
| **误报** | 无论是否使用都会报告每个 CVE | AST 可达性证明易受攻击的代码路径是否可达 |
| **审查开销** | 手动审查数百个发现 | 本地 LLM (Ollama) 自动将发现分类为真阳性/误报 |
| **速度** | Java/Go 扫描器冷启动需要 30 秒以上 | Rust 原生,毫秒级扫描 |
| **隐私** | 将你的代码发送到云端 | 100% 本地分析,你的代码永远不会离开你的机器 |
| **SBOM** | 需要单独的工具 | 内置 SPDX + CycloneDX 生成 |
| **Secrets** | 需要另一个工具 | 内置针对源代码、容器、IaC、git 历史的 secret 扫描 |
### 功能对比
| 功能 | PledgeRecon | Snyk | Dependabot | Trivy | Grype |
|---|:---:|:---:|:---:|:---:|:---:|
| **语言** | Rust | SaaS | Ruby | Go | Go |
| **AST 可达性** | ✅ | ✅ | ❌ | ❌ | ❌ |
| **Taint analysis** | ✅ | ✅ | ❌ | ❌ | ❌ |
| **Interprocedural analysis** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **容器扫描** | ✅ | ✅ | ❌ | ✅ | ✅ |
| **IaC 扫描** | ✅ | ✅ | ❌ | ✅ | ❌ |
| **Secret 扫描** | ✅ | ✅ | ❌ | ✅ | ❌ |
| **基于熵的检测** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **Git 历史扫描** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **Secret 轮换指导** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **WASM 自定义规则** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **LLM 审查** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **本地 LLM (Ollama)** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **AI 修复** | ✅ | ✅ | ❌ | ❌ | ❌ |
| **RAG 知识库** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **SBOM (SPDX + CycloneDX)** | ✅ | ✅ | ❌ | ✅ | ✅ |
| **VEX 支持** | ✅ | ✅ | ❌ | ❌ | ✅ |
| **Self-hosted** | ✅ | ❌ | ❌ | ✅ | ✅ |
| **多生态系统** | ✅ | ✅ | ✅ | ✅ | ✅ |
| **CI 原生退出代码** | ✅ | ✅ | ✅ | ✅ | ✅ |
| **SARIF 输出** | ✅ | ✅ | ✅ | ✅ | ✅ |
| **离线模式** | ✅ | ❌ | ❌ | ✅ | ✅ |
| **EPSS + KEV** | ✅ | ❌ | ❌ | ❌ | ✅ |
| **Issue tracker 同步** | ✅ | ✅ | ❌ | ❌ | ❌ |
| **分布式扫描** | ✅ | ❌ | ❌ | ❌ | ❌ |
| **开源** | ✅ MIT | ❌ | ✅ | ✅ | ✅ |
| **速度** | ★★★★★ | ★★☆☆☆ | ★★★☆☆ | ★★★★☆ | ★★★★☆ |
### AST 可达性差异化优势
大多数漏洞扫描器(Trivy、Grype、Dependabot)只检查包版本是否与安全公告受影响的范围匹配。这会产生**高误报率** —— 易受攻击的函数可能存在于依赖项中,但从未被调用过。
Snyk 通过其 DeepCode AI 引擎提供可达性分析,但这需要 SaaS 账户并将代码元数据发送到其服务器。PledgeRecon 完全在本地使用 tree-sitter 构建**调用图**,并支持跨文件的过程间分析以及对 JS/TS/Python/Rust 的 taint tracking:
```
❌ Trivy: "lodash@4.17.11 is vulnerable to CVE-2021-23337" (false positive — template() never called)
✅ PledgeRecon: "lodash@4.17.11 is vulnerable to CVE-2021-23337 [UNREACHABLE — template() not called]"
```
### 性能
| 项目大小 | 扫描时间 | 内存 |
|---|---|---|
| 小型 (< 50 deps) | < 100ms | < 10MB |
| 中型 (50-500 deps) | < 1s | < 50MB |
| 大型 (500+ deps) | < 5s | < 200MB |
*基准测试在 Apple M2 Pro 上运行,处于离线模式。获取网络公告会增加 1-3 秒的时间,具体取决于 API 响应时间。*
### 竞争定位
| 竞争对手 | 他们的优势 | PledgeRecon 胜出的地方 |
|---|---|---|
| **Snyk** | AI 修复、SAST + DAST、广泛的生态系统覆盖、出色的 UX | Self-hosted(无 SaaS 依赖)、离线模式、通过 Ollama 进行本地 LLM 审查、WASM 自定义规则、分布式扫描、RAG 知识库、Secret 轮换指导、无按席位收费 |
| **Trivy** | 快速的容器扫描、IaC 配置错误检测、带有自定义规则的 Secret 扫描、Kubernetes 集群扫描 | AST 可达性、Taint analysis、LLM 审查、AI 修复、EPSS + KEV、Issue tracker 同步、Interprocedural analysis、基于熵的 secret 检测、Git 历史扫描 |
| **Grype** | EPSS + KEV 风险评分、VEX 支持、快速的 DB (schema v6)、广泛的 OS 包覆盖范围、SBOM 导入 | AST 可达性、Taint analysis、IaC 扫描、Secret 扫描、LLM 审查、AI 修复、WASM 自定义规则、分布式扫描、Issue tracker 同步 |
| **Dependabot** | 原生 GitHub 集成、自动化的 PR、零配置 | 除了多生态系统和 SARIF 之外的所有功能 —— 可达性、Taint analysis、容器/IaC/Secret 扫描、LLM 审查、SBOM、离线模式、自定义规则 |
**PledgeRecon 独家提供的关键差异化优势:**
- **本地 LLM 审查** — 没有其他扫描器支持 Ollama 来实现完全离线的 AI 驱动误报减少
- **WASM 自定义规则** — 可扩展的沙箱规则引擎(没有竞争对手提供此功能)
- **分布式扫描** — 将扫描任务分配给 worker 以适应 monorepo 规模
- **RAG 知识库** — 查询漏洞历史和修复模式
- **Interprocedural analysis** — 跨文件的全程序调用图(Snyk 的可达性是针对单个文件的)
- **基于熵的 secret 检测** — 针对未知 secret 格式的 Shannon 熵
- **Git 历史 secret 扫描** — 扫描提交历史以查找泄露的 secret
- **Secret 轮换指导** — 针对每种 secret 类型的可操作修复步骤
## 功能
### 核心扫描
- **多生态系统支持**:Rust (Cargo.toml)、Node.js (package.json)、Python (requirements.txt, pyproject.toml)、Go (go.mod)、Dart (pubspec.yaml) 等
- **安全公告数据库**:OSV.dev、GitHub Security Advisories (GHSA)、NVD、本地数据库
- **基于版本的匹配**:支持 Semver 的受影响范围检查
- **离线模式**:用于气隙环境的缓存安全公告数据库
### 基于 AST 的可达性分析
- 从项目的源代码构建调用图
- 通过 tree-sitter 解析 Rust、JS/TS、Python、Go 和 Java 源文件
- 追踪从入口点到易受攻击函数的调用链
- 将不可达的发现降级为 Info 严重性
- **PledgePack 集成** — 自动检测并重用 PledgePack 的模块图用于 JS/TS 项目
- **增量分析** — 仅使用内容哈希重新解析更改过的文件,以加快重新扫描的速度
- **置信度评分** — Direct、Resolved、Heuristic 和 Fuzzy 置信度级别
- **可视化** — 将调用图导出为 DOT (Graphviz) 或 GraphML
### WASM 自定义规则
- 使用任何可编译为 WASM 的语言编写自定义漏洞检测规则
- 通过 Wasmtime 进行沙箱执行,并带有**燃料限制**(强制执行 CPU 预算)
- **Plugin SDK**,为插件作者提供类型安全的 Rust 绑定
- **Plugin registry**,用于发现和安装社区插件
- **签名验证**,用于确保插件完整性(SHA-256 + 加密签名)
- **细粒度权限**(读取清单、读取源代码、网络等)
- **热重载**插件,无需重启扫描
- **并行执行**,用于多插件并发
- **AssemblyScript**、**C** 和 **Go (TinyGo)** 中的示例插件
- 企业特定的模式(内部包、自定义框架)
### LLM 驱动的审查
- 将漏洞上下文发送给 LLM 进行误报评估
- 支持 OpenAI、Anthropic、Ollama、**llama.cpp**(本地)和 **fine-tuned models**
- **批量 LLM 调用** — 在一个 prompt 中发送多个发现,以减少 API 成本
- **响应缓存** — 避免跨扫描的冗余 LLM 调用(内存 + 磁盘)
- **流式响应** — 通过 Server-Sent Events 提供实时反馈
- **自定义 prompt 模板** — 用户可使用 `{placeholder}` 变量自定义 prompt
- **置信度阈值** — 自动抑制低置信度的误报判定
- **多模型共识** — 查询多个 LLM 并使用多数投票
- **审计日志记录** — 记录所有 LLM 调用以用于合规(JSONL 格式)
- **成本跟踪** — 跟踪每次扫描的 token 使用量和成本
- 考虑可达性、仅开发状态、缓解因素
- 减少 60-80% 的误报(估计值)
### SBOM 生成
- **SPDX 2.3**(JSON 格式)
- **CycloneDX 1.5**(JSON 格式)
- 带有 PURL 标识符的完整依赖树
- 满足行政命令和企业政策的合规性要求
### 输出与报告
- **交互式 HTML 报告**,具有可折叠的发现结果、严重性/可达性过滤和搜索功能
- **PDF 报告** — 适用于合规文档的打印就绪 HTML(打印为 PDF 或通过 headless 浏览器)
- **Diff 报告** — 比较两份扫描报告以显示新增/已解决的漏洞和严重性变化
- **趋势仪表板** — 通过扫描历史持久化跟踪漏洞随时间变化的趋势
- **JUnit XML** — 用于 Jenkins/CI 测试结果集成
- **GitLab Code Quality JSON** — 原生 GitLab 漏洞管理集成
- **SonarQube 导入格式** — 将发现的问题作为外部 issue 导入 SonarQube
- **Slack 通知** — 扫描后的 Slack webhook,带有按严重性着色的附件
- **Microsoft Teams 通知** — 扫描后的 Teams webhook,带有可操作的消息卡片
- **电子邮件报告** — 用于计划扫描的基于 SMTP 的 HTML 电子邮件报告
### CI/CD 深度集成
- **退出代码**:0(成功)、1(发现漏洞)、2(扫描错误)、3(数据库错误)
- **SARIF 出**,用于 GitHub 代码扫描集成
- **GitHub Actions action** — 官方的 `pledgerecon/action` GitHub Action
- **GitLab CI 模板** — 带有 Code Quality 报告的官方 `.gitlab-ci.yml`
- **CircleCI orb** — PledgeRecon 的官方 CircleCI orb
- **Bitbucket Pipes** — Bitbucket Pipeline 集成
- **Pre-commit hook** — 用于本地扫描的 `pre-commit` 框架钩子
- **GitHub PR 检查** — GitHub Check API 集成,带有行级注释
- **自动修复 PR 生成** — 自动创建带有依赖项升级的 PR
- **基线比较** — 仅对基线中不存在的新漏洞失败
- **SARIF 内联注释** — 在 PR 中使用漏洞信息注释特定行
- **CI 缓存预填充** — 为离线扫描预填充公告缓存
- **PR 评论**,带有可操作的发现摘要
### 企业与生态系统
- **许可证合规性检查** — SPDX 许可证标识符的允许/拒绝列表(例如阻止 GPL-3.0)
- **SLSA 来源验证** — 验证供应链安全的 SLSA 级别 (L1–L4)
- **Sigstore 验证** — 通过 sigstore/cosign 验证依赖项签名
- **SBOM diff** — 比较两个 SBOM 以显示添加/删除/更改的组件
- **VEX 输出** — 生成 Vulnerability Exploitability eXchange 文档
- **依赖锁定强制执行** — 标记浮动 (`^`, `~`)、通配符 (`*`) 和范围版本
- **Registry 镜像** — 使用私有 Registry 镜像 (Artifactory, Nexus) 处理 npm、crates.io、PyPI
- **气隙模式** — 使用预打包的公告数据库进行完全离线操作
- **多租户扫描配置文件** — monorepo 中每个团队/子项目的不同扫描配置
- **REST API 服务器** — 具有用于程序化访问的 OpenAPI 3.0 规范的长时间运行 daemon
- **GraphQL API** — 通过 GraphQL 查询扫描结果、发现和公告
- **Web UI 仪表板** — 带有严重性统计和发现表格的实时仪表板
- **Webhook 集成** — 在扫描完成、出现新的/严重漏洞时触发 webhook
### 情报与优先级排序
- **EPSS 集成** — 来自 FIRST 的利用预测评分,用于基于可能性的优先级排序
- **CISA KEV 目录** — 将发现与已知被利用的漏洞进行交叉引用
- **漏洞利用成熟度检测** — PoC、功能性或武器化漏洞利用分类
- **综合风险评分** — 结合 CVSS + EPSS + KEV + 可达性 + 漏洞利用成熟度 + 业务上下文
- **基于存在时间的优先级排序** — 较新的漏洞被标记为更高的紧急性
- **业务关键性标记** — 根据依赖项的关键程度(第 1-4 级)权衡风险
- **暴露分析** — 面向网络、互联网暴露或仅限内部的分类
- **攻击路径可视化** — 从攻击者到易受攻击函数的 Graphviz DOT 输出
- **威胁情报源集成** — 与商业情报源关联
- **依赖项异常检测** — Typosquatting (Levenshtein)、版本跳跃、最近发布的包
### 平台与集成
- **VS Code 扩展** — 针对问题面板的实时漏洞诊断
- **JetBrains 插件** — IntelliJ/PyCharm/GoLand/WebStorm 检查输出
- **Jira 集成** — 创建带有严重性、包、版本和修复信息的工单
- **GitHub Issues 集成** — 创建带有严重性标签和 markdown 正文的 issue
- **Linear 集成** — 创建带有优先级映射的 issue
- **Dependabot alert 格式** — 原生兼容 GitHub Dependabot 的 JSON 输出
- **ServiceNow 集成** — 为企业 ITSM 创建安全事件
- **Splunk/ELK 集成** — 用于 SIEM 导入的 CEF (Common Event Format) 导出
- **PagerDuty 集成** — 为严重程度高的发现触发事件
- **Discord 通知** — 带有按严重性着色嵌入的 webhook 通知
### 高级 LLM 与 AI
- **AI 修复建议** — LLM 生成的代码补丁(不仅仅是版本升级)
- **AI 描述增强** — 为非安全开发人员提供通俗易懂的漏洞解释
- **AI 误报解释** — 随时可用于审计跟踪的关于为什么发现是误报的解释
- **本地 LLM 自动选择** — 根据 GPU VRAM 和 RAM 自动选择最佳模型
- **RAG 知识库** — 从本地 CVE/补丁向量数据库进行检索增强生成
- **AI 依赖问答** — 自然语言查询(“哪些依赖项存在已知的 RCE?”)
- **AI 策略生成** — 从自然语言描述生成 OPA/Rego 策略
- **AI 提交消息分析** — 检测应触发重新扫描的与安全相关的提交
- **多模态分析** — 生成包含风险级别和建议的高管摘要
- **AI 审查 fine-tuning pipeline** — 收集反馈并生成指令格式的训练数据
### 性能与规模
- **增量扫描** — 使用内容哈希状态持久化仅重新扫描更改过的清单
- **并行公告获取** — 通过 rayon 线程池进行并发公告查找
- **持久化公告存储** — 带有包索引的高效磁盘公告数据库
- **内存映射源代码扫描** — 针对大型源文件(>1 MB 阈值)使用 `memmap2`
- **基于 Glob 的源代码过滤** — 支持 `**` 的可配置包含/排除模式
- **扫描超时** — 可配置的分阶段超时(扫描、获取、可达性)
- **进度报告** — 通过 `indicatif` 提供实时进度条
- **Monorepo 支持** — 自动发现子项目并独立扫描每个子项目
- **Docker 镜像** — 用于 `ghcr.io/pledgeandgrow/pledgerecon` 的多阶段 Dockerfile
- **WASM 扫描引擎** — 编译为 `wasm32-wasip1` 或 `wasm32-unknown-unknown` 以适用于浏览器/边缘计算
- **分布式扫描** — 跨多台机器划分和协调扫描,适用于超大型 monorepo
- **CI 扫描结果缓存** — 根据 lockfile 哈希作为键缓存结果,以跳过未更改的项目
- **扫描结果差异对比** — 比较 PR 分支和基础分支之间的扫描结果
### 分发与打包
- **Homebrew formula** — 通过 `brew install pledgerecon` 在 macOS 上安装
- **Windows MSI 安装程序** — 基于 WiX 的带有 PATH 配置的安装程序
- **Linux .deb 和 .rpm** — 用于 Debian/Ubuntu 和 RHEL/Fedora 的原生包
- **Nix flake** — 通过 Nix 包管理器进行可重现的安装
- **Scoop manifest** — 支持 Windows Scoop 包管理器
- **预编译二进制文件** — 用于 Linux (musl)、macOS、Windows、ARM64 的交叉编译静态二进制文件
- **GitHub Action v2** — 带有矩阵扫描、SARIF 上传、SBOM 证明和 PR 审查的复合 Action
### 容器与云原生安全
- **容器镜像扫描** — 针对 Debian、Ubuntu、Alpine 镜像的 OS 包漏洞扫描
- **层感知扫描** — 识别哪个镜像层引入了每个漏洞
- **基础镜像识别** — 将基础镜像漏洞与应用程序漏洞分开
- **Dockerfile 分析** — 安全最佳实践(root 用户、:latest 标签、ENV 中的 secret、缺少健康检查)
- **Kubernetes manifest 扫描** — CIS 基准检查(特权 Pod、hostPath、root 用户、缺少资源限制)
- **Helm chart 扫描** — 模板级别的配置错误检测
- **Terraform IaC 扫描** — 云配置错误检测(公共 S3、开放的安全组、未加密的数据库)
- **CloudFormation IaC 扫描** — AWS 配置错误检测
- **容器 Registry 同步** — 监控 ECR/GCR/Docker Hub 以发现新的漏洞
- **OCI 制品证明** — 验证 cosign 签名的 SLSA 来源、SBOM 和扫描结果证明
### Taint Analysis 与高级可达性
- **数据流分析** — 追踪从数据源(用户输入)到接收器(SQL 查询、命令、响应)的受污染数据
- **JS/TS taint tracking** — 在 JavaScript/TypeScript 中检测 XSS、SQLi、命令注入
- **Python taint tracking** — 在 Python 中检测 SSRF、路径遍历、反序列化、SQLi
- **Rust taint tracking** — 在 Rust 中检测 unsafe 块和 FFI 边界
- **跨语言调用解析** — 解析 FFI 边界
- **框架感知的可达性** — 将 Express、Flask、Django、FastAPI、Actix、Axum 入口点识别为 taint 源
- **条件可达性** — 追踪 if/else 分支和 feature flag 以进行精确的置信度评分
- **C/C++ vendored 代码** — 解析并分析 vendored 的 C/C++ 源代码以构建调用图
- **Interprocedural analysis** — 跨文件的全程序调用图,用于准确的跨函数可达性
- **可达性缓存 (CAS)** — 用于增量可达性分析的内容寻址存储
### Secret 检测与强化
- **源代码 secret 扫描** — 18+ 种内置模式(AWS、GitHub、GitLab、Slack、Stripe、Google、Azure、私钥、JWT、Twilio、SendGrid、Mailgun、通用)
- **容器镜像扫描** — 扫描容器层以查找环境变量和配置文件中泄露的 secret
- **IaC secret 扫描** — 检测 Terraform、CloudFormation、Kubernetes 和 Dockerfiles 中的 secret
- **基于熵的检测** — 针对未知 secret 格式的 Shannon 熵分析
- **Secret 验证** — 针对 provider API(AWS、GitHub、私钥)验证检测到的 secret
- **自定义 secret 模式** — 通过 JSON 或 YAML 配置定义用户自己的 regex 模式
- **Git 历史扫描** — 扫描提交历史以查找意外提交的 secret
- **`.env` 文件扫描** — 检测带有敏感变量的已提交 `.env` 文件
- **Manifest 凭证检测** — 检查 `.npmrc`、`.cargo/config.toml`、`pip.conf`、Maven `settings.xml`、`gradle.properties`、`nuget.config`、`docker config.json` 中嵌入的凭证
- **Secret 轮换指导** — 为每种检测到的 secret 类型提供可操作的步骤、撤销 URL 和文档链接
## 安装说明
### npm(推荐用于非 Rust 项目)
```
npm install -g pledgerecon
# 或在未安装的情况下使用
npx pledgerecon scan .
```
### Cargo(Rust 开发者)
```
cargo install pledgerecon
```
### 从源码构建
```
git clone https://github.com/pledgeandgrow/pledgerecon.git
cd pledgerecon
cargo install --path crates/pledgerecon-cli
```
### Homebrew (macOS)
```
brew install pledgerecon
```
### Scoop (Windows)
```
scoop install pledgerecon
```
### Nix
```
nix profile install github:pledgeandgrow/pledgerecon
```
### Linux 软件包
```
# Debian/Ubuntu
sudo dpkg -i pledgerecon_*.deb
# RHEL/Fedora
sudo rpm -i pledgerecon-*.rpm
```
### Windows MSI
从 [GitHub Releases](https://github.com/pledgeandgrow/pledgerecon/releases) 下载 MSI 安装程序并运行。
### 预构建二进制文件
从 [GitHub Releases](https://github.com/pledgeandgrow/pledgerecon/releases) 下载适用于 Linux (musl)、macOS、Windows 和 ARM64 的静态二进制文件。
### Docker
```
docker run ghcr.io/pledgeandgrow/pledgerecon scan /repo
```
## 使用说明
### 扫描
```
# 基础扫描
pledgerecon scan .
# 使用 reachability analysis(默认)
pledgerecon scan . --format json --output report.json
# 禁用 reachability 以加快扫描速度
pledgerecon scan . --no-reachability
# 使用 LLM triage
pledgerecon scan . --triage
# 使用 SBOM 生成
pledgerecon scan . --generate-sbom --sbom-format cyclonedx --sbom-path sbom.json
# CI 模式(遇到 high+ 严重级别时失败)
pledgerecon scan . --fail-on-findings --min-severity high --format sarif --output pledgerecon.sarif
# 离线模式(使用缓存的 advisory database)
pledgerecon scan . --offline
```
### SBOM
```
# 生成 CycloneDX SBOM
pledgerecon sbom . --format cyclonedx --output sbom.json
# 生成 SPDX SBOM
pledgerecon sbom . --format spdx --output sbom.spdx.json
```
### 列出依赖项
```
# 文本格式
pledgerecon list .
# JSON 格式
pledgerecon list . --format json
```
### CI 模板
```
# GitHub Actions 模板
pledgerecon ci --platform github
# GitLab CI 模板
pledgerecon ci --platform gitlab
```
## 配置
在你的项目根目录中创建一个 `pledgerecon.toml`:
```
min_severity = "medium"
reachability = true
fail_on_findings = true
generate_sbom = true
sbom_format = "cyclonedx"
offline = true
[[ignore]]
package = "npm:lodash"
advisory_id = "CVE-2021-23337"
reason = "Reviewed and accepted — template() not called"
expires = "2025-12-31"
```
## 架构
```
pledgerecon/
├── crates/
│ ├── pledgerecon-core/ # Scanning engine
│ │ └── src/
│ │ ├── advisory.rs # Advisory database (OSV, GHSA, NVD)
│ │ ├── dependency.rs # Manifest parsing (Cargo.toml, package.json, go.mod, ...)
│ │ ├── finding.rs # Vulnerability finding types
│ │ ├── reachability.rs # AST-based reachability analysis (call graph)
│ │ ├── container.rs # Container & cloud-native security (Goals 101–110)
│ │ ├── taint.rs # Taint analysis & advanced reachability (Goals 111–120)
│ │ ├── secret.rs # Secret detection & hardening (Goals 121–130)
│ │ ├── sbom.rs # SPDX & CycloneDX SBOM generation
│ │ ├── triage.rs # LLM-powered false positive reduction
│ │ ├── scanner.rs # Main scan pipeline orchestrator
│ │ ├── plugin.rs # WASM custom rules runtime (fuel, SDK, registry, signatures)
│ │ ├── config.rs # Configuration & ignore rules
│ │ ├── output.rs # JSON, SARIF, text, markdown, HTML, PDF, JUnit XML, GitLab CQ, SonarQube
│ │ ├── ci.rs # CI/CD integration & exit codes
│ │ ├── ci_integration.rs # GitHub Actions, GitLab CI, CircleCI, Bitbucket, pre-commit, PR checks, auto-fix, baseline, SARIF annotations, cache pre-population
│ │ ├── report.rs # Diff reports & trend tracking
│ │ ├── notify.rs # Slack, Teams, email notifications
│ │ ├── enterprise.rs # License compliance, SLSA, sigstore, SBOM diff, VEX, pinning, registry mirror, air-gapped, multi-tenant, REST/GraphQL API, web UI, webhooks
│ │ ├── performance.rs # Incremental scan, parallel fetch, advisory store, mmap, glob filter, timeout, progress, monorepo, Docker, WASM
│ │ ├── intelligence.rs # EPSS, CISA KEV, exploit maturity, risk scoring, attack paths, threat intel, anomaly detection (Goals 161–170)
│ │ ├── platform.rs # VS Code, JetBrains, Jira, GitHub Issues, Linear, Dependabot, ServiceNow, Splunk/ELK, PagerDuty, Discord (Goals 171–180)
│ │ ├── ai.rs # AI remediation, enrichment, RAG, local LLM selection, Q&A, policy generation, commit analysis, fine-tuning (Goals 181–190)
│ │ └── distribution.rs # Homebrew, MSI, .deb/.rpm, Nix, Scoop, cross-compilation, GitHub Action v2, CI caching, distributed scanning, scan diffing (Goals 191–200)
│ └── pledgerecon-cli/ # CLI binary
│ └── src/
│ └── main.rs # clap-based CLI
├── examples/
│ └── plugins/ # Example WASM plugins
│ ├── assemblyscript/ # AssemblyScript example (Goal 53)
│ ├── c/ # C example (Goal 54)
│ └── go/ # Go/TinyGo example (Goal 55)
├── ci/ # CI/CD templates
│ ├── action.yml # GitHub Actions action (Goal 66)
│ ├── gitlab-ci.yml # GitLab CI template (Goal 67)
│ ├── circleci-orb.yml # CircleCI orb (Goal 68)
│ ├── bitbucket-pipelines.yml # Bitbucket Pipes (Goal 69)
│ ├── pre-commit-hook.yaml # pre-commit hook (Goal 70)
│ ├── cache-pre-population.yml # CI cache workflow (Goal 75)
│ └── pledgerecon-cache-pre-populate.sh # Cache script (Goal 75)
├── docs/ # Documentation
├── Cargo.toml # Workspace
├── Dockerfile # Official Docker image (Goal 84)
├── .dockerignore # Docker build ignore patterns
├── deny.toml # cargo-deny config
└── LICENSE
```
## PledgeLabs 生态系统集成
PledgeRecon 与其他 PledgeLabs 工具集成:
- **PledgePack**:重用模块图用于 JS/TS 可达性分析
- **PledgeGuard**:扫描依赖项以查找 secret(包元数据中的 API 密钥、token)
## License
MIT
标签:AI风险缓解, LLM防护, Rust, SBOM生成, StruQ, XSS注入, 代码安全审计, 加密, 可视化界面, 暗色界面, 本地大模型, 漏洞扫描器, 网络流量审计, 通知系统