Vulnerability Research7 min read2026-10-23

Google OSV vs. Traditional NVD: Why Commit-Level Vulnerability Audits Matter

A deep dive into why National Vulnerability Database (NVD) matching causes false positives in lockfiles, and how the Open Source Vulnerabilities (OSV) schema resolves commit-level zero-days.

AS
Ankur Sharma
Principal Security Architect • DevAudit Research Team
#CVE#OSV#Supply Chain#NVD#Zero-Day

The Supply Chain Vulnerability Explosion

Modern applications rarely consist of proprietary source code alone. In typical Node.js, Python, or Go microservices, third-party open-source dependencies account for **80% to 90%** of the executed bytecode.

When a zero-day vulnerability is published, speed of detection and precision of remediation make the difference between safety and a security breach. Historically, automated scanners queried the **National Vulnerability Database (NVD)** maintained by NIST. Today, modern DevSecOps platforms leverage the **Open Source Vulnerabilities (OSV)** standard developed by Google and the OpenSSF.


The Architecture of Traditional NVD

The NVD relies on **Common Platform Enumeration (CPE)** strings to identify affected packages:

text
cpe:2.3:a:expressjs:express:4.17.1:*:*:*:*:node.js:*:*

While CPE strings worked well for enterprise operating systems and database servers in the 1990s, they fail significantly in modern package-manager ecosystems (npm, PyPI, Crates.io, Go modules, RubyGems):

  1. **Namespace Collisions**: A package named `express` on npm, PyPI, or Cargo might be mapped to identical CPE prefixes.
  2. **Delayed Ingestion**: NVD human analysts take days or weeks to score Common Vulnerability Scoring System (CVSS) vectors and assign CPE tags. During this window, known vulnerabilities remain invisible to CPE scanners.
  3. **Imprecise Version Ranges**: NVD entries often document broad statements such as `version <= 2.3.0`, ignoring backported security patches in maintenance branches (e.g., `1.8.4-patch2`).

Why Google OSV Represents the Next Evolution

Google OSV was designed explicitly for open-source package repositories. Instead of coarse CPE dictionaries, OSV structures advisories in machine-readable JSON matching exact git commits and package manager semver intervals.

Here is an extract of an actual OSV payload queried by DevAudit:

json
{
  "id": "GHSA-4w7x-47p9-2c7q",
  "summary": "Prototype Pollution in lodash",
  "aliases": ["CVE-2018-3721"],
  "affected": [
    {
      "package": {
        "ecosystem": "npm",
        "name": "lodash",
        "purl": "pkg:npm/lodash"
      },
      "ranges": [
        {
          "type": "SEMVER",
          "events": [
            { "introduced": "0" },
            { "fixed": "4.17.11" }
          ]
        },
        {
          "type": "GIT",
          "repo": "https://github.com/lodash/lodash",
          "events": [
            { "introduced": "0" },
            { "fixed": "d8e069cc3410082e924ad1403862d9d0c27704ea" }
          ]
        }
      ]
    }
  ]
}

#### Key Technical Advantages of OSV: - **Ecosystem Isolation**: An npm advisory for `lodash` never conflicts with a Python package or Rust crate of the same name. - **Dual Verification (Git + SemVer)**: Audits evaluate both semver ranges and exact git commit hashes, supporting projects that pin commits or vendor dependencies via git submodules. - **Sub-Second Bulk Batch Auditing**: OSV provides a single `POST /v1/querybatch` endpoint capable of cross-referencing thousands of transitive dependencies in a single round-trip.


How DevAudit Queries OSV at Scale

When you submit a `package-lock.json`, `requirements.txt`, or `Cargo.lock` to DevAudit, the backend pipeline runs a deterministic three-step audit:

typescript
// Simplified batch payload assembly in DevAudit
const queries = dependencies.map((dep) => ({
  package: {
    name: dep.name,
    ecosystem: mapToOsvEcosystem(dep.ecosystem) // 'npm' | 'PyPI' | 'crates.io' | 'Go'
  },
  version: dep.version
}));

// Single batch POST request to Google OSV
const response = await fetch('https://api.osv.dev/v1/querybatch', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ queries })
});

The response returns every active CVE, GHSA advisory, severity score, and recommended fix version. DevAudit then synthesizes 1-click upgrade remediation scripts tailored directly to your package manager.


Conclusion

Relying solely on CPE-based NVD checks leaves your applications vulnerable to zero-day supply chain attacks. Combining commit-level Git tracking with the OSV schema provides instantaneous, accurate alerts without false positives.

TEST THIS CODE IN LIVE ENVIRONMENT

Run AST & Dependency Analysis On Your Code

Inspect your repository against the Google OSV API, Semgrep SAST engine, and SPDX compliance rules in sub-seconds.

Scan Repository Now