mrkeyoor.com_
Wed 23 Sept 00:36 UTC
Dev Toolsevaluationupdated 27 Aug 2026

osv-scanner review

OSV-Scanner is a command-line vulnerability scanner that matches lockfiles, source trees, installed system packages, and container contents against the public OSV advisory database. It helps developers find known dependency problems and, for a smaller set of package formats, examine possible upgrades.

+30stars / 7d
Verdict

Our OSV-Scanner build passed in 97 seconds and all 35 counted tests passed in 199 seconds after a 474-package install. It is an easy recommendation for multi-ecosystem dependency checks, especially when an open advisory database and offline mode matter. Keep guided remediation away from untrusted repositories, and verify current Go results before standardizing on v2.5.1 because an active regression report names that release.

We ran it

Lab card: what happened when we ran osv-scannerScreenshot of osv-scanner (google.github.io/osv-scanner)
Install✓ · 88s474 packages
Build✓ · 97s
Tests✓ · 199s35 passed · 0 failed of 35 (go test)
Repo792 files~71,723 lines of source · 26.6 MB · 19 CI workflows · Dockerfile

Answers from our run

Does osv-scanner build from source?

Dependencies installed in 88 seconds (474 packages), and the build succeeded in 97 seconds. We cloned commit 3ae687b into a clean Debian container with 3 CPUs and no project-specific setup.

Do osv-scanner's tests pass?

Yes: 35 of 35 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use osv-scanner?

Teams expecting source-code security analysis: OSV-Scanner matches dependencies and reachable vulnerable functions in supported cases, not arbitrary application flaws.

What are the alternatives to osv-scanner?

Trivy, Grype, Dependabot Core. Our OSV-Scanner build passed in 97 seconds and all 35 counted tests passed in 199 seconds after a 474-package install.

Setup4/5Prebuilt binaries offered; source install and build both passed
Docs5/5Supported inputs, network data, offline mode, and fix risks are explicit
Community5/510,924 stars with current pushes and fast issue activity
Maturity4/5Clean lab run, though v2.5.1 has an active Go regression report

Discussed on

  1. hnVulnerability scanner written in Go that uses osv.dev data162 points
  2. hnGoogle releases open-source vulnerability scanning tool28 points

Who it’s for

Teams wanting one scanner across several language package managers.
CI owners who prefer an open advisory format and a prebuilt command-line binary.
Container operators scanning Debian, Ubuntu, or Alpine packages alongside application dependencies.
Security teams that need an offline database option after an initial download.

Who it’s NOT for

Teams expecting source-code security analysis: OSV-Scanner matches dependencies and reachable vulnerable functions in supported cases, not arbitrary application flaws.
Operators who cannot send package names, versions, ecosystems, or file hashes to OSV.dev and deps.dev unless they maintain the offline databases.
Users treating guided remediation as a safe auto-fix: the README warns that it can execute package-manager scripts or follow registries named by untrusted projects.
Ecosystems outside the documented lockfile and artifact matrix: support is broad but explicit, with container language artifacts limited to Go, Java, Node, and Python in the README table.
Go projects needing release v2.5.1 without validation: open issue 3017 reports a regression affecting Go standard-library findings.

Setup reality

Our sandbox install succeeded in 88 seconds and fetched 474 Go packages. The build passed in 97 seconds, and tests passed in 199 seconds with 35 passed and 0 failed of 35. The checkout occupied 26.6 MB with 792 files and about 71,723 source lines.

The normal online scan calls OSV.dev and may call deps.dev or package registries. No account token is documented for those public services. Offline use needs a database download and local update process. Container scanning also needs access to the image being examined.

A prebuilt binary is the recommended installation, while go install compiles from source. Guided fixes currently cover specific npm and Maven files and may run project-controlled package-manager behavior, so scan and remediation should have different trust policies.

OSV-Scanner turns lockfiles into advisory matches

OSV-Scanner reads dependency evidence and asks whether known advisories apply to the named versions. It recognizes source trees, supported lockfiles, Linux packages, and container layers. Underneath, OSV-Scalibr handles inventory and extraction while the OSV database supplies version ranges from public advisory sources. That separation is useful: the scanner is inspectable, the advisory format is machine readable, and teams are not tied to a closed vendor feed.

The tool covers more than a typical package audit command. Its README names C and C++, Dart, Elixir, Go, Java, JavaScript, PHP, Python, R, Ruby, and Rust among supported languages. The detailed matrix lists more than 19 lockfile types across more than 11 ecosystems. Coverage still needs checking for the exact file your build produces. A language name in the headline does not guarantee every package manager or vendor format.

What happened when we ran it

Our sandbox installed 474 Go packages in 88 seconds. The build succeeded in 97 seconds, and the Go test step finished in 199 seconds with 35 passed and 0 failed of 35. The unprivileged container had 3 CPUs and 8 GB of RAM, and we tested commit 3ae687b. No failed command or skipped measured test needs explaining for this run.

The repository was modest beside the other projects in this group: 792 files, about 71,723 lines of source, and a 26.6 MB checkout. Our scan found 19 CI workflow files and a Dockerfile, but no tests directory. Go tests can live beside package code, so the absence of a top-level tests folder is consistent with the 35 passing results rather than evidence that tests do not exist.

The source path is slower than downloading a release binary. The README recommends the prebuilt artifact and offers go install as the alternative. Our combined 384 seconds for install, build, and tests is acceptable for contribution or a pinned CI builder, but users who only need scans should avoid paying that compile cost on every job. Cache the binary or use a verified release artifact.

Online scans disclose dependency metadata

The privacy section is unusually direct. OSV.dev receives package names, versions, ecosystems, and file hashes for vulnerability and vendored-code checks. Deps.dev may resolve graphs, provide container metadata, return license information, and flag deprecated packages. Native resolution can contact Maven Central, npm, or PyPI. The README says source code is not sent, but a dependency inventory can still be sensitive in some organizations.

Offline mode removes those requests after the databases have been downloaded. That shifts responsibility to the operator: database freshness, distribution, storage, and failure handling must become part of the scan job. An old local database can produce a clean report while missing a recent advisory. For disconnected networks, that trade is reasonable, provided the database update timestamp is recorded with every result.

Container support has a defined matrix

Image scanning is layer aware and checks operating-system packages for Alpine, Debian, and Ubuntu. The README's application-artifact table names Go, Java, Node, and Python. That is useful coverage for common service images, though it is narrower than the source-directory language list. An unsupported artifact inside a supported Linux base should not be assumed scanned simply because the command exits successfully.

Call analysis can reduce noise by checking whether a vulnerable function is used in supported projects. That is a prioritization aid, not proof that an advisory is harmless. Dynamic calls, build tags, generated code, and runtime loading can complicate reachability. Keep the original vulnerability match available beside any filtered result so a reviewer can see what the analysis excluded.

Guided fixes deserve a stricter sandbox than scans

The experimental fix command suggests upgrades using dependency depth, severity, strategy, and other criteria. Current documented remediation covers npm package-lock and package.json files plus Maven pom.xml. That is far narrower than the scan matrix, and the README labels the feature experimental. A report can therefore identify a problem in many ecosystems without being able to rewrite it.

More important, Google warns that remediation on an untrusted project may execute package-manager scripts or follow external registries declared by that project. A read-only scan and a fix run have different security boundaries. Run fixes only after reviewing the repository, disable unnecessary credentials, inspect the proposed diff, and execute the project's own tests before merging any dependency change.

v2.5.1 is active, with one Go warning

Release v2.5.1 was published on August 17, 2026. It fixed package namespaces in OSV.dev queries, restored a local database cache environment variable, and repaired a local matching mode. GitHub recorded a push on August 26, with 10,924 stars and 126 combined open issues and pull requests. The queue was active again on August 27.

Open issue 3017 reports a v2.5.0 and v2.5.1 regression involving Go standard-library findings. Another report describes outdated transitive Python resolution and false positives with the default data source. Neither report invalidates the 35 passing repository tests in our sandbox. They do identify cases worth adding to an organization's acceptance corpus before OSV-Scanner becomes a release gate.

Alternatives

ProjectWhat it isPick it when
Trivy gh↗A scanner for containers, filesystems, repositories, IaC, secrets, and dependency vulnerabilities.pick this instead when container and infrastructure scanning need to live beside dependency checks.
Grype gh↗A vulnerability scanner focused on container images and filesystems using generated software inventories.pick this instead when image and SBOM workflows matter more than source lockfile remediation.
Dependabot CoreGitHub's update engine for opening dependency upgrade proposals across package managers.pick this instead when automated update pull requests are the main outcome rather than a local scanner report.

What people are saying

  1. [github-trending] google/osv-scanner

Sources

  1. OSV-Scanner repository and README
  2. OSV-Scanner v2.5.1 release
  3. OSV-Scanner supported lockfiles
  4. OSV-Scanner offline mode
  5. Go standard-library regression report
  6. Python transitive resolution report

More dev tools reviews

crabbox · asdf · discord.js · h4cker · bend · 100-exercises-to-learn-rust · the whole board →