Software Vulnerability Scanner: How to Find Hidden Security Risks in Your Dependencies

84% of commercial codebases contain at least one open source vulnerability. Most of those vulnerabilities are in components developers did not consciously choose. A software vulnerability scanner is the only scalable way to find them before attackers do.

The Scale of the Problem

Modern software is not written — it is assembled. The average application incorporates 147 open source components, and each of those components has its own dependencies. A single import statement in your package.json or pom.xml can introduce dozens of transitive packages without any developer making a conscious security decision about them.

According to Synopsys/Black Duck research, 84% of commercial codebases contain at least one known open source vulnerability. 48% contain high or critical severity vulnerabilities. And on average, the vulnerable components in those codebases are over four years old — meaning patches have been available for years and simply were not applied, often because teams did not know the vulnerable component was there.

This is the problem a software vulnerability scanner solves.

How Software Vulnerability Scanners Work

A software vulnerability scanner works by analyzing your codebase, build artifacts, or container images to produce a component inventory, then cross-referencing each component against one or more vulnerability databases.

The core steps are:

  1. Component discovery — The scanner parses your package manifests (package.json, pom.xml, requirements.txt, go.mod, etc.), analyzes binary files, or scans container images to identify every dependency and its version.
  2. Normalization — Component names and versions are mapped to standard identifiers such as CPE (Common Platform Enumeration) or PURL (Package URL) to enable reliable matching against vulnerability databases.
  3. Database lookup — Each component is cross-referenced against vulnerability databases to find known CVEs (Common Vulnerabilities and Exposures) that affect that specific version.
  4. Severity scoring — Matches are scored using CVSS (Common Vulnerability Scoring System) to help prioritize remediation.
  5. Reporting and alerting — Results are surfaced in dashboards, IDE plugins, or CI/CD pipeline gates, with remediation guidance (usually: upgrade to version X).

Vulnerability Databases: Where the Intelligence Comes From

The quality of a vulnerability scanner depends heavily on the databases it uses and how fresh that data is. The major sources are:

NVD — National Vulnerability Database

Maintained by NIST, the NVD is the largest public repository of CVEs, with over 250,000 entries. It is authoritative and freely accessible, but it has a well-known lag problem: new vulnerabilities are often disclosed publicly (in GitHub advisories, vendor bulletins, or security research) days or weeks before NVD publishes the corresponding CVE record. In zero-day situations, this gap matters.

OSV — Open Source Vulnerabilities

The OSV database, maintained by Google, aggregates vulnerability data from multiple ecosystems (PyPI, npm, Maven, Go, Rust, etc.) with a focus on open source packages. It is more timely than NVD for ecosystem-specific vulnerabilities and is the backend used by tools like OSV-Scanner and Grype.

GitHub Advisory Database (GHSA)

GitHub's advisory database is one of the fastest-updated sources for package-level vulnerabilities because maintainers frequently disclose vulnerabilities directly through GitHub's Security Advisory workflow. Snyk, Dependabot, and many other tools source from GHSA.

Proprietary Databases

Commercial SCA vendors like Black Duck maintain proprietary vulnerability databases that go beyond public CVEs. Black Duck's Knowledge Base covers 132,000+ unique vulnerabilities across 3.9 million open source projects, and they claim to identify security advisories up to three weeks before NVD. This early warning capability is one of the key differentiators of commercial scanners over free tools.

// The Timeliness Problem

When Log4Shell (CVE-2021-44228) was published, NVD did not list it for 8 days after active exploitation began. Tools relying solely on NVD left users exposed during that window. Commercial scanners with proprietary intelligence sources flagged it within hours.

Types of Software Vulnerability Scanners

SCA (Software Composition Analysis) Scanners

SCA scanners focus specifically on third-party and open source components. They analyze dependency manifests and produce SBOMs alongside vulnerability reports. This is the most relevant category for addressing supply chain risk. Examples: Black Duck, Snyk Open Source, FOSSA, Fossity, Mend.

SAST (Static Application Security Testing)

SAST tools analyze your first-party source code for security bugs — SQL injection, XSS, buffer overflows, hardcoded credentials. They do not cover third-party components. Examples: Checkmarx, Semgrep, SonarQube.

Container Image Scanners

Tools like Trivy, Grype, and Clair scan container images for vulnerable OS packages and application dependencies. They combine SCA-style analysis with OS-level vulnerability scanning. Essential for any team deploying via Docker or Kubernetes.

DAST (Dynamic Application Security Testing)

DAST tools test a running application from the outside, simulating attacker behavior. They find runtime vulnerabilities that static tools miss. Examples: OWASP ZAP, Burp Suite.

Integrating Vulnerability Scanning into CI/CD

The most effective vulnerability scanning is not a periodic audit — it is a continuous, automated gate in your development pipeline. The "shift left" principle means catching vulnerabilities as early as possible, when they are cheapest to fix.

# Example: GitHub Actions with Fossity scan
name: Security Scan
on: [push, pull_request]

jobs:
  sbom-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run SCA Scan
        run: fossity scan --fail-on high

How SBOMs Make Vulnerability Scanning Better

A Software Bill of Materials and vulnerability scanning are complementary capabilities. An SBOM is the inventory; the vulnerability scanner is what turns that inventory into actionable security intelligence.

When you have a pre-generated SBOM, vulnerability scanning becomes dramatically faster and more accurate. Instead of re-analyzing your entire codebase every time a new CVE is published, the scanner can simply cross-reference the existing SBOM against the updated vulnerability database in seconds. This is how organizations that had SBOMs were able to identify their Log4j exposure in minutes after Log4Shell was disclosed.

CISA's VEX (Vulnerability Exploitability eXchange) standard extends this further: vendors can attach VEX statements to SBOMs to communicate whether a specific CVE is actually exploitable in their product's configuration, dramatically reducing alert fatigue for downstream consumers.

Key Metrics to Track

// Recommended Tool

Continuous Vulnerability Scanning with Fossity

Fossity combines SBOM generation with continuous vulnerability monitoring — so when a new CVE is published, you immediately know which of your products are affected. Fossity integrates with GitHub, GitLab, Jenkins, and other CI/CD platforms to block vulnerable builds before they reach production. Its proprietary vulnerability intelligence goes beyond NVD, giving you earlier warnings when new threats emerge.

Start Scanning with Fossity →

Choosing the Right Scanner

When evaluating software vulnerability scanners, the key questions are:

// Author: Esteban C.