cognis-digital/vendorvet

GitHub: cognis-digital/vendorvet

VendorVet 是一款可自托管的开源第三方供应商风险评估工具,通过安全问卷评分与 SBOM 漏洞交叉比对实现自动化供应链风险审查。

Stars: 0 | Forks: 0

VENDORVET # VENDORVET ### 第三方 / 供应商风险问卷与 SBOM 交叉引用 [![PyPI](https://img.shields.io/pypi/v/cognis-vendorvet.svg?color=6b46c1)](https://pypi.org/project/cognis-vendorvet/) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/e0e23c14ed210446.svg)](https://github.com/cognis-digital/vendorvet/actions) [![License: COCL 1.0](https://img.shields.io/badge/License-COCL%201.0-2b6cb0.svg)](LICENSE) [![Suite](https://img.shields.io/badge/Cognis-Neural%20Suite-6b46c1.svg)](https://github.com/cognis-digital) *合规与 GRC —— 随时准备好接受审计,支持自托管。*
``` pip install cognis-vendorvet vendorvet scan . # → prioritized findings in seconds ``` ## 用法 —— 分步指南 1. **安装** (Python 3.9+): pip install vendorvet 2. **评估安全问卷得分。** 将 `vendorvet questionnaire` 指向供应商问卷 JSON 文件,以获取剩余风险得分和风险等级: vendorvet questionnaire vendor_questionnaire.json 3. **将 SBOM** 与公告源进行交叉比对,以查找易受攻击的组件: vendorvet sbom vendor_sbom.json advisories.json 4. **获取综合结论**并读取 JSON 格式的输出以供工具使用。`assess` 命令可将问卷与可选的 SBOM 合并: vendorvet --format json assess vendor_questionnaire.json --sbom vendor_sbom.json --advisories advisories.json | jq .tier 5. **在 CI 中进行拦截。** 退出码 `0` 表示低/中度风险,`2` 表示高/严重风险,`1` 表示用法/IO 错误 —— 这样当供应商处于高风险时,构建步骤就会失败: vendorvet assess vendor_questionnaire.json --sbom vendor_sbom.json --advisories advisories.json || echo "Vendor flagged high/critical risk" 6. **导出 SARIF 2.1.0** 用于 GitHub 代码扫描 / 任何 SARIF 查看器。在任何子命令中添加 `--format sarif`: vendorvet --format sarif assess vendor_questionnaire.json \ --sbom vendor_sbom.json --advisories advisories.json > vendorvet.sarif 每个问卷缺口和易受攻击的组件都会变成一个 SARIF 结果;CVE 带有 `security-severity` 属性,以便 GitHub 显示正确的徽章。有关完整的 Actions 工作流,请参见 [`demos/09-ci-gate-sarif`](demos/09-ci-gate-sarif)。 ## 实战示例 (demos) [`demos/`](demos) 下的每个文件夹都是一个可运行的、真实的用例场景, 包含一个 `SCENARIO.md`(说明数据来源、确切命令以及 预期结论)。它们全都使用了真实的、已公开文档记录的 CVE。 | Demo | 情况 | 结论 | |---|---|---| | [`01-basic`](demos/01-basic) | SBOM 中包含 Log4Shell 的 SaaS | CRITICAL (退出码 2) | | [`02-clean`](demos/02-clean) | 完全自我证明的供应商,零缺口 | LOW (退出码 0) | | [`03-mixed`](demos/03-mixed) | 中端供应商,MFA/渗透测试存在缺口 | MODERATE (退出码 0) | | [`04-payroll-saas`](demos/04-payroll-saas) | 强大的薪资供应商,限制 PII,缺少泄露 SLA | MODERATE (退出码 0) | | [`05-clean-vendor`](demos/05-clean-vendor) | 公开数据供应商,已修补的 SBOM | LOW (退出码 0) | | [`06-supply-chain-struts`](demos/06-supply-chain-struts) | 仅限 SBOM:Apache Struts RCE (CVE-2017-5638) | CRITICAL (退出码 2) | | [`07-startup-unanswered`](demos/07-startup-unanswered) | 早期阶段供应商未填写控制措施 | HIGH (退出码 2) | | [`08-spring4shell`](demos/08-spring4shell) | 问卷无异常,但代码中存在 Spring4Shell | CRITICAL (退出码 2) | | [`09-ci-gate-sarif`](demos/09-ci-gate-sarif) | CI 拦截 + SARIF 上传 (CVE-2021-45046) | CRITICAL (退出码 2) | | [`10-data-broker-restricted`](demos/10-data-broker-restricted) | 数据代理商,发生过前期数据泄露,存在数据共享 | HIGH (退出码 2) | | [`11-heartbleed-legacy`](demos/11-heartbleed-legacy) | 存在 Heartbleed OpenSSL 漏洞的传统设备 | HIGH (退出码 2) | | [`12-feeds-osv-kev`](demos/12-feeds-osv-kev) | 基于 **实时 OSV + CISA-KEV** 丰富 SBOM 数据(支持离线运行) | CRITICAL (退出码 2) | ``` # 直接从 clone 运行任何 demo python -m vendorvet assess demos/08-spring4shell/questionnaire.json \ --sbom demos/08-spring4shell/sbom.json \ --advisories demos/08-spring4shell/advisories.json ``` ## 实时源数据丰富 (OSV + CISA-KEV) —— 适用于边缘 / 物理隔离环境 上面的 `sbom`/`assess` 子命令会将 SBOM 与*手动提供*的公告文件进行交叉比对。 而 `feeds` 子命令则将结论建立在从两个权威、无密钥数据源获取的**真实、最新的**漏洞情报之上,然后**离线**重新提供这些数据,以便该工具可以在断开连接 / 边缘 / 物理隔离的设备上继续工作。 | 源 ID | 数据来源 | URL | |---|---|---| | `osv` | OSV.dev — 包+版本 → 跨越 PyPI/npm/Maven/Go/crates.io/… 的已知漏洞 | `https://api.osv.dev/v1/query` | | `cisa-kev` | CISA 已知被利用漏洞目录(在野被主动利用) | `https://www.cisa.gov/known-exploited-vulnerabilities-catalog` | **真实的情报丰富:**每个 SBOM 组件都会通过 OSV 解析以获取实时公告; 然后每个 CVE 都会与 CISA-KEV 进行比对。命中 KEV 将引发 `known_exploited` 标志,并将结论升级为 **CRITICAL**,无论 CVSS 评分为多少 —— 处于主动利用中的漏洞是第三方风险升级中最强烈的 单一信号。 ``` vendorvet feeds list # the two feeds this tool consumes vendorvet feeds update osv cisa-kev # fetch + cache (online) vendorvet feeds enrich vendor_sbom.json # live OSV + KEV enrichment ``` ``` $ vendorvet feeds enrich demos/12-feeds-osv-kev/sbom.json --offline Components scanned: 3 Max CVSS: 10.0 (critical) Known-exploited (KEV): 2 Verdict: CRITICAL org.apache.logging.log4j:log4j-core@2.14.1 CVE-2021-44228 CVSS 10.0 (critical) [!! CISA-KEV: ACTIVELY EXPLOITED] remediate by 2021-12-24; ransomware: Known django@3.0 CVE-2020-9402 CVSS 7.5 (high) ``` 当结论为高/严重风险时,退出码为 `2`(对 CI 拦截友好)。 ### 离线 / 物理隔离工作流 `datafeeds`(已内置,仅依赖标准库)会将每次获取的数据缓存到磁盘,并能在 **零网络** 请求的情况下重新提供数据: ``` export COGNIS_FEEDS_CACHE=/secure/feeds-cache # where the cache lives vendorvet feeds update osv cisa-kev # on a connected host vendorvet feeds enrich sbom.json --offline # serve from cache only ``` 要将漏洞情报移动到断开连接的隔离环境中,请对缓存进行快照,并通过 物理媒介(sneakernet)跨越物理隔离带: ``` # 已连接的 host python -m vendorvet.datafeeds snapshot-export feeds.tar.gz # air-gapped host export COGNIS_FEEDS_CACHE=/secure/feeds-cache python -m vendorvet.datafeeds snapshot-import feeds.tar.gz vendorvet feeds enrich sbom.json --offline ``` 已提交的测试套件针对 [`tests/fixtures/feeds-cache/`](tests/fixtures/feeds-cache) 下精简的测试固件 进行**完全离线**运行 —— 没有任何测试会接触 网络。*仅限防御性 / 授权使用的情报。* ## 目录 - [为什么选择 vendorvet?](#why) · [功能](#features) · [快速开始](#quick-start) · [示例](#example) · [架构](#architecture) · [AI 技术栈](#ai-stack) · [对比](#how-it-compares) · [集成](#integrations) · [随处安装](#install-anywhere) · [相关项目](#related) · [贡献指南](#contributing) ## 为什么选择 vendorvet? 面向中小型企业的 TPRM `vendorvet` 具有单一用途、可脚本化、支持自托管:将其指向目标,以您工作流中已有的格式(table · JSON · SARIF)获取优先级排序的结果,在 CI 中基于它进行拦截,并允许 agent 通过 MCP 驱动它。
↑ 返回顶部
## 功能 - ✅ 评估安全问卷得分(加权控制措施,固有风险乘数) - ✅ 将 SBOM 与公告源进行交叉比对(精确版本匹配) - ✅ 综合供应商结论(问卷 + SBOM)并提供建议 - ✅ 输出为 **table · JSON · SARIF 2.1.0** (`--format`) - ✅ 对采购门禁友好的 CI 退出码 (0 / 2 / 1) - ✅ 在 [`demos/`](demos) 中有 11 个可运行的真实用例演示 - ✅ 可在 Linux/macOS/Windows · Docker · devcontainer 上运行 - ✅ 提供 Python、JavaScript、Go 和 Rust 的移植版本 (`ports/`)
↑ 返回顶部
## 快速开始 ``` pip install cognis-vendorvet vendorvet --version vendorvet scan . # scan current project vendorvet scan . --format json # machine-readable vendorvet scan . --fail-on high # CI gate (non-zero exit) ```
↑ 返回顶部
## 示例 ``` $ vendorvet scan . [HIGH ] VEN-001 example finding (./src/app.py) [MEDIUM ] VEN-002 another signal (./config.yaml) 2 findings · risk score 5 · 38ms ```
↑ 返回顶部
## 架构 ``` flowchart LR IN[target / manifest] --> P[vendorvet
checks + rules] P --> OUT[findings (JSON / SARIF)] ```
↑ 返回顶部
## 从任何 AI 技术栈中使用 `vendorvet` 可与所有流行的 AI 使用方式互操作: - **MCP 服务器** —— `vendorvet mcp` (Claude Desktop, Cursor, Cognis.Studio, [uncensored-fleet](https://github.com/cognis-digital/uncensored-fleet)) - **兼容 OpenAI / JSON** —— 通过管道将 `vendorvet scan . --format json` 传给任何 agent 或 LLM - **LangChain · CrewAI · AutoGen · LlamaIndex** —— 用一行代码将 CLI/JSON 封装为工具 - **CI / 脚本** —— 为非 AI 流水线提供退出码 + SARIF
↑ 返回顶部
## 对比 | | **Cognis vendorvet** | OneTrust TPRM | |---|:---:|:---:| | 支持自托管,无需账号 | ✅ | 视情况而定 | | 单一命令,零配置 | ✅ | ⚠️ | | 用于 CI 的 JSON + SARIF | ✅ | 视情况而定 | | 原生支持 MCP (AI agent) | ✅ | ❌ | | 多语言移植版 (JS/Go/Rust) | ✅ | ❌ | | 开源许可 | ✅ COCL | 视情况而定 | *本着 **OneTrust TPRM** 的精神打造,以 Cognis 的方式重新构建。缺少鸣谢?欢迎提交 PR。*
↑ 返回顶部
## 集成 通过管道接入您的技术栈:用于代码扫描的 **SARIF**,用于一切的 **JSON**,用于 AI agent 的 **MCP 服务器** (`vendorvet mcp`),以及用于 SIEM/Slack/Jira 的 webhook 转发器。请参见 [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md)。
↑ 返回顶部
## 安装 —— 各种方式,各个平台 ``` pip install "git+https://github.com/cognis-digital/vendorvet.git" # pip (works today) pipx install "git+https://github.com/cognis-digital/vendorvet.git" # isolated CLI uv tool install "git+https://github.com/cognis-digital/vendorvet.git" # uv pip install cognis-vendorvet # PyPI (when published) docker run --rm ghcr.io/cognis-digital/vendorvet:latest --help # Docker brew install cognis-digital/tap/vendorvet # Homebrew tap curl -fsSL https://raw.githubusercontent.com/cognis-digital/vendorvet/main/install.sh | sh ``` | Linux | macOS | Windows | Docker | 云平台 | |---|---|---|---|---| | `scripts/setup-linux.sh` | `scripts/setup-macos.sh` | `scripts/setup-windows.ps1` | `docker run ghcr.io/cognis-digital/vendorvet` | [DEPLOY.md](docs/DEPLOY.md) (AWS/Azure/GCP/k8s) |
↑ 返回顶部
## 相关的 Cognis 工具 - [`soc2box`](https://github.com/cognis-digital/soc2box) —— SOC 2 证据收集器和控制追踪器,支持自托管 - [`gdprkit`](https://github.com/cognis-digital/gdprkit) —— GDPR/CCPA DSAR、RoPA 和 Cookie 同意工具包 - [`policyforge`](https://github.com/cognis-digital/policyforge) —— 通过简短的问卷自动生成安全策略 - [`auditrail`](https://github.com/cognis-digital/auditrail) —— 带有哈希链证明的防篡改审计日志聚合器 - [`frameworkmap`](https://github.com/cognis-digital/frameworkmap) —— 跨越 NIST、ISO 27001、SOC 2、CMMC、PCI 的控制交叉映射 - [`dpiaforge`](https://github.com/cognis-digital/dpiaforge) —— DPIA 和欧盟 AI 法案影响评估生成器 **探索全套工具** [🗂️ 全部 170+ 个工具](https://github.com/cognis-digital/cognis-neural-suite) · [⭐ awesome-cognis](https://github.com/cognis-digital/awesome-cognis) · [🔗 cognis-sources](https://github.com/cognis-digital/cognis-sources) · [🤖 uncensored-fleet](https://github.com/cognis-digital/uncensored-fleet) · [🧠 engram](https://github.com/cognis-digital/engram)
↑ 返回顶部
## 互操作性 `{}` 与 300+ 工具的 Cognis 套件协同组合 —— JSON 输入/输出和共享的 兼容 OpenAI 的 `/v1` 主干。请参见 **[INTEROP.md](INTEROP.md)** 了解 套件图谱、组合模式和参考技术栈。 ## 许可证 在 **Cognis Open Collaboration License (COCL) v1.0** 下开源可见 —— 个人、内部评估、研究和教育用途免费;**商业 / 生产用途需要许可证** (licensing@cognis.digital)。请参见 [LICENSE](LICENSE)。
Cognis Digital · 包含 170+ 工具的 Cognis Neural Suite 之一 · 让明天更美好
标签:Python, SBOM分析, Svelte, 可视化界面, 合规审计(GRC), 数据可视化, 无后门, 日志审计, 第三方风险管理, 请求拦截, 逆向工具