Skip to main content

Vulnerability Analysis of Dependencies (SCA)

🌟 Objective​

Ensure that all external dependencies (direct and transitive) are analysed automatically and on a recurring basis for known vulnerabilities, with traceability between:

  • Component identified in the SBOM
  • Associated vulnerability (CVE)
  • Affected artefact and version
  • Fix, exception or mitigation task

The SCA process is essential to reduce the risk associated with reusing third-party libraries and packages.


🚀 How the SCA process works​

  1. The generated SBOM is used as input for the scanner.
  2. Each component is compared against vulnerability databases (NVD, GitHub Advisories, OSV, etc.).
  3. For each CVE found, the following are identified:
    • Severity (CVSS base score or equivalent)
    • Exploitation vector (local, remote, etc.)
    • Patch / fix status
  4. A processable report is generated (e.g. JSON, HTML, SARIF) and, where applicable, the pipeline is blocked.

🤖 Recommended open source tools​

ToolLanguages / SupportRemarks
SyftMulti-stack (Node, Java, etc.)Generates the SBOM + integrates with Grype
GrypeMulti-stackVulnerability scanner with OSV/NVD
TrivyApps, containers, IaCSCA + SAST + secret scanning
OWASP DCJava/Maven/GradleOWASP Dependency-Check, well supported
OSV-ScannerNode, Go, Rust, PythonUses the OSV.dev database, integrates with GitHub

💡 Syft + Grype is a particularly effective combination for modern pipelines.


💳 Commercial tools with broader coverage​

ToolHighlights relevant to SbD-ToE
SnykSCA, IaC scanning, CI/CD integration, policy enforcement
GitHub Advanced SecurityCodeQL + SCA + Secret scanning integrated into the repository
Jfrog XrayRepositories, SCA, container scanning, centralised SBOM
WhiteSource (Mend)Licences, risks, policies, centralised alerts
Checkmarx OneSAST, SCA, IaC, API Security with integration per language and pipeline

These tools may be justified in regulated environments or where there are large volumes of projects.


🌐 Integration into the lifecycle​

MomentExpected actionResult
📁 BuildSCA scanner run with the SBOM as inputReport + build status
📑 Pull RequestAlerts visible and findings triagedConditional approval or blocking
✅ ReleaseVerification of pending findingsGo/no-go
🚨 Vuln. disclosedNotification, triage and associated fixIssue/ticket with traceability

⚠️ Prioritising findings​

Findings must be triaged on the basis of:

  • Severity: CVSS > 7.0 = Critical
  • Exposure: Is the application public? Is the affected function reachable?
  • Impact: Are sensitive data or critical actions involved?
  • Alternative mitigation: Is there a documented compensating control?
  • Fix available?: Does a fixed version exist?

Findings with no plausible exploitation must not be ignored, but classified as "accepted" on the basis of justified risk.


🔗 Link to the backlog and traceability​

ElementRecommended form
Finding (e.g. CVE-2023-1234)Create an issue with a reference to the SBOM/component
Status"Pending", "Fixed", "Accepted w/ justification"
Tagssca, vuln, sbom, seguranca, cve
Evidence of the fixPR, commit, release, updated artefact

💡 A dashboard per project is suggested, with the status of active findings + a link to the associated task.


📎 Cross-references​

DocumentLink with SCA
01-inventario-sbom.mdSource of the components to analyse
04-integracao-ci-cd.mdAutomated execution in the pipeline
08-rastreabilidade-vulnerabilidades.mdMapping between finding, action and release

🔎 SCA analysis must be documented, automated and prioritised, integrating with backlog tools, code repositories and release artefacts.