In today's technology-driven world, software development has become an integral part of almost every business. From small startups to large corporations, every organization relies on software to perform various critical functions. However, with the increasing complexity of software supply chains, the risks associated with it have also increased.
This guide aims to provide you with a comprehensive understanding of software supply chain security and equip you with the knowledge and skills to protect your organization's software supply chain. Whether you are a software developer, a DevOps engineer, or a business owner, this guide will help you understand the various elements of a software supply chain and the security risks associated with them. We will provide you with practical tips and strategies to enhance the security of your software supply chain and protect your organization from potential security threats.
Let's dive in and explore the world of software supply chain security together!
A software supply chain refers to the sequence of processes involved in the development, deployment, and maintenance of software applications. It covers all aspects required to build a software artifact, from source code development to production deployment. This includes the following key elements:
In today's software development landscape, it is becoming increasingly rare for companies to create software completely in-house. Instead, they rely on a range of building blocks, such as open-source libraries, developer tools, cloud-based deployment, software-as-a-service (SaaS), and delivery systems. Each of these components is part of a long supply chain, which encompasses every aspect of IT infrastructure, including hardware, source code, third-party tools, platforms, data storage, and testing and distribution infrastructure.
As developers, we all love open-source libraries and components. They save us time, accelerate development, and enable us to deliver more functionality to our customers. However, it's important to acknowledge that open-source components also come with inherent security risks. Because we don't have direct control over the code that goes into our products, we're increasingly exposed to vulnerabilities that may be introduced by changes outside our control.Â
That's why it's crucial to be vigilant about the security of our software supply chain.
DevSecOps speeds up the development and deployment of new capabilities in modern supply chains. However, if security measures are not implemented, attackers can inject malicious code into the trusted baseline. Frequent software updates can also increase risk if not properly managed, as they require more communication with customer networks, potentially giving attackers increased access to target networks.
Following is a list of the top 5 risks to the modern software supply chain:
It would be difficult to talk about supply chain attacks without bringing up the SolarWinds case, which has become the poster child for the dangers they represent. The case of SolarWinds is one of the worst-case scenarios since the compromised system was not only used with tens of thousands of high-profile clients, such as within the military and other areas within the government but because the software had admin-level access to the networks, it was installed on.Â
The attackers targeted an IT infrastructure monitoring software called SolarWinds Orion to install a backdoor into SolarWinds customers, which included Homeland Security, State Commerce and Treasury, FireEye, Microsoft, Intel, Cisco, and Deloitte, to name a few. State-of-the-art security protections were bypassed by exploiting a link with high-privilege access to penetrate and remain undetected for a significant amount of time.
The Orion component was compromised as early as September 2019. The first traces of code used by the attackers for testing the exploit were injected into the code in October 2019. It wasn’t until February 2020 when the malicious code, known as Sunburst, was injected into Orion and began to be deployed to its 18,000 users in March. SolarWinds did not discover the breach until December 2020.
This attack concerned software deployment tools, specifically the CI/CD environment. The CI/CD (Continuous Integration / Continuous Deployment) pipeline is a process by which software can be automatically tested before it is automatically deployed. This has become a fundamental part of the software supply chain, allowing developers to streamline the process of building and deploying software.Â
In January 2021, an attacker obtained credentials used in Docker image creation involving Codecov software due to an error in the build process. These credentials allowed the attacker to hijack Codecov, a software for testing developers' code coverage, and turn it into a real Trojan horse: since the software is used in continuous integration (CI) environments, it has access to the secret credentials of the build processes.
The attacker was thus able to siphon off hundreds of credentials from Codecov users, allowing him to access as many secure systems. The company only detected the breach a few months later, in April.
Read a full breakdown of the Codecov attack here:
In December 2021, a vulnerability affecting Apache Log4j, an open-source logging library widely used in the Java ecosystem, was discovered and disclosed as a proof-of-concept (POC). Attackers could execute Remote Code Execution (RCE) using certain versions of the package, prompting them to scan for vulnerable servers across the Web in large numbers. The danger of Log4Shell lies in the ubiquity of the Log4j 2 library, which is present in major platforms such as Amazon Web Services and VMware, as well as services large and small. Attackers can easily exploit it to remotely take over any internet-connected service using certain versions of the Log4j library anywhere in the software stack.
Although a patch was quickly released, and the vulnerability was only exploitable under specific conditions, its prevalence in the Java ecosystem meant that a significant attack surface had been exposed for thousands of organizations globally. The US Cybersecurity and Infrastructure Security Agency (CISA) described it as "endemic" since it is likely to persist for many years.
Securing a software supply chain involves various steps that aim to mitigate the risks and ensure the reliability and safety of the software products. The following are some key practices to secure a software supply chain:
Read also Gartner’s guidelines for software engineers about:
Software supply chain attacks present a real challenge to the resilience of software factories. While it is not possible to prevent all supply chain attacks, implementing these practices can make it more difficult for attackers to infiltrate your system and limit potential damage.
Here are the 6 rules to keep your software supply chain safe:
Read the complete guidelines here:
Supply Chain Risk Management (SCRM) software is designed to help organizations manage the risks associated with the procurement, development, and deployment of software in their supply chain. These risks may include security vulnerabilities, data breaches, cyber-attacks, and non-compliance with industry standards, regulations, and security requirements.
Here is a proposed model to distinguish between supply chain, third-party, and vendor risk management:
In this all-encompassing model, software vendors’ customers should be taken into account because they could intentionally or not impact the vendor’s security. Indirect providers are the suppliers of the vendor’s suppliers, for example, the cloud service provider of a SaaS application that is used in the development of a software product.
Supply chain risk management (SCRM) software typically includes a range of features and functionalities, such as:
In today's world, the software supply chain is highly complex and made up of many third-party components like SaaS tools, APIs, and libraries that are often sourced from different vendors and suppliers. This complexity creates significant challenges for security operations teams in managing and securing their software supply chain. Even with best practices and Supply Chain Risk Management (SCRM) solutions, security teams often need more visibility and security oversight over these third-party components.
As a result, organizations must go beyond traditional SCRM and adopt new approaches to ensure the security and integrity of their software supply chain. One such approach is intrusion detection, which can help organizations detect when a third-party component has been breached and take appropriate action to mitigate the risk.
Get notified if any suspicious activity is detected on your favorite SaaS tools for free.
Intrusion detection systems (IDS) are a critical component of modern cybersecurity that helps detect unauthorized access, unusual activity, and known or unknown attacks in real time. IDS can monitor and analyze network traffic, system logs, and other sources of data to identify potential security breaches and suspicious activity. IDS can also use honeypots to lure attackers into attacking a decoy system, providing security teams with valuable insights into their tactics and techniques.
A specific kind of honeypot is a honeytoken (also known as canary tokens). Honeytokens are credentials that look like real secrets but are not valid against any service, but when used, they will trigger an alert and report on the user's address. The honeytoken is designed to lure attackers into attacking it, giving security teams an opportunity to detect and analyze their techniques and tactics.
Honeytokens are useful for intrusion detection because they can:
One way to consistently deploy honeytokens is to make them a part of your automated environment builds, leveraging tools like Terraform and our open-source project ggcanary. Honeytokens can be created and deployed in your CI/CD pipelines, as well as code repositories or project management systems.
Supply chain security automation involves automating security-related tasks, such as vulnerability scanning, patch management, and access control, in the software supply chain to improve its security posture. One critical aspect of software security in the supply chain is attestation, which is an authenticated statement or metadata about a software artifact or collection of software artifacts. Attestation provides evidence of compliance with security frameworks and standards and helps organizations validate the authenticity and security of their software, ensuring that it is free from vulnerabilities and has not been tampered with.
Supply chain automated attestation is the process of generating attestation metadata as part of the build process. Thanks to CI/CD pipelines, the build process can generate and produce attestation metadata for all built artifacts, making it easier to validate the authenticity of the software and the security of the machine they were built on. Therefore it is a prevention measure against code that has been injected with malware or build servers that have been overtaken.
Automated attestation is becoming increasingly important, especially for public sector organizations, due to the emerging attestation requirements that demand organizations protect against software tampering and add minimal build integrity guarantees.
Not only that, but automated attestation verification and signing is certainly one of the keys to improving the global security of the open-source ecosystem due to the network effect's effectiveness.Â
Learn everything about Sigstore, a promising set of new tools aiming at establishing a new standard for software practitioners for signing, verifying, and protecting software, and its code signing tool Cosign with this tutorial:Â
Software supply chain security frameworks are crucial for organizations to navigate the many aspects of supply chain risk assessment and evaluate mitigation priorities.Â
The National Institute of Standards and Technology (NIST) provides guidelines for secure software development and supply chain security, including the NIST Secure Software Development Framework:
With a different approach, the Supply Chain Levels for Software Artifacts (SLSA) framework defines four security levels, which are incremental and actionable milestones corresponding to integrity guarantees, to improve supply chain security:
With a different approach, the Supply Chain Levels for Software Artifacts (SLSA) framework defines four security levels, which are incremental and actionable milestones corresponding to integrity guarantees, to improve supply chain security: Secure Supply Chain Consumption Framework (S2C2F)
Finally, with the entire software supply chain being increasingly targeted by threat actors, there emerged the need for a MITRE ATT&CK-like security framework that would allow experts to establish a common language and structure for understanding and analyzing techniques, tactics, and procedures (TTPs) used by adversaries to compromise the security of software supply chains.
This is the goal of the Open Software Supply Chain Attack Reference (OSC&R), a MITRE-like framework covering containers, open-source software, secrets hygiene, and CI/CD posture.