Skip to content

Archive

Deserialization

8 articles
Cybersecurity 14 Sep 2026 6 min read

Deserialization Can Turn Data Into Program Behavior

A serialized object can look like ordinary application data while carrying enough structure to influence which classes are instantiated, which fields receive values, and which runtime hooks execute during reconstruction. That difference matters whenever an application accepts object graphs from a browser, message queue, cache, file, or another service and treats decoding as a passive parsing operation. The dangerous cases are not defined by serialization itself. JSON decoded into a fixed record type is not equivalent to a native object stream that can name arbitrary runtime classes. The security boundary appears when attacker-controlled input can select behavior-rich types, trigger lifecycle callbacks, or assemble existing code paths into an unintended computation.

Cybersecurity 13 Sep 2026 7 min read

Unsafe Deserialization Turns Data Into Program Behavior

A serialized value can look inert on the wire and become active the moment an application reconstructs it. The dangerous transition is easy to miss because the input may resemble ordinary state: fields, type names, references, collection entries, or compact binary records. Yet some serialization systems restore far more than plain data. They can select classes, invoke constructors or callbacks, rebuild object graphs, and activate framework behavior during or after decoding.

Cybersecurity 13 Sep 2026 8 min read

Deserialization Can Turn Data Into Execution

Deserialization Can Turn Data Into Execution A serialized object can look like inert application state right up to the moment a runtime reconstructs it. At that boundary, a compact sequence of bytes may stop behaving like ordinary data and begin selecting classes, invoking reconstruction hooks, resolving references, allocating complex object graphs, or activating framework machinery. That distinction matters whenever serialized state crosses a trust boundary. The risky property is not simply that an attacker can submit malformed input. Many native serialization systems preserve enough information about program objects that decoding carries semantics far beyond parsing JSON fields into a plain record. In the wrong context, deserialization becomes a mechanism for asking the application to assemble behavior chosen partly by the input.

Cybersecurity 12 Sep 2026 9 min read

Reject Native Object Deserialization from Untrusted Inputs

Native object serialization can be convenient inside a trusted process boundary. A runtime can preserve object types, references, inheritance details, and other implementation state with very little application code. That convenience becomes dangerous when serialized bytes cross a trust boundary. Many native object formats do more than decode passive data. Their decoders may resolve classes, allocate arbitrary object graphs, invoke constructors or callbacks, restore proxies, or trigger other runtime behavior. An attacker who controls the input can then influence operations that were never intended to be part of parsing.

Cybersecurity 12 Sep 2026 6 min read

Native Object Deserialization Expands the Trusted Computing Surface

A serialized object can look like ordinary application data at the edge of a system and behave very differently once it reaches a native object decoder. The distinction matters because some serialization mechanisms do more than parse fields. They reconstruct types, restore object graphs, resolve references, and invoke behavior associated with object creation or restoration. That capability is convenient inside a trusted boundary. Across an untrusted boundary, it can make the application’s installed code part of the input language.

Cybersecurity 10 Sep 2026 9 min read

Keep Untrusted Data Out of Native Object Deserializers

A convenient serializer can turn an object graph into bytes and later rebuild it with one function call. That convenience becomes a security problem when the bytes come from a request, message, uploaded file, cache entry, or other source an attacker can influence. Some native object formats carry more than plain values: they can encode types, object relationships, or instructions that cause application-defined behavior during reconstruction. If an application treats such input as ordinary data, parsing may cross a trust boundary before validation gets a chance to help. The result can range from unexpected object state to dangerous code paths, depending on the serialization system and the classes available to it.

Cybersecurity 08 Sep 2026 9 min read

Keep Untrusted Data Out of Object Deserializers

A serialized object can look like ordinary input: bytes arrive from a request, queue, cache, file, or database and the application turns them back into an object. The important difference is that some object deserializers do more than decode values. They can choose application types, reconstruct object graphs, and invoke type-specific behavior while reconstruction is happening. That makes object deserialization a security boundary. If an attacker can influence the serialized bytes, treating those bytes as instructions for rebuilding application objects can lead to unexpected state, denial of service, or, with some formats and available types, code execution.

Cybersecurity 04 Sep 2026 9 min read

Treat Deserialization as a Trust Boundary

Applications constantly turn bytes into useful values. A request body becomes a set of fields, a cached value becomes a record, or a message from a queue becomes a command. This conversion is called deserialization when the bytes represent a previously encoded data structure. The security problem begins when deserialization does more than recover inert data. Some serialization systems can reconstruct application-specific object types or trigger behavior while rebuilding an object graph. If an attacker can influence that serialized input, the parser may be asked to create types or invoke mechanisms that the application never intended to expose at that boundary.