2. June | Security

Software Supply Chain Security: Why 70–90% of Your Code Is an Underrated Risk

70–90% of modern software consists of third-party code. Without transparency, centralized control, and secure processes, dependencies, build pipelines, and artifacts become gateways for attacks, regulatory risks, and security incidents that are difficult to control globally.

post image eng software supply 1 - FULLSTACKS

Modern software is no longer created in isolation. The majority of every application—estimates suggest 70 to 90 percent—consists of third-party code: open-source libraries, third-party dependencies, automated build pipelines, and external services. This makes development teams faster, more flexible, and more competitive. But it also makes them vulnerable—in a way that many still underestimate.

Log4Shell showed it in 2021. The NPM hacks surrounding s1ngularity and shai hulud confirmed it. SolarWinds demonstrated it at the state level. The pattern is always the same: attackers do not look for the hardest target. They look for the most widespread. And those are precisely the libraries and tools that engineering teams blindly trust every day.

This article explains what software supply chain security really means, which mistakes repeatedly occur in practice, and how you can—step by step—regain control over your supply chain. Featuring practical examples from real projects, without a tool pitch.

What Is Software Supply Chain Security?

Software supply chain security deals with securing all processes, tools, artifacts, and components that turn source code into a functional application—from the first line of code to operation in production.

That sounds abstract. In concrete terms, it means: everything that plays a role between the moment a developer writes code and the moment that code runs for the user belongs to the software supply chain—and is therefore a potential attack vector.

What Belongs to the Software Supply Chain?

The software supply chain includes significantly more than most teams would name offhand:

  • Source code management systems (e.g., GitHub, GitLab)

  • Build systems and pipelines (CI/CD infrastructure)

  • Dependencies and libraries (NPM packages, Maven artifacts, PyPI modules)

  • Compiler toolchains and build tools

  • Container images and base images

  • External services integrated into the build or deployment process

Each of these points is a possible entry point. Not because the technology is fundamentally insecure—but because every external element brings a risk that does not lie within your own code and is therefore often not within your own field of vision.

The Difference Between Supply Chain Security and Application Security

A common misunderstanding in client meetings: supply chain security and application security are equated or confused.

Application security deals with the code itself—architecture, logic, and vulnerabilities in your own implementation. Software supply chain security starts one level earlier and broader: it does not ask whether your own code is secure, but whether the entire environment in which this code is created, distributed, and operated is integral.

Simply put: AppSec looks at what you write yourself. Supply chain security looks at everything you buy, integrate, or must rely on.

The Biggest Misconception: “We Use Standard Libraries”

If there is one conviction that persists in conversations with engineering teams, it is this: well-known libraries are secure libraries.

The logic behind it sounds intuitive. If millions of projects use the same library, it must be intensively tested, quickly patched, and monitored by the community. In theory, this is true. In practice, it is diametrically false.

Log4Shell, S1ngularity & Co.: What These Incidents Have in Common

At the time Log4Shell was discovered, Log4J was built into almost every Java application. This is exactly what made the incident so devastating. The vulnerability was trivially exploitable, and the blast radius was global. Anyone using Log4J—which was almost everyone—was exposed.

The same applies to the NPM supply chain attacks surrounding s1ngularity and shai hulud: packages with millions of downloads per day, compromised by attackers who knew exactly that popularity is no guarantee of security. On the contrary—it is an incentive.

The pattern is consistent: the more widespread an artifact, the more attractive it is as a target. A successful attack on a single, widely used component allows thousands of downstream projects to be compromised simultaneously.

Why Teams Accept the Risk Anyway

It would be unfair to claim that teams ignore the risk because they are unaware of it. Awareness exists in most organizations. The real problem lies elsewhere: in the trade-off between speed and security.

New libraries bring features. They enable state-of-the-art implementations with minimal effort. Those who use them deliver faster. Those who wait for hardened, scanned artifacts lose time.

This trade-off is real—and it is made daily in teams, usually implicitly, without a formal process.

The result: Dependency security is not neglected out of ignorance, but because the short-term benefit is more visible than the long-term risk.

The Most Common Vulnerabilities in Practice

In consulting practice, the same patterns appear repeatedly across industries and company sizes. They rarely concern the technical competence of the teams—but rather processes, tooling, and organizational structures.

Proliferation of Dependency Sources

The most frequently observed problem: dependencies are pulled from a wide variety of sources. Team A uses an internal repository, Team B gets packages directly from the public NPM registry, and Team C has set up its own mirror. No central overview, no uniform policy, no single source of truth.

This scenario is not only difficult to monitor—it is actively dangerous. Without centralized control over the origin of artifacts, no one can guarantee what is actually flowing into the build process.

Backdoors That No One Notices

Artifacts are downloaded from the internet, not verified, not scanned—and usually just work. That is exactly the problem. What is being compiled, what is inside the package, whether a component was manipulated between publication and download—all of this goes unnoticed in an unregulated process.

Backdoors, ransomware components, mechanisms for data exfiltration: they can be hidden in dependencies that have been used in production for months without anyone noticing. Not because the teams are inattentive—but because no process exists to make it visible.

The Sequencing Problem in Implementation

Another structural problem: when organizations begin to address supply chain security, measures often overlap haphazardly. The first team implements CI/CD gates, the second introduces dependency scans—while the third team does not even have a central repository yet.

Software supply chain security measures only work company-wide. A single team that secures its process in an exemplary manner remains exposed as long as other teams in the same organization use unsecured sources. The vulnerability moves—it does not disappear.

Step by Step: How to Build a Secure Software Supply Chain

The most common mistake when building a secure supply chain is the big-bang approach: everything at once, immediately, across the entire company. This fails not due to a lack of will, but due to a lack of foundation.

The right approach is iterative—and it begins not with tooling, but with transparency.

1. Inventory—Do You Know What You Are Really Using?

Before you can secure anything, you must know what exists in the first place. This sounds trivial. In practice, it is the most difficult step for many organizations.

Inventory means: Which dependencies are being used? In which versions? By which teams? From which sources? Reliable answers must exist for these questions—not as an Excel list updated once a quarter, but as a living, machine-readable inventory.
Only those who have this overview can begin to assess risks, set priorities, and take targeted action.

2. Centralization—A Controlled Source for All Teams

The next logical step is the introduction of a central artifact repository. All teams, all applications, and all build processes obtain their dependencies from a single, controlled source.

This central point becomes the pivot of the entire supply chain security strategy. It enables policy enforcement (which packages are allowed, which are not?), systematic scanning, maturity level models for artifacts, and a clear audit trail.

As long as dependencies are pulled from the open internet, there is no lever for control. A central repository creates this lever.

3. Establish Security Gates in CI/CD

Based on a central repository and a complete inventory, CI/CD gates can be used effectively. Automated scans, policy checks, and blocking pull requests for critical vulnerabilities are powerful tools.

However, they are useless without the foundation from steps 1 and 2. CI/CD security gates based on incomplete or decentralized data provide a false sense of security. The right approach: first introduce them informatively (create visibility without blocking processes), then gradually switch to enforced once the foundation is stable.

The Ideal State: Reproducible, Attested Software

What is the goal? Where does this path lead if followed consistently?

The ideal state can be summarized in two terms: reproducibility and attestation.

What Does Reproducibility Mean in Practice?

  • A reproducible artifact is one that can be rebuilt bit-compatibly at any later time—with the same components, the same versions, and under the same conditions. This sounds like a technical requirement, but it is primarily a transparency requirement.

    Anyone who builds reproducible software knows exactly which components are in every artifact, where they come from, when they were scanned, and whether they are integral. Not as a snapshot—but demonstrably, over the entire lifecycle of the software.

    Attestation means: this proof is digitally signed, machine-readable, and auditable. Third parties can verify what is inside without having to rely on trust in the manufacturer.

Why This Is Becoming Regulatorily Relevant (NIS2, EU CRA)

  • Reproducibility and attestation are not just best practices—they are increasingly becoming regulatory requirements. NIS2 and the EU Cyber Resilience Act set explicit requirements for the traceability and integrity of software components.

    The good news: anyone who has built the technical competence to deliver software in a reproducible and attested manner has already implicitly met all regulatory requirements. The effort is made once—the benefit is permanent.

From the Field: Two Examples from Fullstacks Projects

Theory is one thing. Two anonymized examples from Fullstacks projects show what these principles mean in practice.

Electronics Manufacturer: Maturity Levels for Artifacts

For a large electronics manufacturer, Fullstacks fundamentally restructured artifact management. The starting point: no uniform naming conventions, no defined maturity stages, and no systematic overview of the security status of individual components.

The solution: a multi-stage maturity level model for software artifacts of all kinds. Every artifact passes through defined maturity stages—characterized by scans, policy approvals, and verification steps. Only artifacts that have been scanned multiple times and approved through defined policies can reach certain production environments. The result is a controllable, auditable process instead of a proliferation of uncontrolled sources.

Automotive: Incident Response for a Supply Chain Incident

In the automotive industry, Fullstacks supported a company that fell victim to a targeted attack on its software supply chain. The incident clearly showed what happens when no structured incident response competence is present: the blast radius grows uncontrollably because no one knows which systems and artifacts are affected.

Fullstacks supported the company in reacting quickly and actively, limiting the damage while simultaneously creating the structural prerequisites so that such an incident can be detected earlier and contained more effectively next time.

Controlled artifacts prevent chaos before incidents escalate.

What Distinguishes Teams That Act Now from Those That Wait?

The question is legitimate: Why now? Why not wait until an incident occurs and then react?

The answer lies in the nature of supply chain attacks. Unlike a direct attack on an application, supply chain compromises often go undetected for months. By the time they are noticed, the damage has long been done. Reaction is then expensive, slow, and public—rarely in the desired direction.

Teams that proactively manage their software supply chain have a fundamental advantage: they know what they are working with. They can manage risks—consciously and prioritized—before an incident has to occur. This competence is not just a security gain. It is a competitive advantage in regulated markets, during audits, and toward customers who increasingly ask for proof.

Those who wait often do not even know how their software actually comes together. And that—regardless of industry and company size—is no longer a sustainable position.

Early detection of risks

Transparency in the supply chain

Securing competitive advantages

Conclusion: Transparency Is the First Step to Control

Software supply chain security is not a project that you complete. It is a competence that you build—iteratively, across teams and the entire company, on a solid foundation of inventory and centralization.

The first step is not the most difficult. It is the most important: know what you are working with.

FULLSTACKS team 34 - FULLSTACKS

Act now before an incident forces the first step.

Fullstacks Assessment Workshop: Your Entry into Secure Supply Chain Security

If you realize that you lack structure or transparency in your software supply chain—this is exactly where we come in. The entry point with Fullstacks is a half-day Assessment Workshop. We sit down with your team, analyze your specific status quo with experts from multiple domains, and identify where the greatest need for action lies. The result is not a generic framework—but a prioritized action plan tailored to your infrastructure, your teams, and your regulatory requirements.

Daniel Drack Autor 2026 - FULLSTACKS

About the Author

Daniel Drack is responsible for the security framework at Fullstacks and supports engineering organizations in securing their software supply chain in a structured and sustainable manner. With deep expertise in DevSecOps, artifact management, and CI/CD security, he advises companies from industry, finance, and critical infrastructure—from the initial assessment to company-wide implementation.

More Blog Posts