Nxxo31/supply-radar

GitHub: Nxxo31/supply-radar

一款开源的命令行供应链安全扫描工具,通过查询 OSV 数据库检测 Go 和 npm 项目依赖项中的已知漏洞。

Stars: 0 | Forks: 0

# supply-radar `supply-radar` 扫描 Go 和 Node.js 项目,分析其 manifest 文件,查询 [OSV 数据库](https://osv.dev) 以寻找已知漏洞,并在几秒钟内生成清晰且可执行的报告。 无需 SaaS。无需 dashboards。无需数据库。无需将依赖项发送到外部服务器。 ## 为什么 软件供应链危机是真实存在的: - 2024-2025 年未审查的依赖项增加了 **+67%** (Sonatype)。 - 在 Log4j (2021) 和 XZ backdoor (2024) 之后,供应链攻击呈指数级增长。 - 严重漏洞需要 **500+ 天** 才能解决。 - 团队缺乏对其项目中实际包含内容的可见性。 `supply-radar` 回答了开发人员如今需要回答的基本问题: 1. 我的项目实际使用了哪些依赖项?(直接和间接/传递的) 2. 这些版本是否存在已知的漏洞? 3. 综合风险等级是多少? 4. 每个问题是在哪个版本中被修复的? ## 安装 从源码安装: ``` git clone https://github.com/Nxxo31/supply-radar.git cd supply-radar go build -o supply-radar . ./supply-radar --version ``` 要求:Go 1.23+。 ## 用法 ``` # 扫描当前目录(自动检测 Go 或 Node.js) supply-radar . # 以表格格式扫描特定项目 supply-radar ./mi-proyecto # 生成 JSON 报告以集成 CI/CD supply-radar --format json --output report.json ./mi-proyecto # 仅显示严重漏洞(适用于 CI gates) supply-radar --threshold CRITICAL ./mi-proyecto # 发现任何漏洞时失败 supply-radar --fail ./mi-proyecto # 离线模式(仅使用缓存,不进行网络调用) supply-radar --offline ./mi-proyecto # 用于快速 CI gates 的紧凑 JSON 摘要 supply-radar --format json-summary ./mi-proyecto # 用于 GitHub Code Scanning 的 SARIF 报告 supply-radar --format sarif --output results.sarif ./mi-proyecto # 用于文档或 issues 的 Markdown supply-radar --format markdown --output SECURITY.md ./mi-proyecto ``` ### Flags --path 项目路径(默认:.) --format table | json | json-summary | markdown | sarif(默认:table) --output 输出文件或 - 用于 stdout(默认:-) --threshold CRITICAL | HIGH | MEDIUM | LOW --fail 如果存在漏洞则以代码 1 退出 --offline 仅使用缓存数据,无网络请求 --cache-ttl-hours 缓存的 TTL(小时)(默认:24) --version 打印版本并退出 --help 显示帮助 ## 支持的生态系统 Go go.mod, go.sum npm package.json, package-lock.json PyPI requirements.txt, pyproject.toml ## 环境变量 SUPPLY_RADAR_FORMAT SUPPLY_RADAR_OUTPUT SUPPLY_RADAR_THRESHOLD SUPPLY_RADAR_FAIL_ON_VULNS (设为 true 以激活) SUPPLY_RADAR_OFFLINE (设为 true 以激活) ## GitHub Actions 集成示例 有关使用 SARIF 格式运行 supply-radar 并将结果上传到 GitHub Code Scanning 的完整 GitHub Actions 工作流,请参见 [docs/examples/github-actions-sarif.yml](docs/examples/github-actions-sarif.yml)。 ## 许可证 ## 输出示例 (表格) supply-radar ./tests/fixtures/node/express-app ## -- supply-radar v0.1.0 --- Project: express-app Duration: 2121ms ``` Found 29 vulnerabilities in 4 dependencies -- CRITICAL issues require immediate action CRITICAL: 1 | HIGH: 12 | MEDIUM: 14 | LOW: 2 Risk Score: 10.0/10 ``` Vulnerable Dependencies: PACKAGE SEVERITY CVSS minimist CRITICAL GHSA-xvch-5gv4-984h axios HIGH 21 vulnerabilities lodash HIGH 5 vulnerabilities express MEDIUM 2 vulnerabilities ## 许可证 MIT。请参阅 LICENSE。 ## 工作原理 [manifest files] -> Parser -> [Dependencies] -> Vulnerability Provider (OSV) -> [Vulns] | Risk score + summary | Reporter -> table/json 1. 检测:在指定路径下搜索 go.mod 或 package.json。 2. 解析:提取依赖项(直接和间接),无需外部依赖。 3. OSV 查询:并发地在 api.osv.dev/v1/query 查询每个依赖项。 4. 缓存:将 OSV 的响应缓存在内存中(TTL 可配置)。 5. 报告:计算风险评分,并按照所选格式进行序列化。 我们不会将您的依赖项发送到我们的服务器:仅会向 api.osv.dev 发送包含 package 和 version 的 POST 请求。在 --offline 模式下,不会进行任何网络调用。 ## 架构 cmd/supply-radar/ CLI entry point + flags internal/ scanner/ 编排器:parser -> vulns -> report parser/ Interfaces + registry gomod/ 解析 go.mod npm/ 解析 package.json vulnerability/ Provider 契约 osv/ OSV 客户端(HTTP + 解析) reporter/ Reporters table/ 终端输出 dependency/ 领域类型 cache/ 带 TTL 的内存缓存 config/ 环境变量 每个包都有单一的职责,并且可以在不影响其他部分的情况下进行扩展。 ### 添加新的生态系统 1. 创建 internal/parser/mi-ecosistema/parser.go 并实现 parser.Parser。 2. 在 internal/scanner/scanner.go 中注册它。 3. 如果该生态系统在 OSV 中有对应项(pypi, maven, crates.io),只需 在 internal/vulnerability/osv/client.go 中映射 ecosystem 即可。 pipeline 的其余部分(cache, reporter, exit codes)无需更改即可正常工作。 ## Roadmap MVP V1(当前):扫描,OSV 查询,表格/JSON 报告,CI 标志。 V1.1:支持 package-lock.json 和 go.sum 以获取精确版本。 V1.2:导出 SPDX 和 CycloneDX 格式的 SBOM。 V2.0:更多漏洞提供者(直接使用 NVD、GHSA),支持 PyPI/Maven 包。 有关完整愿景,请参阅 PROJECT.md。 ## 许可证 MIT。请参阅 LICENSE。 ## 作者 Sebastian [Nxxo31] - 开源工程项目。
标签:EVTX分析, Go, LNA, OSV, Ruby工具, Vercel, WebSocket, 依赖分析, 日志审计