Subscribe to the Non-Human & AI Identity Journal

What do security teams get wrong about Software Composition Analysis?

The common mistake is treating SCA as a one-time scan of source code. In practice, risk changes as code moves through builds, artifacts, and runtime. Teams that ignore pipeline context and deployment state end up with noisy reports that do not tell them which exposure is actually exploitable.

Why This Matters for Security Teams

software composition analysis is often introduced as a dependency hygiene tool, but that framing is too narrow for modern delivery pipelines. The real issue is exposure management across source, build, artifact, and runtime layers. If teams only scan source repositories, they miss transitive dependencies, patched artifacts, and packages that are present in production but absent from the commit history. That creates a false sense of coverage and makes remediation decisions harder to defend.

This matters because SCA findings are only useful when they are tied to a deployment context, a reachable code path, and a credible exploit path. NIST control guidance on secure development and supply chain risk management, including the NIST SP 800-53 Rev 5 Security and Privacy Controls, supports that broader view: inventory, change control, and continuous monitoring all matter. Teams that ignore those connections often prioritise the wrong findings and understate the ones that can actually be abused.

In practice, many security teams discover their SCA gaps only after a release is already live and an exploitable dependency has become part of the production attack surface.

How It Works in Practice

Effective SCA is a lifecycle capability, not a point-in-time report. It starts by identifying direct and transitive dependencies, then correlating those components with build outputs, container images, and deployed services. The question is not simply whether a vulnerable library exists, but whether the vulnerable function is shipped, reachable, and protected by compensating controls. That is why context from CI/CD, artifact registries, and runtime inventory is essential.

Practitioners usually need to combine SCA with software bill of materials practices and change-aware monitoring. The OWASP Software Composition Analysis project is useful here because it reinforces that dependency visibility is only one part of the problem. A strong process typically includes:

  • Scanning source, lock files, images, and deployed artefacts, not just repositories.
  • Mapping findings to the exact package version and delivery stage where it appears.
  • Filtering issues by exploitability, reachability, and whether the vulnerable code path is invoked.
  • Tracking exceptions so compensating controls and remediation owners are explicit.

Teams should also distinguish between build-time and runtime risk. A package removed from source may still persist in an immutable image, while a patched source tree may not matter if an older artifact is still deployed. That is why operational inventory and deployment reconciliation are as important as the scanner itself. Current guidance suggests integrating SCA findings with vulnerability management and release governance rather than treating them as a standalone developer report.

These controls tend to break down when organizations have fragmented build pipelines and no reliable artifact inventory, because the scanner cannot tell what is actually running.

Common Variations and Edge Cases

Tighter dependency control often increases build friction, requiring organisations to balance release velocity against remediation accuracy. There is also no universal standard for how much contextual filtering SCA should apply, so best practice is evolving. Some teams suppress low-confidence findings aggressively, while others preserve every alert for auditability. The right balance depends on the maturity of the pipeline and the quality of the asset inventory.

Edge cases matter. Monorepos can produce duplicate signals across many services. Vendor-managed packages can be difficult to patch quickly, especially where contractual constraints limit upgrade windows. Containerised environments add another twist: a vulnerability may exist in a layered image even when the application repository looks clean. In AI-enabled delivery pipelines, the same discipline should extend to model and agent dependencies, because toolchains, plugins, and orchestration services can introduce hidden exposure paths. Where software supply chain trust is involved, SCA should be paired with provenance checks, not used as a substitute for them.

For teams operating under security assurance or regulatory pressure, SCA should sit alongside continuous monitoring, secure configuration management, and exception handling. NIST control families, including the same NIST SP 800-53 Rev 5 Security and Privacy Controls, are most useful when they drive process ownership rather than checkbox reporting. The practical goal is not a perfect dependency list. It is a defensible answer to which vulnerabilities matter, where they run, and who is accountable for fixing them.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

MITRE ATT&CK address the attack surface, NIST CSF 2.0 and NIST AI RMF set the technical controls, and PCI DSS v4.0 define the regulatory obligations.

Framework Control / Reference Relevance
NIST CSF 2.0 ID.RA-1 SCA needs risk identification tied to real software exposure, not just scan output.
MITRE ATT&CK T1195 Supply chain compromise maps well to dependency risk and poisoned packages.
PCI DSS v4.0 6.3.2 Payment environments need secure coding and vulnerability management across dependencies.
NIST AI RMF When SCA touches AI pipelines, model and tool dependencies also need lifecycle risk management.

Apply AI risk management to AI toolchains, plugins, and package dependencies that can alter system behaviour.