Join our Newsletter — 33% off our NHI Course
Home› Glossary› Cyber Security› Java Object Serialization
Cyber Security

Java Object Serialization

← Back to Glossary
By NHI Mgmt Group Updated November 3, 2026 Domain: Cyber Security

Java Object Serialization is Java’s built-in mechanism for converting an object graph into a byte stream and reconstructing it later. It preserves object state across processes or storage, but deserialising untrusted data can trigger gadget chains, type confusion, and remote code execution if classes with dangerous read logic are present.

How Java Object Serialization works

Java object serialization turns an object graph into a byte stream and later reconstructs it through deserialisation. That makes it useful for persistence, caching, messaging, and remote communication, but it also means the receiving side must trust the structure and behaviour of the objects being rehydrated.

The mechanism is not just data encoding. During deserialisation, Java may invoke class-specific read logic, resolve object references, and rebuild complex graphs. That convenience is what makes the format powerful, but it also creates a larger attack surface than a simple plain-data transfer format.

Why untrusted deserialisation is dangerous

The core danger is that deserialisation can activate application code before the application has had a chance to validate the data. If a class on the classpath has risky read methods or other side effects, crafted input can trigger gadget chains that perform actions the developer never intended.

This is why insecure deserialisation is often associated with object injection, type confusion, and remote code execution. The risk is not limited to obvious “deserialise this payload” endpoints, because any pathway that accepts attacker-controlled serialized bytes can become a code-execution primitive if the runtime can assemble a dangerous chain of reachable classes.

Java-specific protections such as serialisation filters reduce the reachable type set and help constrain what can be materialised. The practical lesson is that the format is only safe when the accepted object types and the surrounding code paths are tightly controlled.

Where exposure usually comes from

Exposure often appears where legacy code accepts serialized data over the network, loads it from shared storage, or exchanges it between internal services without a strict trust boundary. The problem is especially acute when developers assume that “internal only” traffic is inherently safe and leave deserialisation open to anything that can reach the endpoint.

Risk also rises when the application depends on libraries or framework classes with complex behaviour during object reconstruction. A single vulnerable dependency can enlarge the gadget surface significantly, which is why Java deserialisation issues are often discussed alongside broader unsafe object loading patterns. For a deeper treatment of defensive patterns, see the Secure Deserialisation Guide and Oracle’s Java Secure Coding Guidelines Guide.

When teams are reviewing an estate for exposure, the right questions are where serialized input enters the system, which classes can be resolved, and whether any code path can be reached before validation. That is the practical difference between a benign storage mechanism and a dangerous execution sink.

Safer ways to use or replace it

Modern practice is to avoid accepting arbitrary serialized objects from untrusted sources and to prefer explicit, schema-based formats for external boundaries. Where Java serialization must remain in place, the safer pattern is to narrow the allowed types, isolate the trust boundary, and treat the deserialisation step as security-sensitive code rather than a routine parser.

It also helps to reduce dependency on mutable object state for security decisions. The more logic that happens automatically during reconstruction, the harder it is to reason about safety. That is why many secure coding recommendations favour fixed contracts, allowlists, and minimal object behaviour during read operations. The Insecure Deserialisation Guide is the broad reference for these cross-language patterns, while the Java-specific guide shows how those principles map to filters and safer platform defaults.

In practice, the safest design is usually the one that removes the need to deserialize complex object graphs from untrusted sources at all. If that is not possible, the defensive work needs to happen before the bytes are accepted, not after the object has already been rebuilt.

Risk and Threat Considerations

Java object serialization creates a well-known code-execution risk because the deserialiser may invoke attacker-influenced class behaviour while reconstructing the object graph. That makes untrusted input especially dangerous when dangerous gadget classes are present on the classpath or when filters are too permissive.

Failure mechanism: An attacker supplies crafted serialized data that causes the runtime to resolve unintended types or traverse a gadget chain, leading to object injection, type confusion, or remote code execution.

Impact: Successful exploitation can give the attacker arbitrary code execution in the application process, which can then expose secrets, alter data, pivot to adjacent systems, or establish persistence.

Standards & Framework Alignment

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

MITRE ATT&CK addresses the attack and risk surface, while NIST SP 800-53 Rev 5, OWASP ASVS and CIS Controls v8 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
NIST SP 800-53 Rev 5SI-10 — Information Input ValidationCovers validating untrusted serialized input before it is processed
SI-7 — Software, Firmware, and Information IntegrityApplies where deserialisation abuse can alter execution integrity or trigger malicious code paths
AC-6 — Least PrivilegeLimits the damage if deserialisation is exploited for code execution
Recommendation — Validate serialized input before deserialising it or allowing object materialisation. Apply integrity checks and trust restrictions to reduce abuse of deserialisation paths. Restrict application privileges so a deserialisation flaw cannot fully compromise the host.
OWASP ASVSV5 — File HandlingIncludes safe handling of untrusted serialized content and parser behaviour
V15 — Secure Coding and ArchitectureCovers unsafe object construction and dangerous trust in framework behaviour
Recommendation — Prefer safe parsing and reject unsafe serialized inputs at application boundaries. Design out unsafe deserialisation and avoid automatic object reconstruction from untrusted data.
CIS Controls v8CIS-16 — Application Software SecurityAddresses secure application design and abuse-resistant handling of untrusted inputs
Recommendation — Review application code paths that deserialize data and remove unsafe legacy mechanisms.
MITRE ATT&CKT1203 — Exploitation for Client ExecutionCaptures exploitation through malicious content that triggers code execution in a runtime
T1059 — Command and Scripting InterpreterRelevant when deserialisation leads to command execution or script spawning
Recommendation — Map deserialisation exploitation paths to T1203 and hunt for suspicious payload delivery. Correlate deserialisation alerts with process execution telemetry for interpreter abuse.

Practitioner Guidance

What to watch for: Treat every deserialisation boundary as a trust boundary. If the code accepts bytes from users, partners, queues, caches, or shared services, verify whether the format can trigger class resolution or custom read logic before validation.

Governance implication: Teams should know which services still rely on Java serialization, who owns those code paths, and whether allowed-type controls are enforced consistently. In legacy estates, the biggest mistake is leaving the mechanism in place without an explicit decision about the trust model.

Practitioner takeaway: If you cannot confidently constrain the input and the reachable types, replace the format rather than trying to “monitor” your way out of unsafe deserialisation.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Reviewed and updated by the NHIMG editorial team on November 3, 2026.
NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org