返回市场
兽医

兽医

作者:safedep846 星标更新:2025-11-18

项目介绍

<div align="center"> <img width="3024" height="1964" alt="image" src="./docs/assets/vet-terminal.png" /> <h1>SafeDep VET</h1> <p><strong>🚀 企业级开源软件供应链安全</strong></p> <p> <a href="https://github.com/safedep/vet/releases"><strong>下载</strong></a> • <a href="#-快速开始"><strong>快速开始</strong></a> • <a href="https://docs.safedep.io/"><strong>文档</strong></a> • <a href="#-社区"><strong>社区</strong></a> </p> </div> <div align="center">

Go Report Card License Release OpenSSF Scorecard SLSA 3 CodeQL Go Reference

Ask DeepWiki

</div>

🎯 为什么选择 vet?

现代软件中 70-90% 的代码来自开源 —— 我们如何确保其安全性?

vet 是一个为 开发者和安全工程师 设计的开源软件供应链安全工具,它提供了以下功能:

下一代软件组成分析 —— 漏洞和恶意包检测
策略即代码 —— 使用 CEL 表达意见化的安全策略
实时恶意包检测 —— 由 SafeDep Cloud 主动扫描提供支持
多生态系统支持 —— npm, PyPI, Maven, Go, Docker, GitHub Actions 等
CI/CD 原生 —— 适用于 DevSecOps 工作流,支持 GitHub Actions, GitLab CI 等
MCP 服务器 —— 将 vet 作为 MCP 服务器运行,以验证 AI 建议的代码中的开源包
代理 —— 运行 AI 代理查询和分析扫描结果

⚡ 快速开始

几秒钟内安装:

# macOS & Linux
brew install safedep/tap/vet

或下载 预构建的二进制文件

扫描项目:

# 扫描当前目录
vet scan -D .

# 扫描单个文件
vet scan -M package-lock.json

# 在 CI 中遇到关键漏洞时失败
vet scan -D . --filter 'vulns.critical.exists(p, true)' --filter-fail

# 在 CI 中不满足 OpenSSF Scorecard 要求时失败
vet scan -D . --filter 'scorecard.scores.Maintained < 5' --filter-fail

# 在 CI 中如果包来自 GitHub 仓库且星数少于 5 时失败
vet scan -D . --filter 'projects.exists(p, p.type == "GITHUB" && p.stars < 5)' --filter-fail

🔒 关键特性

🕵️ 代码分析

与依赖项扫描器不同,vet 分析您的 实际代码使用情况 以优先处理真实风险。详情请参阅 依赖项使用证据

🛡️ 恶意包检测

集成 SafeDep Cloud,提供对野外恶意包的实时保护。免费提供给开源项目。当未提供 API 密钥时,回退到 查询模式。更多关于恶意包扫描的信息,请参阅 恶意包检测

📋 策略即代码

使用 CEL 表达式定义安全策略,以强制执行特定上下文的安全要求。

# 阻止具有关键 CVE 的包
vet scan \
--filter 'vulns.critical.exists(p, true)'

# 强制执行许可证合规性
vet scan \
--filter 'licenses.contains_license("GPL-3.0")'

# 强制执行 OpenSSF Scorecard 要求
# 要求最低的 OpenSSF Scorecard 分数
vet scan \
--filter 'scorecard.scores.Maintained < 5'

🎯 多格式支持

  • 包管理器:npm, PyPI, Maven, Go, Ruby, Rust, PHP
  • 容器镜像:Docker, OCI
  • SBOM:CycloneDX, SPDX
  • 二进制工件:JAR 文件, Python 轮
  • 源代码:直接仓库扫描

🔥 查看 vet 的实际操作

<div align="center"> <img src="./docs/assets/vet-demo.gif" alt="vet 演示" width="100%" /> </div>

🚀 生产就绪集成

📦 GitHub Actions

在 CI/CD 流水线中零配置的安全防护,防止漏洞和恶意包,并使用您自己的意见化策略:

- uses: safedep/vet-action@v1
  with:
    policy: ".github/vet/policy.yml"

更多信息请参阅 vet-action 文档。

🔧 GitLab CI

企业级扫描,使用 vet CI 组件

include:
  - component: gitlab.com/safedep/ci-components/vet/scan@main

🐳 容器集成

在任何地方运行 vet,包括内部开发平台或自定义 CI/CD 环境,使用我们的容器镜像。

docker run --rm -v $(pwd):/app ghcr.io/safedep/vet:latest scan -D /app

📚 目录

📦 安装选项

🍺 Homebrew (推荐)

brew tap safedep/tap
brew install safedep/tap/vet

📥 直接下载

请参阅 发布页面 获取最新版本。

🐹 Go 安装

go install github.com/safedep/vet@latest

🐳 容器镜像

# 快速测试
docker run --rm ghcr.io/safedep/vet:latest version

# 扫描本地目录
docker run --rm -v $(pwd):/workspace ghcr.io/safedep/vet:latest scan -D /workspace

⚙️ 验证安装

vet version
# 应显示版本和构建信息

🎮 高级用法

🔍 扫描选项

<table> <tr> <td width="50%">

📁 目录扫描

# 扫描当前目录
vet scan

# 扫描指定目录
vet scan -D /path/to/project

# 解析并扫描传递依赖
vet scan -D . --transitive

📄 清单文件

# 包管理器
vet scan -M package-lock.json
vet scan -M requirements.txt
vet scan -M pom.xml
vet scan -M go.mod
vet scan -M Gemfile.lock
</td> <td width="50%">

🐙 GitHub 集成

# 设置 GitHub 访问
vet connect github

# 扫描仓库
vet scan --github https://github.com/user/repo

# 组织扫描
vet scan --github-org https://github.com/org

📦 工件扫描

# 容器镜像
vet scan --image nginx:latest
vet scan --image /path/to/image-saved-file.tar

# 二进制工件
vet scan -M app.jar
vet scan -M package.whl
</td> </tr> </table>

🎯 策略实施示例

# 安全优先扫描
vet scan -D . \
  --filter 'vulns.critical.exists(p, true) || vulns.high.exists(p, true)' \
  --filter-fail

# 许可证合规性
vet scan -D . \
  --filter 'licenses.contains_license("GPL-3.0")' \
  --filter-fail

# OpenSSF Scorecard 要求
vet scan -D . \
  --filter 'scorecard.scores.Maintained < 5' \
  --filter-fail

# 基于流行度的过滤
vet scan -D . \
  --filter 'projects.exists(p, p.type == "GITHUB" && p.stars < 50)' \
  --filter-fail

🔧 SBOM 支持

# 扫描 CycloneDX SBOM
vet scan -M sbom.json --type bom-cyclonedx

# 扫描 SPDX SBOM
vet scan -M sbom.spdx.json --type bom-spdx

# 生成 SBOM 输出
vet scan -D . --report-cdx=output.sbom.json

# 包 URL 扫描
vet scan --purl pkg:npm/lodash@4.17.21

📊 查询模式 & 数据持久化

对于大型代码库和重复分析:

# 一次扫描,多次查询
vet scan -D . --json-dump-dir ./scan-data

# 使用不同的过滤器查询
vet query --from ./scan-data \
  --filter 'vulns.critical.exists(p, true)'

# 生成聚焦报告
vet query --from ./scan-data \
  --filter 'licenses.contains_license("GPL")' \
  --report-json license-violations.json

📊 报告

vet 生成针对不同利益相关者的报告:

📋 报告格式

<table> <tr> <td width="30%"><strong>🔍 适用于安全团队</strong></td> <td width="70%">
# SARIF 格式用于 GitHub 安全标签
vet scan -D . --report-sarif=report.sarif

# JSON 格式用于自定义工具
vet scan -D . --report-json=report.json

# CSV 格式用于电子表格分析
vet scan -D . --report-csv=report.csv

# HTML 格式用于基于 Web 的分析
vet scan -D . --report-html=report.html
</td> </tr> <tr> <td><strong>📖 适用于开发人员</strong></td> <td>
# Markdown 报告用于 PR
vet scan -D . --report-markdown=report.md

# 控制台摘要(默认)
vet scan -D . --report-summary
</td> </tr> <tr> <td><strong>🏢 适用于合规性</strong></td> <td>
# 生成 SBOM
vet scan -D . --report-cdx=sbom.json

# 依赖图
vet scan -D . --report-graph=dependencies.dot
</td> </tr> </table>

🎯 报告示例

# 多格式输出
vet scan -D . \
  --report-json=report.json \
  --report-sarif=report.sarif \
  --report-markdown=report.md \
  --report-html=report.html

# 聚焦特定问题
vet scan -D . \
  --filter 'vulns.high.exists(p, true)' \
  --report-json=report.json

🤖 MCP 服务器

vet 可以作为 MCP 服务器运行,以验证 AI 建议的代码中的开源包。

# 使用 SSE 传输启动 MCP 服务器
vet server mcp --server-type sse

更多详细信息,请参阅 vet MCP 服务器 文档。

🤖 代理

更多详细信息,请参阅 vet 代理 文档。

🛡️ 恶意包检测

通过主动扫描和代码分析进行恶意包检测,由 SafeDep Cloud 提供支持。vet 需要 API 密钥来主动扫描未知包。当未提供 API 密钥时,vet 将回退到 查询模式,该模式从 SafeDepOSV 数据库中检测已知的恶意包。

  • 通过运行 vet cloud quickstart 获取免费的 API 密钥
  • API 访问对开源项目永远免费
  • 不收集专有代码以进行恶意包检测
  • 仅支持从公共仓库扫描开源包

🚀 快速设置

恶意包检测需要 SafeDep Cloud 的 API 密钥。

# 一次性设置
vet cloud quickstart

# 启用恶意软件扫描
vet scan -D . --malware

# 无需 API 密钥查询已知的恶意包
vet scan -D . --malware-query

SafeDep Cloud 恶意包检测发现并报告的示例恶意包:

🎯 高级恶意包分析

<table> <tr>