Software Supply Chain Security: Key Risks and Best Defenses

What is software supply chain security?

Software supply chain security practices protect all components used to build and deliver software, including source code, third-party libraries, CI/CD pipelines, and deployment infrastructure. These practices are essential to ensuring that code and systems remain secure and tamper-free before they reach production.

Prioritizing security matters because modern software relies heavily on a web of external dependencies and tools. This complexity creates more entry points for attackers. Breaches like SolarWinds and MOVEit clearly demonstrate how targeting the supply chain can lead to deep, damaging access.

Given the catastrophic potential of these attacks, regulators now demand stricter controls. In the US, for example, Executive Order 14028 and NIST’s Secure Software Development Framework (SSDF) outline requirements for federal suppliers to secure their software supply chains. 

Meeting these mounting security and regulatory demands requires full visibility into your entire software supply chain—and the ability to identify and mitigate risks early. These capabilities are essential for both protection and compliance. 

Software Supply Chain Security [Cheat Sheet]

Learn how to secure the software supply chain end-to-end – from managing third-party dependencies and open-source libraries to protecting build pipelines.

Components of the software supply chain that need strict security

The modern software supply chain involves many interconnected parts. Each plays a critical role in delivering secure applications, but each also introduces distinct risks. 

Below are several key components teams must secure to protect their development pipeline from end to end:

Source code and version control

Source code is the foundation of any application. Developers typically manage it using version control systems such as GitHub or GitLab. If attackers exploit weaknesses—like compromised Personal Access Tokens (PATs), unprotected branches, or missing code review requirements—they can alter application logic, insert backdoors, or leak proprietary data.

To protect code integrity, teams must enforce commit signing, use branch protection rules, require reviews for merges, and tightly restrict PAT scopes and access controls.

Dependencies and third-party libraries

To accelerate development, teams often rely heavily on open-source packages and external libraries. These components deliver powerful functionality, but also carry risk—especially when attackers poison the software supply chain.

A recent example is the Shai-Hulud 2.0 campaign uncovered by Wiz Research. Attackers uploaded malicious packages to public repositories, then waited for unsuspecting developers to include them in builds. These backdoored packages could exfiltrate credentials, implant persistent access, or trigger downstream compromise—highlighting just how dangerous unverified dependencies can be.

To defend against these types of threats, your team should implement automated dependency validation, lockfile enforcement, and continuous monitoring across all package sources.

Pipelines and CI/CD tools

CI/CD pipelines power modern software delivery, automating everything from code integration to deployment. Because they sit at the center of this process, they’re a high-value target—often holding secrets, credentials, and access to production environments.

Tools like Jenkins, Travis CI, and GitHub Actions streamline builds, but they also introduce risk when misconfigured. Common vulnerabilities include unpinned actions that can be hijacked, injection of untrusted scripts, hardcoded or leaked secrets, and insecure storage of artifacts or logs. If attackers exploit these gaps, they can embed malicious code, bypass controls, or pivot into other systems.

To reduce exposure, teams must harden pipelines with least-privilege access, enforce action pinning and checksum validation, scan for exposed secrets, and isolate build environments from production.

Artifact registries and package distribution

Once built, software artifacts are stored and distributed via registries like Docker Hub, npm, or PyPI. These systems make deployment efficient but also become high-value targets. For instance, if attackers poison a package or impersonate a trusted component, compromised software can reach thousands of systems instantly. To ensure only trusted artifacts enter your environments, secure publishing practices are critical. Key controls include signing packages, enforcing access controls, maintaining provenance, scanning for malware, and validation during build and deployment. 

Deployment and update mechanisms

Teams deploy modern applications using containerization and orchestration platforms like Docker and Kubernetes, which accelerate delivery and scalability. But these same mechanisms can become attack vectors if left unsecured. Every update introduces new code, and if attackers compromise an image, registry, or update process, they can inject malicious components directly into production. To block these threats, teams must verify the source of updates, enforce image signing, and scan containers for vulnerabilities and tampering before deployment.

Vendor and third-party services

Teams rely on external vendors, APIs, and cloud services to build and run applications faster. Yet, every third-party integration expands the attack surface. If a provider is breached or misconfigured, attackers can use that access to compromise your systems or data. To manage this risk, organizations must assign clear ownership, regularly assess vendors for security gaps, and enforce contractual requirements for data protection, access controls, and incident reporting.

Catch code risks before you deploy

Learn how Wiz Code scans IaC, containers, and pipelines to stop misconfigurations and vulnerabilities before they hit your cloud.

Pour plus d’informations sur la façon dont Wiz traite vos données personnelles, veuillez consulter notre Politique de confidentialité.

Threats and risks to the software supply chain

The software supply chain presents an attractive attack surface due to its complexity, scale, and web of interconnected components. Both external actors and internal weaknesses can introduce serious risk. Understanding these threats helps you prioritize defenses and reduce your exposure. Below are different types of threats and risks you’ll commonly encounter in a multi-cloud environment.

External threats and risks

External threats target the public-facing or third-party elements of your software development pipeline. These threats include poisoned updates, malicious dependencies, and man-in-the-middle attacks, which exploit gaps in validation or transport security.

External threats and risksDescriptionReal-world examples
Malicious code injections and compromised dependenciesAttackers inject malicious code into third-party libraries or tamper with trusted, reused dependencies. These attacks can include supply chain compromises at the source.During the SolarWinds attack, attackers inserted malware into a routine software update, triggering global breaches of government and enterprise systems.
Man-in-the-middle attacksThese attacks intercept software during distribution and alter it before it reaches users. Risk increases with weak validation or unsigned updates.Operation ShadowHammer attackers compromised ASUS’s Live Update utility to push malicious updates to users via ASUS’s own infrastructure.
Lack of encryption in data transmissionUnencrypted updates allow attackers to intercept and manipulate files in transit. This enables tampering and malware injection.In the Ivanti Connect Secure VPN attacks, attackers exploited known vulnerabilities and unencrypted data transfers to execute remote code without authentication.

Internal threats and risks

Internal threats arise from within the organization or through trusted systems. These threats include insider risks, misconfigurations, and credential misuse. Even one compromised developer account can undermine the entire pipeline.

Internal threats and risksDescriptionReal-world examples
Insider threats or compromised developer accountsStolen credentials or malicious insiders grant attackers access to sensitive systems, enabling them to tamper directly with the build process.In the Codecov breach, attackers exploited a minor modification to a CI script to exfiltrate secrets from compromised builds, gaining access via a compromised Docker image.
Outdated components and flawed software with known vulnerabilitiesUsing outdated or unpatched software exposes your environment to known exploits. These vulnerabilities are often publicly documented and accessible.The Equifax breach, traced to an unpatched Apache Struts vulnerability, resulted in the loss of over 140 million consumer records.
Insecure APIsPoorly secured APIs expose applications to unauthorized access, data leakage, and privilege escalation.WhatsApp’s 2024 “View Once” flaw exposed an API vulnerability that allowed attackers unauthorized access to its disappearing media feature, undermining user privacy controls and highlighting the risk of unsecured endpoints.

Real-life examples of software supply chain attacks

Each of the following cases reveals how gaps in isolation, validation, or configuration can open the door to wide-reaching exploitation.

Hugging Face and researchers find a malicious AI model

In 2024, Wiz Research collaborated with Hugging Face to uncover a critical security risk in its Inference API. Attackers could exploit this flaw to upload a malicious AI model capable of remote code execution (RCE) and cross-tenant access. Because the AI model wasn’t running in an isolated environment, an attacker could access private customer data and sensitive models from other tenants.

Wiz researchers also identified weak tenant isolation in the underlying Kubernetes infrastructure. This flaw enabled privilege escalation and lateral movement across the environment. Additionally, the Spaces service had gaps in its container registry security, which could have enabled attackers to manipulate containers and infrastructure at scale.

  • What failed: Inadequate isolation between tenants and a lack of container validation

  • How it was exploited: Malicious model uploads triggered remote code execution and cross-tenant access

  • What would have helped: Strict tenant boundaries, more robust container scanning, and model validation controls before execution

Following these findings, Hugging Face acted quickly to strengthen tenant isolation, expand its vulnerability scanning, and harden its container environments.

Wiz uncovers #IngressNightmare

Wiz Research uncovered a severe unauthenticated remote code execution vulnerability in the Ingress NGINX Controller for Kubernetes, now known as #IngressNightmare. The issue stemmed from insecure logic in the admission controller webhook, which allowed attackers to bypass authentication and gain access to Kubernetes clusters.

The vulnerability affected approximately 43% of cloud environments and over 6,500 internet-exposed clusters. Attackers could exploit this path to escalate privileges and access secrets across multiple namespaces, which threatened core infrastructure and application layers.

  • What failed: Insecure input validation in the admission controller and unrestricted access to webhook endpoints

  • How it was exploited: Attackers sent crafted requests to trigger RCE without authentication

  • What would have helped: Securing the webhook with network policies, restricting its exposure, and applying strict admission controls

Wiz quickly provided detection capabilities to identify exposed clusters and issue real-time alerts. Affected organizations mitigated the issue by updating NGINX, restricting webhook access, and applying tighter Kubernetes network policies.

The Shai-Hulud 2.0 supply chain attack (in-depth)

The Shai-Hulud 2.0 supply chain attack, uncovered by Wiz Research, is among the most expansive npm-based compromises to date. Threat actors trojanized nearly 700 npm packages, affecting over 25,000 GitHub repositories across hundreds of users. 

These packages exfiltrated secrets from CI/CD pipelines and developer machines during the preinstall phase, enabling wide-scale credential theft and backdoor persistence. The malware leveraged GitHub workflows to remain undetected and facilitate cross-victim data exposure, targeting secrets from AWS, Azure, and GCP environments. 

  • What failed: Compromised maintainer credentials allowed attackers to publish trojanized npm packages with malicious preinstall scripts.

  • How it was exploited: Installing these packages triggered credential theft, secret exfiltration, and GitHub Actions–based persistence.

  • What would have helped: Blocking lifecycle scripts by default, enforcing scoped tokens, and strictly validating packages before installation.

This campaign underscores the growing need for automated dependency validation, hardened build systems, and real-time monitoring to protect software pipelines.

Best practices for mitigating supply chain risks

Protecting your software supply chain requires a layered approach. From code development to deployment, every stage demands controls that reduce exposure and enable fast response. 

Below are 12 essential best practices to proactively strengthen your defenses and build long-term resilience:

1. Create a software bill of materials with security considerations

Visibility is the foundation of software supply chain security. A complete, up-to-date Software Bill of Materials (SBOM) gives you detailed insight into all components in your codebase—including direct and transitive dependencies, open-source packages, and proprietary modules.

To ensure interoperability and compliance, generate your SBOM using standardized formats like SPDX or CycloneDX. These formats are widely supported and enable integration with auditing tools, compliance platforms, and third-party assessments. The SBOM should include metadata for each component, such as version, origin, and license, and must be updated continuously as your code changes.

Platforms like Wiz automate SBOM generation across cloud-native environments using agentless scanning, which reduces manual overhead while maintaining inventory accuracy. 

Why it matters: This ensures your security team stays aligned with evolving standards such as Executive Order 14028 and NIST’s SSDF, while developers stay focused on delivery.

2. Leverage DevOps and DevSecOps

Shift security left by embedding it directly into your development pipeline. This means scanning both your proprietary code and your third-party dependencies—each requires different approaches.

To analyze your code for logic flaws, insecure coding patterns, and misconfigurations, use SAST tools like SonarQube or Checkmarx. For dependencies, use SCA tools to inspect third-party packages and libraries for known vulnerabilities, outdated versions, and licensing risks.

A DevSecOps model integrates both approaches into CI/CD workflows, bringing together security, development, and operations teams. This shared-responsibility mindset fosters earlier issue detection and faster remediation—without slowing down delivery velocity.

Why it matters: Catching issues early limits risk exposure, reduces rework, and prevents vulnerabilities from reaching production, ultimately saving time, reducing costs, and protecting reputation.

3. Complete regular audits

Audits help you catch what automation might miss. Schedule routine assessments of code dependencies, cloud configurations, and infrastructure. Tools like OWASP Dependency-Check and AWS Config help you identify misconfigurations and outdated libraries. Here’s how:

Audit focusToolsKey benefit
DependenciesOWASP Dependency-Check and SnykDetect and prioritize known vulnerabilities.
Cloud configsWiz, AWS Config, and Azure Security CenterSpot risky misconfigurations across your environment.
Network behaviorWiz and ELK StackIdentify anomalies in traffic patterns.

Why it matters: Regular audits expose the blind spots automated tools can overlook and ensure your security posture keeps pace with evolving threats, infrastructure changes, and new compliance mandates.

4. Implement multi-factor authentication and enforce least-privilege access

Access controls matter at every layer. To protect access, enable MFA on all developer tools and cloud services. Also, enforce least-privilege permissions across repositories and CI/CD systems so users have only the exact permissions they need for their roles.

Why it matters: MFA and least-privilege access prevent attackers from using compromised accounts to escalate access.

5. Perform software composition analysis

Software composition analysis (SCA) tools scan third-party libraries for known issues. Integrate them into your pipeline to automatically detect outdated or vulnerable packages. This practice is critical in cloud-native environments, where codebases often rely heavily on open-source components.

Why it matters: SCA proactively protects you from external risks introduced by dependencies.

6. Choose a continuous monitoring solution

Security doesn’t end at deployment. You need continuous monitoring to detect active threats. Use tools like AWS CloudWatch, Azure Sentinel, or Wiz to track workloads, configurations, and activity across your cloud environments in real time. These solutions provide visibility into issues, enabling quick detection and response before they escalate.

Why it matters: You can’t fix what you can’t see. Continuous monitoring ensures you don’t miss a threat.

7. Enforce code signing and tamper detection

Secure your software supply chain by signing every build and artifact with cryptographic keys. Additionally, validate those signatures during deployment and use checksums to detect any unexpected modifications. These safeguards ensure that only trusted, verified code reaches production.

Why it matters: These enforcements prevent unauthorized changes before software deployment, which protects your environment from tampered or malicious code.

8. Secure build infrastructure and CI/CD systems 

Your pipeline is a high-value target. Harden build environments with strict access policies, secret management, and network segmentation. Monitor these systems for anomalies that could indicate compromise.

Why it matters: A compromised CI/CD system gives attackers a direct path to production.

9. Manage vendor risk

Third-party services introduce risks you don’t directly control. Evaluate every vendor’s security posture, incident response readiness, and historical track record. Additionally, regularly review and renew these assessments to maintain compliance and trust.

Why it matters: Your security is only as strong as the weakest link in your supply chain.

10. Create an incident response plan

Supply chain compromises often involve trusted components—making them harder to detect and slower to contain. For this reason, ensure your incident response plan includes specific playbooks for software supply chain threats.

Define procedures for detecting tampered artifacts, compromised registries, malicious dependencies, or build system intrusions. Your plan should outline how to revoke compromised packages, coordinate vendor notifications, update SBOMs, and validate build integrity across environments. Just as important: run simulated supply chain breach scenarios to test your team’s coordination across security, engineering, and third-party contacts.

Why it matters: Unlike traditional incidents, supply chain attacks often propagate silently into downstream systems. A tailored IR plan ensures you act fast to contain the impact and restore trust.

11. Use network segmentation

Isolate environments like development, staging, and production to reduce risk and limit the lateral spread of threats across your network. Implement micro-segmentation and zero trust principles to control access at a granular level.

Why it matters: Containment reduces the blast radius if an attacker or misconfiguration compromises part of your system.

12. Schedule regular backups

Don’t just back up data—back up your software artifacts, configurations, and metadata, too. Use cloud-native solutions, like AWS Backup or Azure Backup, and regularly test recovery procedures to ensure business continuity.

Why it matters: Rapid recovery minimizes downtime and keeps you operational when incidents occur.

How to keep your software supply chain protected

Protecting your software supply chain is no longer optional. Since modern applications rely heavily on open-source components, third-party services, and distributed infrastructure, organizations face compounding risks from both external attackers and internal weaknesses. As a result, forward-thinking teams are prioritizing not just detection and response, but also prevention, governance, and assurance.

Here are some strategies to build a resilient defense:

Leverage established frameworks

Adopting well-defined industry frameworks is the foundation of a strong supply chain security strategy. The following standards help to structure your approach to risk identification, mitigation, and governance:

FrameworkPurpose
ISO/IEC 27001Defines requirements for information security management systems and risk controls.
NIST Cybersecurity FrameworkOffers a flexible, risk-based approach to securing infrastructure and supply chains.
NIST’s SSDFGuides secure coding and lifecycle practices to reduce exploitable software flaws.
Supply-chain Levels for Software Artifacts (SLSA)Introduces graduated levels of software integrity and provenance controls.
Cloud Security Alliance Cloud Controls MatrixMaps security controls to cloud-specific risks, including those that affect supply chains.

Implementing these frameworks improves your risk posture, simplifies compliance, and reinforces trust across customers and stakeholders. Crucially, they pave the way for automated enforcement when paired with tools like Wiz, which helps teams implement policy-driven controls, validate supply chain integrity, and monitor for emerging threats.

Align with rising governance and assurance expectations

Governments and industries are tightening supply chain oversight with new mandates, laws, and executive orders. These mounting expectations from regulators and customers are making software attestation, third-party assurance, and documented SBOMs table stakes, especially for companies operating in regulated or public-sector environments.

Emerging standards, such as the minimum elements for an SBOM (per NTIA and Executive Order 14028), are evolving. This regulatory pressure increasingly motivates insurers and regulators to request documented proof of the following details:

  • Comprehensive SBOM coverage

  • Secure build pipelines and tamper-proof releases

  • Rigorous third-party vendor assessments

  • Hardware origin tracking

Wiz helps teams automatically generate SBOMs, detect gaps, and enforce compliance with standards such as NIST’s SSDF and SLSA without requiring agents or slowing the pipeline.

Prepare for emerging threats

As organizations race to adopt generative AI, attackers are adapting just as fast. Threat actors are already using AI to accelerate supply chain attacks, like scanning public registries for exposed secrets and crafting highly convincing malicious packages. Meanwhile, forward-thinking security programs are taking these steps to stay ahead:

  • Enforcing zero trust for build systems: Verifying every step of the build process—including who triggered it, what code changed, and where artifacts are stored—to provide stronger security.

  • Exploring supply chain insurance: Evaluating coverage options that hinge on evidence of strong security hygiene, such as up-to-date SBOM practices, rigorous vendor assessments, and secure CI/CD processes.

  • Demanding third-party attestation: Requesting documented proof from vendors that they follow secure development practices and can respond quickly to supply chain threats.

Ask suppliers questions based on NIST guidance

When assessing third-party software, ask these questions derived from NIST’s SSDF and software sourcing guidance to ensure vendors meet your security standards:

  • Does the supplier have foreign government affiliations?

  • Can they provide a complete sourcing list for hardware and software components?

  • Do they safeguard sensitive data from unauthorized access or transfer?

  • Is there a clear process for secure maintenance and updates?

  • Can they demonstrate risk mitigation across the product lifecycle?

  • Do they follow recognized, secure development frameworks?

By combining strong frameworks, proactive security controls, and vendor accountability, you can transform your software supply chain into a strategic advantage—not a lurking liability. Wiz accelerates this journey by providing the visibility, automation, and context you need to secure every layer of your software development pipeline.

Secure all components of your software supply chain with Wiz

Wiz’s CNAPP secures your software supply chain from code to cloud by integrating seamlessly into your CI/CD, DevSecOps, and cloud environments. With agentless deployment and deep visibility, our solution helps you reduce risk without slowing development. Here’s how:

Risk areaWiz capability
SBOM integrityAuto-generates and signs SBOMs, detecting changes and drift.
Artifact trustTracks origin and validates build artifacts across the pipeline.
CI/CD visibilityMonitors pipelines for exposed secrets and unauthorized changes.
Dependency riskScores third-party components based on actual exposure, not CVSS.
Runtime linkageConnects vulnerabilities to active workloads for faster triage.
Vendor and service riskSurfaces third-party connections and tracks their security posture.
Real-time alertingSends context-rich alerts and integrates with remediation workflows.

Wiz seamlessly integrates into existing tools and workflows across AWS, Azure, GCP, GitHub, GitLab, Jenkins, and more. We unify teams around a shared, risk-driven view of your cloud and software supply chain and help you stop threats before they reach production.

Ready to learn how Wiz can help you secure every step of your software supply chain? Book a demo today to uncover risks and strengthen your defenses across your multi-cloud environment.

Secure Every Stage of the SDLC

Learn how Wiz is solving security challenges of Developer and DevSecOps team.

Pour plus d’informations sur la façon dont Wiz traite vos données personnelles, veuillez consulter notre Politique de confidentialité.


FAQ

Here are some common questions people ask about software supply chain security: