
vet v1.19.0
æªæã®ãããªãŒãã³ãœãŒã¹ããã±ãŒãžããä¿è·ãã ð€
æªæã®ããããã±ãŒãžãè匱æ§ãå±éºãª CI ã¯ãŒã¯ãããŒãæ¬çªç°å¢ã«å°éããåã«æ€åºããŸãã
ã€ã³ã¹ããŒã« ⢠ããã¥ã¡ã³ã ⢠ã³ãã³ã ⢠ããªã·ãŒ ⢠Discord
[!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ã¯ãœãŒã¹ã³ãŒãããã¡ã€ã«ã®å 容ãéä¿¡ããŸããã
èªèšŒæ
å ±ãããå Žåãvet endpoint auditã¯ãã·ã³ã®ã€ã³ãã³ããªãSafeDep Cloudã«éä¿¡ããŸããããã«ã¯
AIããŒã«ãMCPãµãŒããŒãã¹ãã«ãæ¡åŒµæ©èœããããã®èšå®ãã¹ãåããŒã
ãã£ã¬ã¯ããªã®ãŠãŒã¶ãŒåãå«ãŸããŸããmacOSãšLinuxã§ã¯ãvetã¯åããŒã ãã£ã¬ã¯ããªã®uidãéä¿¡ããŸããMCPãµãŒããŒã®ã¬ã³ãŒãã«ã¯ããã®ã³ãã³ããåŒæ°ãæ¢ç¥ã®ã·ãŒã¯ã¬ãããäŒããURLãããã³ãã®å€æ°ãšããããŒã®ååãå«ãŸããŸãããå€ã¯æ±ºããŠå«ãŸããŸããã
plugins.cloud-inventory.enabled: falseã§ãããç¡å¹ã«ã§ããŸãã
ã³ãã¥ããã£
- 質åãã¢ã€ãã¢ã®å ±æã¯DiscordãŸã㯠GitHub Discussionsã§è¡ããŸãã
- ãã°ã®å ±åã¯ã€ã·ã¥ãŒãã©ãã«ãŒã§è¡ããŸãã
- ãã«ãªã¯ãšã¹ããéãåã«ã³ã³ããªãã¥ãŒã·ã§ã³ã¬ã€ãããèªã¿ãã ããã
vetã¯ã¯ã©ãŠãã§ãåäœããŸããSafeDep Cloudã¯ã客æ§ã®ãªããžããªäžã§vetãå®è¡ãã
管çããã€ã³ãã©ã¯äžèŠã§ããèªèšŒæ
å ±ãããå Žåãvet endpoint auditã¯åãã·ã³ã®AIããŒã«ãMCPãµãŒããŒã
æ¡åŒµæ©èœãSafeDep Cloudã«éä¿¡ããŸãã