CWE Database
/

CWE-502

Back to CWE list

CWE-502

Deserialization of Untrusted Data

Base
Draft

Description

The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid.

Related Weaknesses

Common Consequences

Scope

Integrity

Impact

Modify Application Data, Unexpected State

Scope

Availability

Impact

DoS: Resource Consumption (CPU)

Scope

Other

Impact

Varies by Context

Potential Mitigations

Architecture and Design
Implementation

If available, use the signing/sealing features of the programming language to assure that deserialized data has not been tainted. For example, a hash-based message authentication code (HMAC) could be used to ensure that data has not been modified.

Implementation

When deserializing data, populate a new object rather than just deserializing. The result is that the data flows through safe input validation and that the functions are safe.

Implementation

Explicitly define a final object() to prevent deserialization.

Architecture and Design
Implementation

Make fields transient to protect them from deserialization. An attempt to serialize and then deserialize a class containing transient fields will result in NULLs where the transient data should be. This is an excellent way to prevent time, environment-based, or sensitive variables from being carried over and used improperly.

Implementation

Avoid having unnecessary types or gadgets (a sequence of instances and method invocations that can self-execute during the deserialization process, often found in libraries) available that can be leveraged for malicious ends. This limits the potential for unintended or unauthorized types and gadgets to be leveraged by the attacker. Add only acceptable classes to an allowlist. Note: new gadgets are constantly being discovered, so this alone is not a sufficient mitigation.

Architecture and Design
Implementation

Employ cryptography of the data or code for protection. However, it's important to note that it would still be client-side security. This is risky because if the client is compromised then the security implemented on the client (the cryptography) can be bypassed.

Operation

Use an application firewall that can detect attacks against this weakness. It can be beneficial in cases in which the code cannot be fixed (because it is controlled by a third party), as an emergency prevention measure while more comprehensive software assurance measures are applied, or to provide defense in depth [REF-1481].

CVE-2024-37052

insecure deserialization in platform for managing AI/ML applications and models allows code execution via a crafted pickled object in a model file

CVE-2024-37288

deserialization of untrusted YAML data in dashboard for data query and visualization of Elasticsearch data

CVE-2024-9314

PHP object injection in WordPress plugin for AI-based SEO

CVE-2019-12799

chain: bypass of untrusted deserialization issue (CWE-502) by using an assumed-trusted class (CWE-183)

CVE-2015-8103

Deserialization issue in commonly-used Java library allows remote execution.

CVE-2015-4852

Deserialization issue in commonly-used Java library allows remote execution.

CVE-2013-1465

Use of PHP unserialize function on untrusted input allows attacker to modify application configuration.

CVE-2012-3527

Use of PHP unserialize function on untrusted input in content management system might allow code execution.

CVE-2012-0911

Use of PHP unserialize function on untrusted input in content management system allows code execution using a crafted cookie value.

CVE-2012-0911

Content management system written in PHP allows unserialize of arbitrary objects, possibly allowing code execution.

+3 more examples

Applicable Platforms

Java
Ruby
PHP
Python
JavaScript

Security Training

Train your team to recognize and prevent security threats with our comprehensive security awareness program.

Start Training

Vulnerability Scanning

Discover vulnerabilities in your applications and infrastructure before attackers do.

Scan Now