Join our Newsletter — 33% off our NHI Course

Insecure Deserialization

Insecure deserialization is a software flaw where untrusted serialized data is turned back into objects without proper validation. Attackers can tamper with that data to change application logic, steal data, or trigger remote code execution. It is a common risk in APIs, session handling, and distributed systems.

What Insecure Deserialization Means in Practice

Insecure deserialization occurs when an application accepts serialized input from an untrusted source and reconstructs it into objects or state without sufficient validation. The flaw is dangerous because the deserialized content can carry altered fields, unexpected types, or execution paths the application never intended to trust.

The core problem is not serialization itself, it is trusting attacker-controlled structure as if it were safe application data. Once that trust boundary is crossed, the application may treat hostile input as a legitimate object graph, which can distort business logic or open a path to deeper compromise.

Why It Becomes Exploitable

Serialized data often influences control flow, not just content. That makes this flaw especially risky in APIs, session handling, message queues, and distributed systems, where a single object can trigger follow-on behaviour in multiple services or components.

Attackers look for formats and libraries that restore complex object state automatically, especially when the application accepts data from clients, middleware, caches, or partner systems. The more the application relies on implicit object reconstruction, the less visible the trust decision becomes.

Common Attack Outcomes

The effects range from logic tampering to full remote code execution, depending on the language, library, and available gadget chains. Even when code execution is not immediately possible, altered object state can still bypass checks, corrupt transactions, or expose sensitive data.

Java, .NET, PHP, and Python ecosystems are often discussed because they expose rich object models and deserialization features that can be misused when developers do not strictly constrain what may be rebuilt.

How Defenders Reduce Exposure

Defence starts with eliminating unnecessary deserialization of untrusted input, then narrowing what the application will accept when serialization is unavoidable. The safest pattern is to treat serialized payloads as hostile by default and require explicit validation, type allowlisting, and format constraints before reconstruction.

For teams building or reviewing affected systems, NHIMG’s Insecure Deserialisation Guide provides a deeper treatment of object injection, gadget chains, and language-specific filtering patterns. Teams should also review OWASP API Security Top 10 for API exposure patterns and NIST SP 800-53 Rev 5 Security and Privacy Controls for control families that support input handling, integrity, and auditability.

Risk and Threat Considerations

Insecure deserialization is high impact because it turns a data-handling feature into an execution surface. A malicious payload can travel through trusted pathways, survive normal authentication checks, and then change application state or trigger code at the moment the object is rebuilt.

Failure mechanism: the application restores attacker-controlled serialized content without constraining types, fields, or allowed behaviours, so the payload can invoke unsafe object logic or influence execution flow.

Impact: attackers may tamper with authorization decisions, exfiltrate data, corrupt sessions, or achieve remote code execution, especially where gadget chains or privileged runtime behaviour are available.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP API Security Top 10 addresses the attack and risk surface, while NIST SP 800-53 Rev 5 and CIS Controls v8 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP API Security Top 10 API8 — Security Misconfiguration APIs that deserialize untrusted input often fail through unsafe defaults and loose parsing
Recommendation — Harden API parsing paths and reject unsafe deserialization defaults.
NIST SP 800-53 Rev 5 SI-10 — Information Input Validation Deserialization safety depends on validating and constraining untrusted input before reconstruction
SI-7 — Software, Firmware, and Information Integrity Tampered serialized content can alter state or execution, making integrity controls central
AC-6 — Least Privilege Remote code execution from deserialization is less severe when runtime privileges are tightly limited
Recommendation — Validate serialized input before object reconstruction and block unexpected data shapes. Verify integrity of inbound objects and detect tampered payloads before processing. Limit service privileges so a deserialization flaw cannot immediately gain broad access.
CIS Controls v8 CIS-16 — Application Software Security Secure coding controls directly address unsafe object handling and library misuse
Recommendation — Review application code for unsafe deserialization and restrict dangerous libraries or patterns.

Practitioner Guidance

Why practitioners should care: this flaw is often hidden in libraries and framework defaults, so teams may inherit it without realising that a routine parsing step has become a trust boundary. Review any component that reconstructs objects from remote, cached, or inter-service input.

What to watch for: suspicious object types, unexpected class loading, inconsistent session behaviour, and deserialization occurring before validation or integrity checks. If a system must process serialized content, ensure the accepted schema is tightly constrained and the runtime cannot instantiate arbitrary objects.

Practitioner takeaway: the safest posture is to minimise opaque object reconstruction, prefer simpler data formats where possible, and verify that every deserialization path is treated as untrusted input until proven otherwise.