Azul Statement on the eMudhra Intermediate CA Certificates Compromise

Software Supply Chain Security

Software supply chain security is the practice of protecting every component, dependency, and process involved in building, packaging, and delivering software — from the open-source libraries a developer imports to the pipelines that compile, sign, and ship the final artifact — so that no stage can be tampered with, spoofed, or exploited without detection.

It has become one of the most consequential areas of enterprise cybersecurity because modern applications are assembled, not written from scratch: a typical production system may depend on hundreds or thousands of third-party packages, container base images, and build tools that a development team never directly authored but is nonetheless responsible for securing.

What Is Software Supply Chain Security?

To answer the question directly: software supply chain security is the set of controls, tools, and practices that establish trust and visibility across the entire lifecycle of a software artifact — sourcing, building, testing, packaging, distributing, and running it in production. It extends traditional application security, which focuses mainly on code a team writes itself, to cover everything that code depends on and every system that touches it along the way.

That broader scope matters because attackers have learned it’s often easier to compromise one widely used open-source package, build server, or container registry than to attack a single target directly. A single poisoned dependency can quietly propagate into thousands of downstream applications. Software supply chain security closes that gap: verifying where components came from, confirming they haven’t been altered, and maintaining the ability to detect and respond quickly when something in the chain goes wrong.

Why Software Supply Chain Risk Is Growing

Software supply chain risk refers to the likelihood that a vulnerability, malicious actor, or process failure anywhere upstream of your own code — in an open-source library, a build pipeline, a container base image, or a package registry — ends up compromising the software you ship or run. This risk has grown for a few concrete reasons.

Open-source dependency sprawl is the biggest driver. Most applications pull in transitive dependencies — libraries that a library depends on — that teams never explicitly chose and may not know they’re running. Attackers exploit this by publishing typosquatted or malicious packages, or by compromising maintainer accounts on legitimate ones. Build and CI/CD systems are a second pressure point: because they hold privileged access to source code, credentials, and signing keys, a compromised pipeline can insert malicious code without ever touching a developer’s laptop. Widely cited incidents — the SolarWinds build-system compromise, the Log4Shell vulnerability in the Java logging library Log4j, and the backdoor found in XZ Utils — each illustrate a different point where trust broke down.

The practical effect is that a vulnerability can sit undetected in production for months or years, since it was never in code your own team wrote and may not appear in a scan that only runs once at build time. Managing software supply chain risk means assuming that some of what you run will always be third-party, and building the visibility and controls to catch problems continuously, not just at the moment code is first introduced.

Key Components of a Secure Software Supply Chain

Effective programs are built from several interlocking components, each addressing a different point of potential compromise:

  • Software Bill of Materials (SBOM) — a machine-readable inventory of every component, library, and version in an application, typically in a standard format such as CycloneDX or the Software Package Data Exchange (SPDX), so teams know exactly what they are running.
  • Provenance and attestation — cryptographic evidence of where an artifact came from and how it was built, so a consumer can verify it wasn’t tampered with between the build system and production.
  • Dependency and vulnerability management — continuous tracking of known CVEs across direct and transitive dependencies, prioritized by whether the vulnerable code is actually reachable and exploitable in your application.
  • Build and pipeline hardening — least-privilege access, isolated and reproducible build environments, and signed commits and artifacts to prevent tampering during the build process itself.
  • Runtime visibility — monitoring what is actually loaded and executed in production, since not every library packaged with an application is ever used, and usage context changes real-world risk.

Software Supply Chain Security Best Practices

Turning those components into a working program comes down to a set of software supply chain security best practices that consistently show up across mature security organizations:

  • Generate and maintain an SBOM for every build, and keep it updated as dependencies change rather than treating it as a one-time compliance exercise.
  • Pin dependency versions and verify package integrity (checksums or signatures) rather than pulling the latest tag at build time.
  • Scan continuously, not just at release — new CVEs are disclosed daily against libraries already running in production.
  • Prioritize remediation by exploitability and reachability, not CVSS score alone, so teams fix what actually matters first.
  • Adopt an established framework, such as Supply-chain Levels for Software Artifacts (SLSA), the NIST Secure Software Development Framework (SSDF), or the Open Web Application Security Project (OWASP) Software Supply Chain Security guidance, to benchmark maturity rather than building controls ad hoc.
  • Apply least-privilege access and signed, auditable changes to build and release systems, since these systems are now as sensitive as production itself.
  • Extend monitoring into production, because build-time scanning alone cannot catch vulnerabilities disclosed after deployment.

Supply Chain Security Software and Tools

A growing category of supply chain security software has emerged to operationalize these practices, generally falling into a few functional groups. Software Composition Analysis (SCA) tools identify open-source components and known vulnerabilities in a dependency tree. SBOM generation and management platforms produce and track component inventories across a fleet of applications. Container and image scanners inspect base images and layers for known vulnerabilities and unnecessary attack surface before deployment. Artifact signing and attestation tools, such as those built on the open-source Sigstore project, let teams cryptographically verify a build came from an authorized pipeline and hasn’t been altered since. Policy-as-code and admission control tools then enforce these checks automatically, blocking artifacts that lack a valid SBOM, signature, or clean scan from reaching production.

No single tool covers the whole chain end to end. Most organizations combine several of these categories, along with the process controls above, to get both build-time assurance and ongoing production visibility — because the two are not the same problem. A component that was clean at build time can still become risky later, once a new vulnerability is disclosed against a version already running in the field.

Software Supply Chain Security for Java and the JVM

Java applications are a particularly instructive case for software supply chain security, in part because of how deeply the ecosystem relies on shared open-source components distributed through repositories like Maven Central, and in part because Log4Shell put that dependency risk in front of nearly every enterprise security team at once. Java workloads also tend to run for a long time in production, which means a library that looked safe when an application was built can quietly become the source of risk years later, long after the original build-time scan ran.

That combination — heavy reliance on shared libraries and long-lived production deployments — is why supply chain security for Java increasingly has to extend beyond the build pipeline and into the running JVM itself. Azul provides SBOMs in the CycloneDX format for its Zulu builds of OpenJDK, giving teams a verifiable inventory of what’s in the runtime they deploy. Azul Vulnerability Detection, part of the Azul Intelligence Cloud, complements that by continuously checking production Java applications against a Java-specific vulnerability database, focusing on classes actually loaded and used rather than merely present, which helps reduce the false positives common with dependency scanning alone. Azul has also partnered with RapidFort and Chainguard to help customers move toward hardened, near-zero-CVE Java container images — part of a broader Java runtime security strategy in which supply chain security can’t stop at the build; it has to follow the code into production.

Monsters in Java Estate Background

Find out if your Java estate is already exposed, before agentic AI does.

How Azul Can Help

Software supply chain security starts with the runtime itself. Azul Core is a 100% open-source build of OpenJDK, verified against the Technology Compatibility Kit (TCK) , with a documented patch cadence — quarterly Critical Patch Updates and monthly Critical Security Patch Updates, plus out-of-cycle fixes for zero-day vulnerabilities — so organizations know exactly what’s in their JDK and how quickly it gets patched. Azul Core subscribers are also indemnified against copyleft contamination claims, addressing a supply chain risk that SBOMs alone don’t cover.

Higher up the stack, Azul Vulnerability Detection, part of Azul Intelligence Cloud, closes the gap between what an SBOM says is present and what’s actually exploitable. It continuously maps known CVEs against the Java classes and methods genuinely loaded and executed in production, identifying exploitable vulnerabilities with up to 1,000 times greater accuracy than traditional AppSec/APM tools (Azul, June 2025), helping teams prioritize remediation instead of chasing every dependency listed in a build.