
vet v1.18.1
æªæã®ãããªãŒãã³ãœãŒã¹ããã±ãŒãžããä¿è·ãã ð€
[!NOTE]
vetã¯ãšãŒãžã§ã³ãã¹ãã«ã®ç¹å¥ã¢ãŒãããµããŒãããŠããŸãã GitHub ãªããžããªã§ãã¹ããããŠãããšãŒãžã§ã³ãã¹ãã«ãã¹ãã£ã³ããã«ã¯ãvet scan --agent-skill <owner/repo>ãå®è¡ããŠãã ããã
vet ãéžã¶çç±
çŸä»£ã®ãœãããŠã§ã¢ã®70ïœ90%ã¯ãªãŒãã³ãœãŒã¹ã³ãŒãã§ã â ãããå®å šã§ãããšã©ããã£ãŠç¢ºèªããŸããïŒ
åŸæ¥ã®SCAããŒã«ã¯CVEã®ãã€ãºã§åãããŠããŸããŸããvet ã¯ç°ãªãã¢ãããŒãããšããŸãïŒ
- ã·ã£ã㊠AI çºèŠ â ããŸããŸãªããŒã«ãèšå®ããAIããŒã«äœ¿çšã®ã·ã°ãã«ãçºèŠ
- ãã«ãŠã§ã¢ãåºè·ãããåã«ãã£ãã â éçããã³åçåäœåæã«ãããŒããã€æ€åºïŒSafeDep Cloud ãžã®ã¢ã¯ã»ã¹ãå¿ èŠïŒ
- è匱æ§ãã€ãºãåæž â å®éã®ã³ãŒã䜿çšç¶æ³ãåæããéèŠãªãªã¹ã¯ã®ã¿ãæœåº
- ããªã·ãŒãã³ãŒããšããŠé©çš â ã»ãã¥ãªãã£ãã©ã€ã»ã³ã¹ãå質èŠä»¶ã CEL åŒã§è¡šçŸ
- CI/CD çµ±å â CI/CD ã«ããããŒãã³ã³ãã£ã°ã®ã»ãã¥ãªãã£ã¬ãŒãã¬ãŒã«
ãªãŒãã³ãœãŒã¹ã§ã¯ç¡æããã¹ãåSaaS㯠SafeDep ã§å©çšå¯èœã
ã¯ã€ãã¯ã¹ã¿ãŒã
æ°ç§ã§ã€ã³ã¹ããŒã«:
# macOS & Linux
brew install safedep/tap/vet
# npm ã䜿çš
npm install -g @safedep/vet
ãŸã㯠äºåãã«ããã€ã㪠ãããŠã³ããŒã
ããã«äœ¿ãå§ãã:
# äŸåé¢ä¿ã®ãã«ãŠã§ã¢ãã¹ãã£ã³
vet scan -D . --malware-query
# CIã§éèŠãªè匱æ§ã§å€±æããã
vet scan -D . --filter 'vulns.critical.exists(p, true)' --filter-fail
ã¢ãŒããã¯ãã£
vet ã¯ãã€ãã©ã€ã³ã¢ãŒããã¯ãã£ã«åŸããŸãïŒãªãŒã㌠ã倿§ãªãœãŒã¹ïŒãã£ã¬ã¯ããªããªããžããªãã³ã³ããã€ã¡ãŒãžãSBOMïŒããããã±ãŒãžãããã§ã¹ããåã蟌ã¿ããšã³ãªããã£ãŒ ã SafeDep Cloud ããè匱æ§ããã«ãŠã§ã¢ãã¹ã³ã¢ã«ãŒãããŒã¿ã§åããã±ãŒãžãæ¡åŒµããCEL ããªã·ãŒãšã³ãžã³ ãæ¡åŒµããŒã¿ã«å¯ŸããŠã»ãã¥ãªãã£ããªã·ãŒãè©äŸ¡ããã¬ããŒã¿ãŒ ã SARIFãJSONãMarkdown ãªã©ã®åœ¢åŒã§å®çšçãªåºåãçæããŸãã
ã¢ãŒããã¯ãã£å³ã衚瀺
graph TB
subgraph "OSS ãšã³ã·ã¹ãã "
R1[npm Registry]
R2[PyPI Registry]
R3[Maven Central]
R4[ãã®ä»ã®ã¬ãžã¹ããª]
end
subgraph "SafeDep Cloud"
M[ç¶ç¶çç£èŠ]
A[ãªã¢ã«ã¿ã€ã ã³ãŒãåæ<br/>ãã«ãŠã§ã¢æ€åº]
T[è
åšã€ã³ããªãžã§ã³ã¹DB<br/>èåŒ±æ§ â¢ ãã«ãŠã§ã¢ ⢠ã¹ã³ã¢ã«ãŒã]
end
subgraph "vet CLI"
S[ãœãŒã¹ãªããžããª<br/>ã¹ãã£ããŒ]
P[CEL ããªã·ãŒãšã³ãžã³]
O[ã¬ããŒããšã¢ã¯ã·ã§ã³<br/>SARIF/JSON/CSV]
end
R1 -->|æ°ããããã±ãŒãž| M
R2 -->|æ°ããããã±ãŒãž| M
R3 -->|æ°ããããã±ãŒãž| M
R4 -->|æ°ããããã±ãŒãž| M
M -->|åäœåæ| A
A -->|ãã«ãŠã§ã¢ã·ã°ãã«| T
S -->|ããã±ãŒãžæ
å ±ç
§äŒ| T
T -->|ã»ãã¥ãªãã£ã€ã³ããªãžã§ã³ã¹| S
S -->|åæçµæ| P
P -->|ããªã·ãŒæ±ºå®| O
style M fill:#7CB9E8,stroke:#5A8DB8,color:#1a1a1a
style A fill:#E8A87C,stroke:#B88A5A,color:#1a1a1a
style T fill:#7CB9E8,stroke:#5A8DB8,color:#1a1a1a
style S fill:#90C695,stroke:#6B9870,color:#1a1a1a
style P fill:#E8C47C,stroke:#B89B5A,color:#1a1a1a
style O fill:#B8A3D4,stroke:#9478AA,color:#1a1a1a
äž»ãªæ©èœ
æªæã®ããããã±ãŒãžæ€åº
SafeDep Cloud ã«ãããªã¢ã«ã¿ã€ã ã®æªæããã±ãŒãžå¯Ÿçã ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ã¯ç¡æãã¢ã¯ãã£ããªã³ãŒãåæã«ãããŒããã€ãã«ãŠã§ã¢ãæ€åºããŸãã
è匱æ§åæ
ãã€ãºã§ããµããããäŸåé¢ä¿ã¹ãã£ããŒãšã¯ç°ãªããvet 㯠å®éã®ã³ãŒã䜿çšç¶æ³ ãåæããŠçã®ãªã¹ã¯ãåªå
é äœä»ãããŸãã
詳现ã¯äŸåé¢ä¿äœ¿çšãšããã³ã¹ãåç
§ã
ããªã·ãŒãšããŠã®ã³ãŒã
CEL åŒã䜿çšããŠã»ãã¥ãªãã£ããªã·ãŒãå®çŸ©ããã³ã³ããã¹ãã«å¿ããèŠä»¶ã匷å¶ããŸã:
# é倧ãªCVEãããããã±ãŒãžããããã¯
vet scan --filter 'vulns.critical.exists(p, true)' --filter-fail
# ã©ã€ã»ã³ã¹æºæ ã匷å¶
vet scan --filter 'licenses.contains_license("GPL-3.0")' --filter-fail
# æäœéã® OpenSSF Scorecard ã¹ã³ã¢ãèŠæ±
vet scan --filter 'scorecard.scores.Maintained < 5' --filter-fail
ãã«ããšã³ã·ã¹ãã 察å¿
ããã±ãŒãžãããŒãžã£ãŒ: npm, PyPI, Maven, Go, Ruby, Rust, PHP ã³ã³ããã€ã¡ãŒãž: Docker, OCI SBOM 圢åŒ: CycloneDX, SPDX ãœãŒã¹ãªããžããª: GitHub, GitLab
æªæã®ããããã±ãŒãžæ€åº
SafeDep ã®è åšã€ã³ããªãžã§ã³ã¹ããŒã¿ããŒã¹ã«åãåãããããšã§ãæªæããã±ãŒãžã«å¯Ÿãããªã¢ã«ã¿ã€ã é²åŸ¡ ãå®çŸããŸãããã®ããŒã¿ããŒã¹ã¯éçã»åçè¡ååæã«ãã£ãŠç¶ç¶çã«æŽæ°ãããŠããŸãã
ã¯ã€ãã¯ã»ããã¢ãã
# æ¢ç¥ã®æªæããã±ãŒãžãç
§äŒïŒAPIããŒäžèŠïŒ
vet scan -D . --malware-query
[!NOTE]
--malwareãã©ã°ã¯éæšå¥šã§ããã¢ã¯ãã£ãïŒãªã³ããã³ãïŒã¹ãã£ã³ã¯ SafeDep ã®è åšã€ã³ããªãžã§ã³ã¹ããŒã¿ããŒã¹ãžã®ç §äŒã«çœ®ãæããããŸããã--malwareã¯çŸåš--malware-queryãšåãåäœãããåŸæ¹äºææ§ã®ããã«ç¶æãããŠããŸãã
æ€åºäŸ:
- MAL-2025-3541: express-cookie-parser
- MAL-2025-4339: eslint-config-airbnb-compat
- MAL-2025-4029: ts-runtime-compat-check
äž»ãªã»ãã¥ãªãã£æ©èœ:
- SafeDep ã®æ¢ç¥ã®æªæããã±ãŒãžããŒã¿ããŒã¹ãžã®ãªã¢ã«ã¿ã€ã ç §äŒ
- éçããã³åçåæã«ããè¡ååæïŒSafeDep Cloud ã§ç¶ç¶çã«å®è¡ïŒ
- 圱é¿ã®å€§ããçºèŠã«å¯Ÿãããã¥ãŒãã³ã»ã€ã³ã»ã¶ã»ã«ãŒãã®ããªã¢ãŒãž
- éææ§ã®ããã®å ¬é åæãã°
é«åºŠãªäœ¿ãæ¹
# ç¹åããã¹ãã£ã³
vet scan --vsx --malware-query # VS Code æ¡åŒµæ©èœ
vet scan -D .github/workflows --malware-query # GitHub Actions
vet scan --image nats:2.10 --malware-query # ã³ã³ããã€ã¡ãŒãž
[!NOTE]
vet inspect malwareã³ãã³ãïŒåäžããã±ãŒãžã®ãªã³ããã³ãåæïŒã¯éæšå¥šã§ãããå°æ¥ã®ãªãªãŒã¹ã§åé€ãããäºå®ã§ããSafeDep ã®æ¢ç¥ã®æªæããã±ãŒãžããŒã¿ããŒã¹ã«å¯ŸããŠããã±ãŒãžããã§ãã¯ããã«ã¯ãvet scan --malware-queryã䜿çšããŠãã ããã
ãããã¯ã·ã§ã³å¯Ÿå¿ã®çµ±å
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 ãå®è¡:
docker run --rm -v $(pwd):/app ghcr.io/safedep/vet:latest scan -D /app --malware-query
ã€ã³ã¹ããŒã«
Homebrew (æšå¥š)
brew install safedep/tap/vet
npm
npm install @safedep/vet
çŽæ¥ããŠã³ããŒã
äºåãã«ããã€ããªã«ã€ããŠã¯ releases ãåç §ã
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
# ããŒãžã§ã³ãšãã«ãæ
å ±ã衚瀺ãããã¯ãã§ã
é«åºŠãªæ©èœ
詳现ãªããã¥ã¡ã³ãã§ããã«åŠã¶:
- AI 䜿çšç¶æ³æ€åº - ããŸããŸãªããŒã«ãèšå®ããAIããŒã«äœ¿çšã®ã·ã°ãã«ãçºèŠ
- AI ãšãŒãžã§ã³ãã¢ãŒã - vet ã AI ãšãŒãžã§ã³ããšããŠå®è¡
- MCP ãµãŒã㌠- AI æ¯æŽã³ãŒãåæã®ããã® MCP ãµãŒããŒãšã㊠vet ãå®è¡
- ã¬ããŒã - SARIFãJSONãCSVãHTMLãMarkdown 圢åŒ
- SBOM ãµããŒã - CycloneDXãSPDX ã®ã€ã³ããŒã/ãšã¯ã¹ããŒã
- ã¯ãšãªã¢ãŒã - äžåºŠã¹ãã£ã³ããŠè€æ°ååæ
- GitHub çµ±å - ãªããžããªããã³çµç¹ã®ã¹ãã£ã³
- GitHub Actions ãã³çã - GitHub Actions ãã³ãããSHAã«ãã³çãããŠãµãã©ã€ãã§ãŒã³æ»æã鲿¢
ãã©ã€ãã·ãŒ
vet ã¯è£œåæ¹åã®ããã«å¿åã®äœ¿çšãã¬ã¡ããªãŒãåéããŸããã客æ§ã®ã³ãŒããããã±ãŒãžæ
å ±ãéä¿¡ãããããšã¯æ±ºããŠãããŸããã
# ãã¬ã¡ããªãŒãç¡å¹ã«ããïŒãªãã·ã§ã³ïŒ
export VET_DISABLE_TELEMETRY=true
ã³ãã¥ããã£ãšãµããŒã
ãã«ããšã¢ã€ãã¢ã®å ±æ
- ã€ã³ã¿ã©ã¯ãã£ããã¥ãŒããªã¢ã« - vet ããã³ãºãªã³ã§åŠã¶
- å®å šãªããã¥ã¡ã³ã - å æ¬çãªã¬ã€ã
- Discord ã³ãã¥ãã㣠- ãªã¢ã«ã¿ã€ã ãµããŒã
- ã€ã·ã¥ãŒãã©ãã«ãŒ - ãã°å ±åãšæ©èœãªã¯ãšã¹ã
- ã³ã³ããªãã¥ãŒã·ã§ã³ã¬ã€ã - éçºã«åå
ã¹ã¿ãŒå±¥æŽ
ãªãŒãã³ãœãŒã¹ã§æ§ç¯
vet ã¯å·šäººã®è©ã®äžã«ç«ã£ãŠããŸã:
OSV ⢠OpenSSF Scorecard ⢠SLSA ⢠OSV-SCALIBR ⢠Syft
ã³ã³ããªãã¥ãŒã¿ãŒ
ãã¹ãŠã®ã³ã³ããªãã¥ãŒã¿ãŒã«æè¬ããŸã â€ïž
仿¥ãããµãã©ã€ãã§ãŒã³ãä¿è·ããŸãããããªããžããªã«ã¹ã¿ãŒãä»ããŠå§ããŸãããïŒ
SafeDep ãšãªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã«ããææ ã蟌ããŠäœæ
