pledgeandgrow/pledgerecon

GitHub: pledgeandgrow/pledgerecon

一款 Rust 原生漏洞扫描器,通过 AST 可达性分析和本地 LLM 审查大幅降低误报率,并支持 SBOM 生成与多格式报告输出。

Stars: 1 | Forks: 0

# PledgeRecon **用 Rust 构建的最快、最准确的漏洞扫描器。** PledgeRecon 不仅仅检查版本号 —— 它还阅读你的代码。通过基于 AST 的可达性分析,它可以确定易受攻击的函数在你的代码库中是否确实可被调用,从而在你甚至还未查看之前,就消除高达 80% 的误报。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39faa54be350a1dab8afd3b2fb8c1c83e4d9cff84abfef2374d19a18053687c4.svg)](https://github.com/pledgeandgrow/pledgerecon/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Crates.io](https://img.shields.io/crates/v/pledgerecon.svg)](https://crates.io/crates/pledgerecon) [![npm](https://img.shields.io/npm/v/pledgerecon.svg)](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注入, 代码安全审计, 加密, 可视化界面, 暗色界面, 本地大模型, 漏洞扫描器, 网络流量审计, 通知系统