
vet v1.19.0
悪意のあるオープンソースパッケージから保護する 🤖
悪意のあるパッケージ、脆弱性、危険な CI ワークフローを本番環境に到達する前に発見します。
[!NOTE] このブランチは vet v2 のアルファ版です。vet v1 は
mainにあり、 最新リリースとして維持されています。v2.0.0 リリースノートでは、各 v1 コマンドとフラグを v2 に対応付けています。
vet を使う理由
依存関係、GitHub Actions ワークフロー、AI エージェントの設定は、あなたが書いていないコードを実行します。vet はそれらの中にあるリスクを発見します。
- 悪意のあるパッケージ。 vet は各パッケージを SafeDep Threat Intel と照合します。Threat Intel は、レジストリが新しいパッケージバージョンを公開した時点でそれを分析します。
- 既知の脆弱性、およびアップグレードすべき修正バージョン。
- 危険なワークフロー。 危険なトリガー、テンプレートインジェクション、露出したシークレット、コミット SHA が固定されていないアクション。
- ロックファイルの改ざんと新しいバージョン。 信頼できないレジストリからのエントリ、およびクールダウン期間内のバージョン。
- コードとしてのポリシー。 CEL のルールがスキャンを失敗させる条件を決定します。保存済みのスキャンに対してルールをテストできます。
- AI と暗号のインベントリ。 vet はあなたのコードが呼び出す AI ライブラリと暗号アルゴリズムを一覧化し、CycloneDX xBOM と CBOM を出力します。
vet はアカウントを必要とせず、ソースコードを送信しません。
クイックスタート
brew install --cask safedep/tap/vet@edge
vet scan
vet scan --fail-on high # exit 1 on a high or critical finding
vet scan --base-ref origin/main --fail-on high # report only what a pull request changes
vet report show --report sarif=vet.sarif # write SARIF from the saved scan, with no new scan
インストール
| チャネル | コマンド |
|---|---|
| Homebrew | brew install --cask safedep/tap/vet@edge |
| mise | mise use -g 'github:safedep/vet[prerelease=true]@2' |
| Go | go install github.com/safedep/vet/v2/cmd/vet@latest |
| コンテナ | docker run --rm -v "$PWD:/src" -w /src ghcr.io/safedep/vet:v2-latest scan |
mise はリリースの公開から 1 日後にインストールします。install.md には、 最新ビルド用のコマンド、リリースバイナリ、ビルドの証明が記載されています。
vet がスキャンする対象
| 対象 | 例 |
|---|---|
| ディレクトリ (デフォルト) | vet scan, vet scan ./service |
| git リポジトリ | vet scan https://github.com/safedep/vet |
| コンテナイメージ | vet scan oci://alpine:3.20, vet scan image.tar |
| SBOM (CycloneDX または SPDX) | vet scan sbom.cdx.json |
| 単一パッケージ | vet scan pkg:npm/[email protected] |
| このマシン上のツール | vet endpoint audit |
vet は npm、PyPI、Go、Maven、Gradle、Cargo、RubyGems、NuGet、Packagist、Pub などの ロックファイルとマニフェストを読み取ります。また、対象の GitHub Actions ワークフローと AI エージェント設定も読み取ります。それらをインストールしたり実行したりすることはありません。 コントロールがこのデータを検出結果に変換します。詳細は controls.md を参照してください。
ポリシー
ポリシーはスキャンを失敗させる条件を決定します。このファイルを vet-policy.yml として保存します:
version: 2
rules:
- id: no-malware
description: A malicious or suspicious package fails the build.
when: finding.family == "malware"
action: fail
- id: no-workflow-injection
when: finding.control_id in ["dangerous-trigger", "template-injection"]
action: fail
- id: no-critical-vulnerability
when: finding.control_id == "vulnerability" && finding.severity == "critical"
action: fail
- id: new-dependency-age
description: A pull request cannot add a version that is less than 14 days old.
when: package.change == "ADDED" && has(package.days_since_publish) && package.days_since_publish < 14
action: fail
suppressions:
- purl: pkg:npm/[email protected]
reason: The upgrade to 4.18.1 is in pull request 42.
expires: 2026-12-31
新しいスキャンを行わずに、最後のスキャンに対してテストします。次に、それをプルリクエストに適用します:
vet report show last --policy vet-policy.yml
vet scan --base-ref origin/main --policy vet-policy.yml
有効期限を過ぎると、抑制は検出結果を隠さなくなります。ルールのフィールド、その他のルール、 およびポリシーを自動生成する Agent Skill については policy.md を参照してください。
ユースケース
- プルリクエストチェック。 vet GitHub Action は、パッケージ、ワークフロー、または検出結果を追加するプルリクエストにコメントし、攻撃時にはチェックを失敗させます。
vet ci initがそれをリポジトリに追加します。 - CI ゲート。 終了コード、GitHub コードスキャン用の SARIF、GitLab および Bitbucket のレポート。詳細は ci.md を参照してください。
- プルリクエストレビュー。
--base-refは、変更が追加したパッケージとワークフローのみを報告します。 - xBOM と CBOM。 あなたのコードが使用する AI ライブラリと暗号の CycloneDX 1.7 インベントリ。 詳細は inventory.md を参照してください。
- AI エージェント。 vet は Claude Code やその他のエージェントを検出し、JSON を出力してプロンプトを一切表示しません。
- エンドポイント監査。
vet endpoint auditは、開発者マシン上の AI ツール、MCP サーバー、エディタ拡張機能、 グローバル npm パッケージを一覧化し、それらにマルウェアがないかチェックします。
ドキュメント
| ページ | 参照目的 |
|---|---|
| インストール | すべてのチャネルとリリースの検証方法 |
| コマンド | すべてのコマンド、そのフラグと終了コード |
| コントロール | コントロールとそのオプション |
| ポリシー | ルール、抑制、ゲート |
| 出力 | レポート形式、保存済みスキャン、設定 |
| CI と AI エージェント | GitHub Actions、GitLab、Bitbucket、エージェントモード |
| インベントリ | コード使用状況、AI と暗号、xBOM と CBOM |
プライバシー
vet は各パッケージの識別情報 (エコシステム、名前、バージョン) を SafeDep に送信し、それに関するデータを取得します。vet はソースコードやファイルの内容を送信しません。
コミュニティ
- Discord または GitHub Discussions で質問やアイデアを共有してください。
- バグは issue tracker で報告してください。
- プルリクエストを開く前に contributing guide をお読みください。
vet はクラウドでも動作します。SafeDep Cloud は、管理するインフラストラクチャなしで、あなたのリポジトリ上で vet を実行します。