OWASPTop 10 2021
A08:2021 Software and Data Integrity Failures
- Edition
- OWASP Top 10 2021
- Rank
- 8
- CWEs Mapped
- 10
- Max Incidence Rate
- 16.67%
- Avg Incidence Rate
- 2.05%
- Avg Weighted Exploit
- 6.94
- Avg Weighted Impact
- 7.94
- Max Coverage
- 75.04%
- Avg Coverage
- 45.35%
- Total Occurrences
- 47,972
- Total CVEs
- 1,152
Overview
A new category for 2021 focuses on making assumptions related to
software updates, critical data, and CI/CD pipelines without verifying
integrity. One of the highest weighted impacts from
Common Vulnerability and Exposures/Common Vulnerability Scoring System (CVE/CVSS)
data. Notable Common Weakness Enumerations (CWEs) include
*CWE-829: Inclusion of Functionality from Untrusted Control Sphere*,
*CWE-494: Download of Code Without Integrity Check*, and
*CWE-502: Deserialization of Untrusted Data*.
Description
Software and data integrity failures relate to code and infrastructure
that does not protect against integrity violations. An example of this is where an application relies upon plugins, libraries, or modules from untrusted sources, repositories, and content
delivery networks (CDNs). An insecure CI/CD pipeline can introduce the
potential for unauthorized access, malicious code, or system compromise.
Lastly, many applications now include auto-update functionality, where
updates are downloaded without sufficient integrity verification and
applied to the previously trusted application. Attackers could
potentially upload their own updates to be distributed and run on all
installations. Another example is where
objects or data are encoded or serialized into a structure that an
attacker can see and modify is vulnerable to insecure deserialization.
How to Prevent
• Use digital signatures or similar mechanisms to verify the software or data is from the expected source and has not been altered.
• Ensure libraries and dependencies, such as npm or Maven, are
consuming trusted repositories. If you have a higher risk profile, consider hosting an internal known-good repository that's vetted.
• Ensure that a software supply chain security tool, such as OWASP
Dependency Check or OWASP CycloneDX, is used to verify that
components do not contain known vulnerabilities
• Ensure that there is a review process for code and configuration changes to minimize the chance that malicious code or configuration could be introduced into your software pipeline.
• Ensure that your CI/CD pipeline has proper segregation, configuration, and access
control to ensure the integrity of the code flowing through the
build and deploy processes.
• Ensure that unsigned or unencrypted serialized data is not sent to
untrusted clients without some form of integrity check or digital
signature to detect tampering or replay of the serialized data
Example Attack Scenarios
Scenario #1 Update without signing: Many home routers, set-top
boxes, device firmware, and others do not verify updates via signed
firmware. Unsigned firmware is a growing target for attackers and is
expected to only get worse. This is a major concern as many times there
is no mechanism to remediate other than to fix in a future version and
wait for previous versions to age out.
Scenario #2 SolarWinds malicious update: Nation-states have been
known to attack update mechanisms, with a recent notable attack being
the SolarWinds Orion attack. The company that develops the software had
secure build and update integrity processes. Still, these were able to
be subverted, and for several months, the firm distributed a highly
targeted malicious update to more than 18,000 organizations, of which
around 100 or so were affected. This is one of the most far-reaching and
most significant breaches of this nature in history.
Scenario #3 Insecure Deserialization: A React application calls a
set of Spring Boot microservices. Being functional programmers, they
tried to ensure that their code is immutable. The solution they came up
with is serializing the user state and passing it back and forth with
each request. An attacker notices the "rO0" Java object signature (in base64) and
uses the Java Serial Killer tool to gain remote code execution on the
application server.
References
• \OWASP Cheat Sheet: Software Supply Chain Security\
• \OWASP Cheat Sheet: Secure build and deployment\
• OWASP Cheat Sheet: Infrastructure as Code
• OWASP Cheat Sheet: Deserialization
• SAFECode Software Integrity Controls
• A 'Worst Nightmare' Cyberattack: The Untold Story Of The
SolarWinds
Hack
• CodeCov Bash Uploader Compromise
• Securing DevOps by Julien Vehent
List of Mapped CWEs
• CWE-345 Insufficient Verification of Data Authenticity
• CWE-353 Missing Support for Integrity Check
• CWE-426 Untrusted Search Path
• CWE-494 Download of Code Without Integrity Check
• CWE-502 Deserialization of Untrusted Data
• CWE-565 Reliance on Cookies without Validation and Integrity Checking
• CWE-784 Reliance on Cookies without Validation and Integrity Checking in a Security Decision
• CWE-829 Inclusion of Functionality from Untrusted Control Sphere
• CWE-830 Inclusion of Web Functionality from an Untrusted Source
• CWE-915 Improperly Controlled Modification of Dynamically-Determined Object Attributes
Related
Mapped cwe · CWE (10)
- CWE-345 Insufficient Verification of Data Authenticity weakness
- CWE-353 Missing Support for Integrity Check weakness
- CWE-426 Untrusted Search Path weakness
- CWE-494 Download of Code Without Integrity Check weakness
- CWE-502 Deserialization of Untrusted Data weakness
- CWE-565 Reliance on Cookies without Validation and Integrity Checking weakness
- CWE-784 Reliance on Cookies without Validation and Integrity Checking in a Security Decision weakness
- CWE-829 Inclusion of Functionality from Untrusted Control Sphere weakness
- CWE-830 Inclusion of Web Functionality from an Untrusted Source weakness
- CWE-915 Improperly Controlled Modification of Dynamically-Determined Object Attributes weakness
Cheat sheet · OWASP (1)
- CS-Infrastructure_as_Code_Security Infrastructure as Code Security Cheatsheet Cheat Sheet