Vuln Check

io.github.ciloops由 GitHub 帳號 ciloops 發布v0.1.3更新於 Nov 6, 2026

Local vulnerability scan on top of grype, with prioritised upgrade actions for agents.

發布方自己的服務:check.tattoo: tattoo size and placement guide

概覽

AI 產生的概覽

以 grype 為基礎的本機漏洞掃描器,讓助理掃描專案目錄、容器映像與 SBOM,並取得依優先順序排列的升級建議。

可以做什麼
  • 掃描專案目錄中鎖定檔依賴與作業系統套件的已知漏洞,提供依優先順序排列的摘要與具體升級目標
  • 掃描從映像倉庫拉取的容器映像,不需要 Docker 常駐程式
  • 掃描既有的 CycloneDX 或 SPDX SBOM 檔案
  • 依 CVE 或 GHSA 編號查詢單一漏洞的嚴重程度、受影響套件與修正版本
  • 依需求更新本機漏洞資料庫
適用情境
適合在變更依賴檔案或建置之前,讓助理檢查專案依賴或基礎映像是否有已知漏洞,或說明某個特定 CVE。它回傳精簡、依優先順序排列的結果,而不是龐大的原始報告。
執行需求
以本機程序執行,需先安裝 grype(Docker 映像已內含)。可透過 npx、Homebrew、Go install、發行版二進位檔或 ghcr.io 映像取得。未宣告任何帳號、API 金鑰或環境變數。需要網路存取以拉取映像,並在未停用時查詢 OSV API。
安裝前請注意
預設情況下,grype 盤點出的依賴 purl 會傳送到 OSV API;使用停用 OSV 的選項可讓依賴清單不離開本機。掃描會讀取專案目錄並拉取容器映像,映像參照會與映像倉庫共享。結果僅供參考:沒有鎖定檔時看不到間接依賴,版本比較採用通用分詞器,存在已知邊界情況。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Vuln Check,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

vuln-check

[ci] [codecov] [release] [go] [license]

Vulnerability truth for AI agents. Runs grype locally, merges an OSV freshness overlay, and returns a prioritised answer with concrete upgrade targets instead of a 40 KB JSON dump.

  • Any language with a lockfile (npm, PyPI, Go, Maven, Cargo, RubyGems, Composer, NuGet, Hex, Pub, Swift, R, Conan…), OS packages, container images, SBOMs.
  • One score per finding: CVSS + EPSS + CISA KEV + fix availability.
  • Remediation plan per package: smallest version that closes every finding, breaking flag.
  • CLEAN is ~20 tokens. Nothing runs on a server; nothing leaves your machine except the optional OSV query.

Install

sh
# grype is requiredbrew install grype            # or: curl -sSfL https://get.anchore.io/grype | sh -s -- -b /usr/local/bin
go install github.com/ciloops/vuln-check/cmd/vuln-check@latest# orbrew install ciloops/tap/vuln-check      # macOS cask# ornpx @ciloops/vuln-check scan .

Binaries for Linux/macOS/Windows on the Releases page. Docker: ghcr.io/ciloops/vuln-check (bundles grype).

CLI

sh
vuln-check scan .                               # agent format, OSV overlay onvuln-check scan python:3.12-slim                # image, pulled from the registryvuln-check scan sbom:bom.cdx.jsonvuln-check scan --format sarif --sarif-out out.sarif .vuln-check scan --fail-above 69 --no-osv .      # CI gate, exit 2 above thresholdvuln-check vuln CVE-2024-3094vuln-check db update

Output (--format agent):

json
{"status":"ACTION_REQUIRED","target":"dir:.","packages":412,"findings":17,"shown":5,"sources":["grype","osv"], "actions":[{"package":"pkg:npm/minimist","current":"1.2.5","target":"1.2.6","breaking":false,"fixes":["CVE-2021-44906"],"score":59}], "top":[{"id":"CVE-2021-44906","package":"[email protected]","severity":"CRITICAL","score":59,"epss":0.015,"fixed_in":["1.2.6"]}], "unfixable":3}

status: CLEAN | REVIEW (all findings < 40) | ACTION_REQUIRED. fresh: true marks advisories that came from OSV before grype-db ingested them. unfixable counts findings with no fix on the current release line.

MCP

Tools: scan_dir, scan_image, scan_sbom, vuln_lookup, db_update.

Claude Code:

sh
claude mcp add vuln-check -- vuln-check mcp# or the plugin (adds a skill that tells Claude when to scan):claude plugin marketplace add ciloops/vuln-check && claude plugin install vuln-check

Cursor / Windsurf / VS Code (.cursor/mcp.json, ~/.codeium/windsurf/mcp_config.json, .vscode/mcp.json):

json
{ "mcpServers": { "vuln-check": { "command": "vuln-check", "args": ["mcp"] } } }

Codex (~/.codex/config.toml):

toml
[mcp_servers.vuln-check]command = "vuln-check"args = ["mcp"]

Add --no-osv to the args to keep the dependency list off the network.

GitHub Action

yaml
- uses: ciloops/vuln-check@v1  with:    target: .            # or an image ref    fail-above: 69    sarif: vuln.sarif- uses: github/codeql-action/upload-sarif@v3  if: always()  with: { sarif_file: vuln.sarif }

Score

severity = CVSS base × 6 (label fallback) · exploit = EPSS × 30 · KEV: +10, floor 85 · no fix: × 0.85. Clamped to 0–100. See internal/score.

Freshness

grype-db builds daily and grype refreshes it at most every 2 h. The OSV overlay queries api.osv.dev with the purls grype inventoried (language ecosystems only) and adds anything grype-db has not seen yet, usually minutes after a GHSA is published. Disable with --no-osv.

Limits

  • No lockfile → transitive dependencies are invisible. Same as every scanner.
  • Remediation plans assume a linear release line per package; direct vs transitive is not distinguished yet.
  • Version comparison is a generic tokenizer, not per-ecosystem parsers. Good enough for "smallest fix above current"; edge cases exist (PEP 440 post-releases, exotic Maven qualifiers).

Development

sh
go test ./...go build ./cmd/vuln-check

Tests run against a fake grype (cmd/vuln-check/testdata/fake-grype.sh) and fixtures in internal/grype/testdata. CI runs a real grype e2e.

Release: tag vX.Y.Z → goreleaser publishes binaries, checksums, ghcr image, Homebrew cask for macOS (needs HOMEBREW_TAP_GITHUB_TOKEN and the ciloops/homebrew-tap repo) and the npm package via trusted publishing (OIDC, no token: configure the GitHub Actions trusted publisher for @ciloops/vuln-check on npmjs.com, workflow release.yml).

License

Apache-2.0. grype and syft are Apache-2.0 by Anchore. Vulnerability data: NVD (public domain), GHSA (CC-BY 4.0), OSV (per source), CISA KEV, FIRST EPSS.

來源:README.md,提交 dfb645a

工具

5

db_update

Update the local vulnerability database now. Scans already refresh it automatically once a day; call this only when the newest advisories matter.

無需輸入參數。

scan_dir

Scan a project directory for known vulnerabilities in its dependencies (any language with a lockfile) and OS packages. Returns a prioritized summary with concrete upgrade actions. Call this before changing dependency files.

輸入參數toppath必填

scan_image

Scan a container image (pulled from the registry, no Docker daemon needed) for vulnerabilities in OS packages and bundled dependencies. Use it to check a Dockerfile's FROM base image before building.

輸入參數topimage必填

scan_sbom

Scan an existing CycloneDX or SPDX SBOM file for vulnerabilities.

輸入參數toppath必填

vuln_lookup

Look up a vulnerability by id (CVE, GHSA, ...) in the local database: severity, affected packages and fixes.

輸入參數id必填

版本歷史

1
  1. v0.1.3最新Oct 23, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Check 整合