By NHI Mgmt Group Editorial TeamDomain: Cyber SecuritySource: ExaforcePublished January 15, 2026

TL;DR: NPM provenance is designed to cryptographically link a published package to a specific source commit and build pipeline, but adoption is still limited, with only 26 of 205 highly downloaded jsDelivr packages using it in the article’s sample, according to Exaforce. Without registry and client-side enforcement, package trust remains a supply chain problem, not a solved control.


At a glance

What this is: This analysis shows that NPM provenance exists as a package integrity control, but weak enforcement and low adoption leave JavaScript supply chains exposed.

Why it matters: It matters to IAM and NHI practitioners because source control accounts, CI/CD pipelines, and publishing identities can become the trust anchor for software distribution, and if those identities are compromised, signed-looking provenance can still be abused.

By the numbers:

👉 Read Exaforce's analysis of NPM provenance gaps in JavaScript libraries


Context

NPM provenance is a package authenticity control, but it does not remove the underlying governance problem: if the build and publishing identities are weak, the attestation can still be generated for malicious code. In JavaScript supply chains, the real security boundary sits in the source repository, CI/CD pipeline, and maintainer account, not only in the registry.

For identity teams, this is a familiar pattern. The control looks strong at the artifact layer, yet its assurance depends on human identities, service accounts, and NHI-like automation inside GitHub Actions or GitLab runners. That makes provenance part of identity governance as much as supply chain security.


Key questions

Q: What breaks when package provenance is not enforced?

A: Without enforced provenance, package consumers cannot reliably tell whether a dependency came from the expected source or from a compromised build path. That leaves maintainers, CI pipelines, and registry policy as trust assumptions instead of controls. The result is blind acceptance of package origin, especially in environments that auto-update dependencies or pull JavaScript from CDNs.

Q: Why do CI/CD identities matter in package supply chain security?

A: CI/CD identities often hold the permissions needed to build, sign, and publish software artifacts. If those identities are compromised, an attacker can generate legitimate-looking output and provenance for malicious code. That means build systems must be governed like privileged identities, with tight access scope, monitoring, and secret hygiene.

Q: How do security teams know if provenance controls are actually working?

A: Look for two signals: packages are rejected when provenance is absent or mismatched, and release workflows only succeed from approved source commits and runners. If teams can publish or install high-risk dependencies without verification, provenance exists only as metadata and not as an enforceable control.

Q: What is the difference between provenance and Subresource Integrity?

A: Provenance verifies where a package was built and from which source, while Subresource Integrity verifies that the file a browser loads has not changed since it was hashed. They address different trust points in the supply chain. Organisations that use both gain stronger protection across package publishing and script delivery.


Technical breakdown

How NPM provenance binds source code to published packages

NPM provenance creates a cryptographic attestation linking a published package to a repository commit and a specific build process, usually via GitHub Actions or GitLab runners. The value is not just traceability. It gives consumers a way to verify that the artifact they installed was built from declared source under a defined pipeline. That said, provenance is only as trustworthy as the build identity and automation that created it. If the publishing account, runner, or CI secret is compromised, the attacker can still produce a legitimate-looking attestation for malicious code.

Practical implication: treat provenance as a verification layer, not a substitute for securing build identities and pipeline credentials.

Why registry-only controls leave a policy gap

A registry can accept packages with or without provenance unless it enforces policy at publish time. That means organisations cannot require attestation for specific package names, packages in high-impact namespaces, or major version changes. In practice, the absence of server-side enforcement turns provenance into an optional signal rather than a governance control. This is a familiar IAM failure mode: a capability exists, but the policy boundary is missing, so adoption depends on manual discipline instead of control design.

Practical implication: define publish-time policy requirements for critical packages and high-risk dependency paths.

Why client-side verification matters for dependency consumption

Even when provenance exists, package consumers still need a way to enforce verification during installation. Without client-side checks, teams can import dependencies that look authentic but have no attestation, or miss a mismatch between expected and actual build origin. The same applies to CDN-delivered JavaScript, where Subresource Integrity adds a hash-based control for externally loaded files. Together, these controls reduce dependency blind trust, but only if organisations actually require them in build and deployment workflows.

Practical implication: enforce verification in CI and package installation workflows, not only during periodic review.


Threat narrative

Attacker objective: The attacker wants trusted package distribution to become a delivery channel for malware, credential theft, or downstream compromise.

  1. Entry occurs when an attacker compromises a maintainer account, source control identity, or CI/CD environment used to publish JavaScript packages.
  2. Escalation follows when the attacker publishes a malicious package version or malicious build output with an apparently valid provenance attestation.
  3. Impact occurs when downstream applications automatically consume the package through unpinned updates or CDN delivery and execute the malicious code.

NHI Mgmt Group analysis

Provenance is only as strong as the identity that signs the build. The article correctly frames provenance as a source-to-artifact integrity control, but its assurance depends on the security of maintainer accounts, CI runners, and pipeline secrets. In NHI terms, the build system is an identity plane, not just an automation layer. If those credentials are exposed, provenance can legitimise bad code rather than stop it. Practitioners should therefore govern publishing identities with the same care as privileged human access.

Missing enforcement turns a useful signal into optional hygiene. When provenance is not mandatory at the registry or client, adoption becomes inconsistent and the control fails to scale across the ecosystem. That is a governance gap, not a tooling gap. The article’s 12.6% adoption figure shows how quickly optional controls become marginal in practice. Teams should assume that unauthorised or unverified packages will continue to circulate unless policy is enforced at publish and install time.

Package trust gap: the real risk is blind acceptance of build origin. The core problem is not that provenance does not exist, but that many organisations still trust package metadata and dependency flow without enforcing origin checks. This is the same failure mode seen across NHI governance when secrets, tokens, and automation identities are used without lifecycle controls. For security programmes, the lesson is to make origin verification an access decision, not an after-the-fact review.

JavaScript supply chain security is converging with identity governance. Repository access, build permissions, release workflows, and signing identities now decide whether a package can be trusted. That brings NHI governance into software delivery, because the pipeline itself becomes a high-value identity. Organisations should map package publication rights, runner permissions, and secret exposure paths as part of their broader privileged access model.

Subresource Integrity should be treated as a distribution control, not a browser feature. The article’s CDN discussion matters because many teams still load JavaScript from remote sources without a verifiable integrity boundary. SRI reduces the chance that a modified file executes silently, but it only works when teams avoid mutable references such as latest tags and enforce exact hashes. Practitioners should view this as part of application trust governance, not frontend convenience.

What this signals

Package provenance is becoming part of identity governance. Release rights, CI runners, and maintainer accounts now sit on the same trust path as other privileged identities. Programmes that already manage secrets and access reviews should extend that governance to package publishing, because software distribution depends on the same identity controls.

Build provenance only helps when install-time policy exists. The practical gap is not attestation creation but enforcement during dependency consumption. Security teams should watch for environments that verify artifacts during audits but still allow unsigned or unverified packages into production pipelines.

The next maturity step is to combine repository access controls, signed builds, and dependency verification into one policy chain. That reduces the chance that a compromise in source control becomes a trusted release event.


For practitioners

  • Require provenance for critical packages Set publish-time policy for packages that affect authentication, deployment, or customer-facing code paths. Where the registry cannot enforce this natively, add CI checks that block release promotion unless the package has verified provenance.
  • Harden maintainer and pipeline identities Treat GitHub, GitLab, and CI runner credentials as privileged identities. Use phishing-resistant authentication, isolate release permissions, and rotate secrets that can publish packages or sign build outputs.
  • Verify package origin at install time Add dependency checks in CI that fail builds when provenance is missing or does not match the expected repository and commit. This is especially important for transitive dependencies and packages pulled from public registries.
  • Use Subresource Integrity for CDN-delivered code Replace mutable JavaScript references with version-pinned assets and integrity hashes. Block any external script that does not match the expected hash, and remove latest-style references from production delivery paths.
  • Review package release rights as privileged access Inventory who and what can publish to npm, update GitHub workflows, and approve release automation. Limit those rights to a minimal set of trusted identities and monitor for unexpected changes in build provenance.

Key takeaways

  • NPM provenance is a useful origin control, but it cannot compensate for weak build identities or compromised publishing workflows.
  • The adoption gap is material, with only 26 of 205 highly downloaded packages in the article’s sample using provenance.
  • Teams that care about software trust should enforce provenance, harden CI/CD identities, and add install-time verification.

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 MITRE ATT&CK address the attack and risk surface, while NIST CSF 2.0, NIST SP 800-53 Rev 5 and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP Non-Human Identity Top 10NHI-03The article centres on exposed publishing and build identities, a classic NHI governance problem.
MITRE ATT&CKTA0006 , Credential Access; TA0003 , Persistence; TA0008 , Lateral MovementCompromised maintainer and pipeline credentials enable package distribution abuse and downstream spread.
NIST CSF 2.0PR.AC-4The issue is weak access governance around source, build, and release identities.
NIST SP 800-53 Rev 5IA-5Authenticator management is directly relevant to maintainer accounts and CI/CD credentials.
NIST Zero Trust (SP 800-207)Zero Trust principles fit dependency trust and verification at build and install time.

Map package publishing abuse to credential access, persistence, and lateral movement across release infrastructure.


Key terms

  • NPM Provenance: NPM provenance is a cryptographic attestation that links a published package to a known source commit and build process. It helps consumers verify origin, but it only works as a security control when the repository, build system, and publishing identity are themselves trustworthy.
  • Subresource Integrity: Subresource Integrity is a browser mechanism that checks whether an externally loaded file matches an expected cryptographic hash. It reduces the risk of silently executing modified JavaScript from a CDN, especially when teams pin versions and avoid mutable tags.
  • Build identity: The set of credentials, tokens, keys, and permissions used by CI/CD systems, runners, and developer tooling. Build identity is often overlooked, yet it can expose secrets, alter repositories, and propagate compromise into downstream software if not tightly scoped and monitored.
  • Package Attestation: Package attestation is verifiable evidence describing how, where, and from what source a software package was built. It does not guarantee the package is safe, but it gives downstream systems a basis for policy decisions about trust and release acceptance.

What's in the full article

Exaforce's full post covers the operational detail this post intentionally leaves for the source:

  • Workflow examples for enabling NPM provenance in GitHub Actions and package.json release pipelines
  • Client-side package verification script details for checking individual package attestations
  • Subresource Integrity implementation guidance for JavaScript loaded from CDNs
  • Registry and platform policy ideas for mandatory provenance on high-impact packages

👉 The full Exaforce post covers the lottie-player case, provenance checks, and CDN integrity controls

Deepen your knowledge

The NHI Foundation Level course, the industry's only accredited NHI security programme, covers NHI governance, secrets management, workload identity, and the identity controls that underpin modern automation. It is designed for practitioners who need to connect identity governance to operational security decisions across build, release, and production environments.
NHIMG Editorial Note
Published by the NHIMG editorial team on August 2, 2026.
NHI Mgmt Group — the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org