Releases: kidoz/vulners-cli
v1.3.0
vulners-cli v1.3.0
Feature release with host scanning — scan local and remote hosts (Linux & Windows) for known vulnerabilities directly from the CLI.
New features
Host scanning
vulners scan host— new command to scan local or remote hosts for known vulnerabilities- Local scanning —
vulners scan host localdetects the OS, gathers installed packages, and audits them against the Vulners database - SSH remote scanning —
vulners scan host ssh://user@hostnameconnects to Linux hosts via SSH with key, agent, or password authentication - WinRM remote scanning —
vulners scan host winrm://admin@hostconnects to Windows hosts via WinRM (HTTP) or WinRMs (HTTPS) - OS fingerprinting — automatic detection of Debian/Ubuntu, RHEL/CentOS/Fedora/Rocky/Alma, Alpine, SUSE, and Windows families via
/etc/os-releaseand WMI - Package inventory — dpkg, rpm, apk, and Windows HotFix (KB) collection
- Authentication options —
--identity-file,--password-env,--ask-pass,--insecure, and--timeoutflags - Context cancellation — SSH sessions respect context deadlines with proper signal propagation
CI/CD documentation
- Split CI/CD guide into dedicated GitHub Actions and GitLab CI pages with copy-paste-ready examples
Other changes
- Remove dependabot configuration
v1.2.5
vulners-cli v1.2.5
Bugfix release: CPE search now returns results, new markdown report format.
What's Changed
Fixed CPE search returning empty results
vulners cpe chrome --vendor googlereturned nothing — the Vulners v4 API/api/v4/search/cpereturns data in{"result": {...}}format, but the go-vulners client expected the v3{"result": "OK", "data": {...}}wrapper. The response was silently parsed as empty.- Also updated the
audit hostcommand for the new v4SoftwareAuditResultresponse type.
Added markdown report format
- New
--output markdown/-o markdownflag for scan commands — generates a human-readable Markdown report suitable for pasting into issues, PRs, or documentation.
Tooling updates
- Updated golangci-lint to v2.9.0
- Added macOS install instructions to README
Dependency update
- Upgraded go-vulners v1.1.5 → v1.2.0 — fixes v4 response parsing for CPE search, STIX bundles, and software/host audit endpoints
v1.2.4
vulners-cli v1.2.4
Maintenance release: Go 1.26 and dependency updates.
What's Changed
Go 1.26 upgrade
- Updated Go toolchain 1.25.7 → 1.26.0 — includes the new Green Tea garbage collector (10-40% less GC overhead), stricter
url.Parsevalidation, andnew()expression syntax
Dependency updates
- Updated all direct and transitive dependencies to latest versions, including grpc 1.79.1, protobuf 1.36.11, cloud.google.com/go/storage 1.60, otel 1.40, and ~90 other transitive bumps
v1.2.3
vulners-cli v1.2.3
Bugfix release: Linux audit now works correctly for Debian-based distributions.
What's Changed
Fixed Linux audit for deb-based distros
vulners audit linuxalways failed for Ubuntu/Debian — the Vulners API requires packages inname version archformat (three space-separated fields) for deb-based distributions, but the CLI was sending onlyname version. The API returned a generic error with no details, making it hard to diagnose.- Added automatic architecture detection for deb-based distros (ubuntu, debian, kali, mint, etc.) — if the user passes
--pkg openssl=3.0.2, the CLI now correctly sendsopenssl 3.0.2 amd64to the API. - New
--archflag allows overriding the default architecture when auditing a remote system. - RPM-based distros (centos, rhel, fedora, etc.) are unaffected and continue to work with
name versionformat.
Dependency update
- Upgraded go-vulners v1.1.4 → v1.1.5
v1.2.2
vulners-cli v1.2.2
Bugfix release: AI score now correctly populated in scan results.
What's Changed
Fixed AI score extraction
- AI score was always 0 in scan findings — the SBOMAudit API returns the Vulners AI score inside
enchantments.score.value, not in the top-levelaiScorefield. UpdatedconvertSBOMFindingsto extract the score fromenchantments.score(with fallback toaiScore) - CVE-2023-45853 now correctly shows
aiScore: 9.7instead of0
Dependency update
- Upgraded go-vulners v1.1.3 → v1.1.4 — adds
GetEnchantmentsScore()helper and alignsAIScorestruct fields (Value/Uncertainty) with the actual API response format
v1.2.1
vulners-cli v1.2.1
Maintenance release: syft is now embedded as a Go library — no external binary required for image scanning.
What's Changed
Embedded syft library
vulners scan imageno longer requires an externalsyftbinary — SBOM generation now happens in-process using anchore/syft v1.42.0 as a Go library- Replaced
exec.Command("syft", ...)subprocess withsyft.GetSource()→syft.CreateSBOM()→ CycloneDX JSON encoder pipeline - Zero-install image scanning:
go installor a single binary is all you need
Doctor & MCP cleanup
vulners doctorno longer checks for externalsyftin PATH (not needed)- MCP
doctortool description updated accordingly
README updates
- Removed "(requires syft)" from image scanning documentation
- Added sections for autocomplete, VScanner, webhooks, subscriptions, reports, MCP server, diagnostics, and agent mode
v1.2.0
vulners-cli v1.2.0
Feature release with new commands, Trivy-competitive image scanning, MCP server, and quality improvements.
New features
Image scanning improvements
- Hybrid image scanning —
vulners scan imagenow routes OS packages (apk/deb/rpm) throughLinuxAuditAPI for distro-aware matching, and application packages throughSBOMAuditAPI for richer findings (CVSS, EPSS, AIScore, exploit info) - Distro auto-detection — automatically extracts OS distribution from CycloneDX SBOM metadata; override with
--distro alpine/3.18 - Image metadata — JSON output now includes
imageMetawith distro info, package breakdown, and audit mode
MCP server
vulners mcp— built-in Model Context Protocol server exposing Vulners tools to AI agents (search, CVE lookup, CPE search, SBOM audit, scan)
VScanner integration
vulners vscan— manage Vulners VScanner projects, tasks, and vulnerability scans with full lifecycle support (create, list, start, stop, results)
Webhooks & subscriptions
vulners webhook— manage webhooks (list, add, read, enable/disable, delete)vulners subscription— manage vulnerability subscriptions (list, create, update, enable/disable, delete)
Reporting & dashboards
vulners report— vulnerability summary, vulnerability list, host vulnerabilities, scan history, and IP summary reports
Developer experience
vulners doctor— environment health check (API key, connectivity, syft, govulncheck, offline cache)vulners autocomplete— generate shell completions for bash, zsh, fishvulners suggest— search query suggestionsvulners spec— print OpenAPI-style command specification (JSON)vulners schema— print JSON schema for scan output
Output & agent support
--agentflag — structured JSON output with deterministic sort, quiet logging, no color--fields— project specific fields from JSON output (e.g.--fields findings.vulnID,findings.severity)--summary-only— compact output with summary + top 5 findings--max-findings— truncate findings with total count preserved--plan— dry-run mode showing what a scan would do- CycloneDX VEX and HTML output formats
Fixes
Security & correctness
- Fail-closed on total lookup failure — both online matcher and offline scan now return an error when all component lookups fail, preventing silent false negatives (exit 0 with empty findings)
- VEX suppression priority — primary VulnID status now takes priority over alias status; aliases are only consulted when the primary ID has no VEX statement
- Vulners query escaping — special characters (
:,(,),[,]) are now properly escaped in search queries to prevent syntax errors - CVSS3 score handling — CVSS3 score of 0 no longer falls through to CVSS2, ensuring correct severity when CVSS3 is present
- Pagination input validation — limit clamped to [1, 1000] and offset to >= 0, preventing negative values from reaching SQL/API calls
Reliability
- Search limit — increased from 20 to 100 bulletins per component to avoid missing vulnerabilities for popular packages
- Config error reporting — malformed YAML config file now returns an error instead of silently logging a warning
- Component normalization — TrimSpace applied to name, version, and type to prevent whitespace mismatches
- topNFindings sort — now correctly ranks by severity then CVSS (not severity then VulnID), so top findings reflect actual risk
- Log level precedence — fixed edge case where neither
--quietnor--verbosecould leave log level unset - captureStdout safety — test helper now uses defer to restore os.Stdout even on panic
- Deduplicated CycloneDX parsing — SBOM file parsing now shares the same code path as image scanning, gaining distro detection and ecosystem tagging
Architecture
- CLI framework: Kong (struct-based, testable)
- Dependency injection: Uber Fx
- Configuration: Koanf v2 (YAML + env vars + CLI flags)
- Offline cache: SQLite via modernc.org/sqlite (pure Go, zero CGO)
- Intel backend: go-vulners v1.1.3
v1.0.1
vulners-cli v1.0.1
Maintenance release with richer vulnerability data, deduplication, and CI hardening.
What's Changed
Richer vulnerability findings
- API queries now request all useful Bulletin fields (EPSS, AI score, references, affected software, etc.)
Search,GetBulletin,SearchExploits, andGetMultipleBulletinsall return full field data
Deduplicated scan logic
- Extracted
BulletinToFindingconverter — single source of truth for Bulletin → Finding mapping - Unified
scanComponentspipeline shared byscan repo,scan dir, andscan imagecommands - Offline scan results are now deduplicated by VulnID + ComponentRef
enrichFindingreusesBulletinToFindinginstead of duplicating field extraction
Improved error handling
generateUUIDin CycloneDX reporter now propagatescrypto/randerrors instead of silently ignoring them- SARIF reporter returns a proper error on malformed scan output instead of silently producing empty results
CI & dependency updates
- Pinned GitHub Actions to v6 (
actions/checkout,actions/setup-go) - Pinned
golangci-lintto v2.1.6,govulncheckto v1.1.4,gofumptto v0.7.0 - CI now reads Go version from
go.modinstead of using matrix /stable - Updated
go.yaml.in/yaml/v3to v3.0.4 - Go version bumped to 1.25.7
Housekeeping
- Added README badges
v1.0.0
vulners-cli v1.0.0
Go-based CLI vulnerability scanner powered by Vulners.
Features
Intel commands
vulners search— search the Vulners database (full-text and exploits-only)vulners cve— CVE lookup with optional references and change historyvulners cpe— search by CPE product/vendorvulners stix— export STIX bundles by bulletin ID or CVE
Audit commands
vulners audit linux— audit Linux distribution packagesvulners audit windows— audit Windows KB updatesvulners audit host— host package audit (v4 API)vulners audit winaudit— full Windows audit (KBs + software)
Scan commands
vulners scan repo— scan Go repositories (reachability-aware via govulncheck)vulners scan dir— scan directories for package manifests (Go, npm, pip)vulners scan sbom— scan CycloneDX and SPDX SBOMsvulners scan image— scan container images (requires syft)
Offline mode
vulners offline sync— sync vulnerability data for air-gapped use (delta + full)vulners offline status— show cache metadatavulners offline purge— clear local database--offlineflag for scan, search, CVE, and CPE commands
Output formats
- JSON (default), table, SARIF, HTML, CycloneDX VEX
Policy engine
--fail-onseverity threshold (low / medium / high / critical)--ignoreCVE suppression (repeatable)--vexOpenVEX document ingestion
Architecture
- CLI framework: Kong (struct-based, testable)
- Dependency injection: Uber Fx
- Configuration: Koanf v2 (YAML + env vars + CLI flags)
- Offline cache: SQLite via modernc.org/sqlite (pure Go, zero CGO)
- Intel backend: go-vulners v1.1.3