์—…๋ฐ์ดํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
New releaseJul 30, 2026

vet v1.18.1

์•…์„ฑ ์˜คํ”ˆ์†Œ์Šค ํŒจํ‚ค์ง€๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ ๐Ÿค–

๊ณต์œ 

SafeDep VET - ์‹ค์‹œ๊ฐ„ ์•…์„ฑ ํŒจํ‚ค์ง€ ํƒ์ง€ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ณต๊ธ‰๋ง ๋ณด์•ˆ

Go Report Card License Release OpenSSF Scorecard SLSA 3 CodeQL

Ask DeepWiki


[!NOTE] vet๋Š” Agent Skills์šฉ ํŠน์ˆ˜ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. GitHub ์ €์žฅ์†Œ์— ํ˜ธ์ŠคํŒ…๋œ Agent Skill์„ ์Šค์บ”ํ•˜๋ ค๋ฉด 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

# Using npm
npm install -g @safedep/vet

๋˜๋Š” ์‚ฌ์ „ ๋นŒ๋“œ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”.

๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ธฐ:

# Scan for malware in your dependencies
vet scan -D . --malware-query

# Fail CI on critical vulnerabilities
vet scan -D . --filter 'vulns.critical.exists(p, true)' --filter-fail

์•„ํ‚คํ…์ฒ˜

vet๋Š” ํŒŒ์ดํ”„๋ผ์ธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค: **๋ฆฌ๋”(reader)**๊ฐ€ ๋‹ค์–‘ํ•œ ์†Œ์Šค(๋””๋ ‰ํ„ฐ๋ฆฌ, ์ €์žฅ์†Œ, ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€, SBOM)์—์„œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , **์ธ๋ฆฌ์ฒ˜(enricher)**๊ฐ€ SafeDep Cloud์˜ ์ทจ์•ฝ์ ยท์•…์„ฑ์ฝ”๋“œยท์Šค์ฝ”์–ด์นด๋“œ ๋ฐ์ดํ„ฐ๋กœ ๊ฐ ํŒจํ‚ค์ง€๋ฅผ ๋ณด๊ฐ•ํ•˜๋ฉฐ, CEL ์ •์ฑ… ์—”์ง„์ด ๋ณด๊ฐ•๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋ณด์•ˆ ์ •์ฑ…์„ ํ‰๊ฐ€ํ•˜๊ณ , **๋ฆฌํฌํ„ฐ(reporter)**๊ฐ€ SARIF, JSON, Markdown๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ ๋ณด๊ธฐ
graph TB
    subgraph "OSS Ecosystem"
        R1[npm Registry]
        R2[PyPI Registry]
        R3[Maven Central]
        R4[Other Registries]
    end

    subgraph "SafeDep Cloud"
        M[Continuous Monitoring]
        A[Real-time Code Analysis<br/>Malware Detection]
        T[Threat Intelligence DB<br/>Vulnerabilities โ€ข Malware โ€ข Scorecard]
    end

    subgraph "vet CLI"
        S[Source Repository<br/>Scanner]
        P[CEL Policy Engine]
        O[Reports & Actions<br/>SARIF/JSON/CSV]
    end

    R1 -->|New Packages| M
    R2 -->|New Packages| M
    R3 -->|New Packages| M
    R4 -->|New Packages| M
    M -->|Behavioral Analysis| A
    A -->|Malware Signals| T

    S -->|Query Package Info| T
    T -->|Security Intelligence| S
    S -->|Analysis Results| P
    P -->|Policy Decisions| 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 ํ‘œํ˜„์‹์œผ๋กœ ๋ณด์•ˆ ์ •์ฑ…์„ ์ •์˜ํ•˜์—ฌ ์ปจํ…์ŠคํŠธ๋ณ„ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค:

# Block packages with critical CVEs
vet scan --filter 'vulns.critical.exists(p, true)' --filter-fail

# Enforce license compliance
vet scan --filter 'licenses.contains_license("GPL-3.0")' --filter-fail

# Require minimum OpenSSF Scorecard scores
vet scan --filter 'scorecard.scores.Maintained < 5' --filter-fail

๋‹ค์ค‘ ์ƒํƒœ๊ณ„ ์ง€์›

ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €: npm, PyPI, Maven, Go, Ruby, Rust, PHP ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€: Docker, OCI SBOM ํ˜•์‹: CycloneDX, SPDX ์†Œ์Šค ์ €์žฅ์†Œ: GitHub, GitLab

์•…์„ฑ ํŒจํ‚ค์ง€ ํƒ์ง€

์ •์  ๋ฐ ๋™์  ๋™์ž‘ ๋ถ„์„์œผ๋กœ ์ง€์†์ ์œผ๋กœ ๊ฐฑ์‹ ๋˜๋Š” SafeDep ์œ„ํ˜‘ ์ธํ…”๋ฆฌ์ „์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐํšŒํ•˜์—ฌ ์•…์„ฑ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ์„ค์ •

# Query known malicious packages (no API key needed)
vet scan -D . --malware-query

[!NOTE] --malware ํ”Œ๋ž˜๊ทธ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(deprecated). ์ฃผ๋ฌธํ˜•(on-demand) ๋Šฅ๋™ ์Šค์บ”์€ SafeDep์˜ ์œ„ํ˜‘ ์ธํ…”๋ฆฌ์ „์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ ๋ฐฉ์‹์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. --malware๋Š” ์ด์ œ --malware-query์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋ฉฐ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

ํƒ์ง€ ์‚ฌ๋ก€:

์ฃผ์š” ๋ณด์•ˆ ๊ธฐ๋Šฅ:

  • SafeDep์˜ ์•Œ๋ ค์ง„ ์•…์„ฑ ํŒจํ‚ค์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ์กฐํšŒ
  • ์ •์  ๋ฐ ๋™์  ๋ถ„์„์„ ํ™œ์šฉํ•œ ๋™์ž‘ ๋ถ„์„(SafeDep Cloud์—์„œ ์ง€์†์ ์œผ๋กœ ์ˆ˜ํ–‰)
  • ์˜ํ–ฅ๋„๊ฐ€ ๋†’์€ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์ธ๊ฐ„ ๊ฐœ์ž…(Human-in-the-loop) ํŠธ๋ฆฌ์•„์ง€
  • ํˆฌ๋ช…์„ฑ์„ ์œ„ํ•œ ๊ณต๊ฐœ ๋ถ„์„ ๋กœ๊ทธ

๊ณ ๊ธ‰ ์‚ฌ์šฉ๋ฒ•

# Specialized scans
vet scan --vsx --malware-query                  # VS Code extensions
vet scan -D .github/workflows --malware-query   # GitHub Actions
vet scan --image nats:2.10 --malware-query      # Container images

[!NOTE] vet inspect malware ๋ช…๋ น(๋‹จ์ผ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ฃผ๋ฌธํ˜• ๋ถ„์„)์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ(deprecated) ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๊ฑฐ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. 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 Component๋ฅผ ์‚ฌ์šฉํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์Šค์บ๋‹:

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

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€

# Quick test
docker run --rm ghcr.io/safedep/vet:latest version

# Scan local directory
docker run --rm -v $(pwd):/workspace ghcr.io/safedep/vet:latest scan -D /workspace

์„ค์น˜ ํ™•์ธ

vet version
# Should display version and build information

๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

ํฌ๊ด„์ ์ธ ๋ฌธ์„œ์—์„œ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”:

๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ

vet๋Š” ์ œํ’ˆ ๊ฐœ์„ ์„ ์œ„ํ•ด ์ต๋ช… ์‚ฌ์šฉ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ์™€ ํŒจํ‚ค์ง€ ์ •๋ณด๋Š” ์ ˆ๋Œ€ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

# Disable telemetry (optional)
export VET_DISABLE_TELEMETRY=true

์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ ์ง€์›

์ปค๋ฎค๋‹ˆํ‹ฐ ์ฐธ์—ฌ

Discord GitHub Discussions Twitter Follow

๋„์›€ ๋ฐ›๊ธฐ ๋ฐ ์•„์ด๋””์–ด ๊ณต์œ 


Star ํžˆ์Šคํ† ๋ฆฌ

Star History Chart

์˜คํ”ˆ์†Œ์Šค๋กœ ๊ตฌ์ถ•

vet๋Š” ๊ฑฐ์ธ์˜ ์–ด๊นจ ์œ„์— ์„œ ์žˆ์Šต๋‹ˆ๋‹ค:

OSV โ€ข OpenSSF Scorecard โ€ข SLSA โ€ข OSV-SCALIBR โ€ข Syft

๊ธฐ์—ฌ์ž

๋ชจ๋“  ๊ธฐ์—ฌ์ž๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค โค๏ธ

vet ๊ธฐ์—ฌ์ž

์ง€๊ธˆ ๋ฐ”๋กœ ๊ณต๊ธ‰๋ง์„ ๋ณดํ˜ธํ•˜์„ธ์š”. ์ €์žฅ์†Œ์— Star๋ฅผ ๋ˆ„๋ฅด๊ณ  ์‹œ์ž‘ํ•˜์„ธ์š”!

SafeDep๊ณผ ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์‚ฌ๋ž‘์„ ๋‹ด์•„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค

์นดํ…Œ๊ณ ๋ฆฌ