Join our Newsletter — 33% off our NHI Course

Why do open source dependencies complicate secure software delivery?

Open source dependencies complicate secure delivery because they expand the attack surface, introduce known vulnerabilities, and add licensing and supply chain obligations. Many applications now rely heavily on external code, so teams must track direct and transitive dependencies, verify exploitability, and maintain an accurate software bill of materials. Without that visibility, security work becomes slower and less reliable.

Why This Matters for Security Teams

Open source dependencies are not just a packaging choice. They determine which code paths, transitive libraries, and maintenance obligations become part of the release process. Security teams inherit the risk when a dependency is abandoned, typosquatted, poisoned upstream, or pulled in through a build tool no one is watching. NIST’s Cybersecurity Framework 2.0 treats supply chain governance as an ongoing control function, not a one-time procurement check.

The practical problem is visibility. Without a trustworthy software bill of materials, teams cannot quickly tell what is present, what is reachable, and what is actually exploitable. That gap turns routine patching into an emergency and makes audit responses slow and uncertain. It also creates a false sense of confidence when a product appears current at the top level but still embeds vulnerable transitive components deep in the tree. The Top 10 NHI Issues research shows how often hidden dependencies and unmanaged secrets combine to create real compromise paths. In practice, many security teams encounter dependency risk only after a downstream release has already inherited the flaw.

How It Works in Practice

secure delivery depends on treating dependencies as governed assets throughout the pipeline. That starts with inventory: direct, transitive, and build-time dependencies all need to be captured in an SBOM, then matched against vulnerability and license data before release. A scanner alone is not enough. Teams also need policy that answers whether a finding is reachable, whether compensating controls exist, and whether the package is trusted enough to allow into production.

Good programs combine dependency review with provenance checks, pinning, and repeatable builds. They verify package sources, block unknown maintainers where appropriate, and require signed artifacts when available. They also distinguish between theoretical exposure and exploitable exposure. A library with a published CVE may be irrelevant if the vulnerable code path is never invoked, while a minor utility pulled into a CI job may be enough to expose secrets or alter build output. The Ultimate Guide to NHIs — Lifecycle Processes for Managing NHIs is useful here because the same lifecycle discipline applies to dependency onboarding, rotation, and retirement.

  • Track direct and transitive packages in every build, not just the top-level manifest.
  • Use an SBOM plus policy checks to compare version, reachability, and license obligations.
  • Prefer short update windows and controlled pinning over ad hoc version drift.
  • Block or quarantine packages that introduce suspicious maintainership or provenance gaps.
  • Revalidate dependencies after build tool changes, not only after application code changes.

For example, the PyPI Breach demonstrates how package ecosystem trust can be disrupted without the consuming team changing a line of code. These controls tend to break down when builds are opaque, dependency graphs are incomplete, or CI systems permit unsupervised package installation from public registries.

Common Variations and Edge Cases

Tighter dependency control often increases build friction, requiring organisations to balance release speed against assurance. That tradeoff becomes sharper in polyglot repositories, monorepos, and teams that rely on rapid experimentation, because a single policy can block legitimate updates as easily as risky ones. Current guidance suggests using tiered enforcement rather than blanket denial, especially where maintenance cadence is high.

License obligations are another edge case. A package can be secure enough to ship but still create legal exposure if attribution, redistribution, or copyleft terms are ignored. Likewise, some vulnerabilities matter only in specific deployments: a desktop library embedded in a server build, or a test-only package promoted into production, can produce unexpected risk. The right answer is contextual review, not score-chasing.

There is also no universal standard yet for how aggressively teams should gate low-severity findings in transitive dependencies. Best practice is evolving toward risk-based exception handling, backed by documented ownership and expiry dates. The Ultimate Guide to NHIs — Regulatory and Audit Perspectives reinforces that auditors care less about perfect remediation and more about whether teams can prove control, traceability, and timely response. In the field, dependency risk usually surfaces when a release is already blocked, a registry is already compromised, or a transitive package has already been promoted into production.

Standards & Framework Alignment

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

OWASP Non-Human Identity Top 10 and CSA MAESTRO address the attack and risk surface, while NIST CSF 2.0, NIST AI RMF and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
NIST CSF 2.0 GV.SC Supply chain governance covers dependency inventory and trusted sourcing.
OWASP Non-Human Identity Top 10 NHI-01 Hidden dependencies often carry unmanaged secrets and excessive privileges.
NIST AI RMF GOVERN Risk governance is needed to decide which dependency findings block delivery.
NIST Zero Trust (SP 800-207) PR.AC Zero trust supports contextual trust decisions for packages and build systems.
CSA MAESTRO TRA.3 Agentic supply chains need provenance, trust, and runtime verification controls.

Inventory every non-human identity and secret tied to dependencies, then remove what is unused.