Ruby's serialization mechanism that can execute code during deserialization through marshal_load or gadget chains in loaded classes.
Ruby Marshal is Ruby's native serialization mechanism. Like Python's pickle, it can execute arbitrary code during deserialization through gadget chains, making it dangerous for untrusted input.
# Marshal can invoke methods during deserialization
# Gadget chains abuse existing Ruby classes
# ERB template execution gadget
require 'erb'
template = ERB.new("<%= system('id') %>")
payload = Marshal.dump(template)
# When victim deserializes:
Marshal.load(payload) # Could execute code if result.run called
Older Rails versions used Marshal for session cookies:
# Rails secret key allows forging cookies
# With known secret_key_base:
# 1. Create malicious object
# 2. Marshal.dump()
# 3. Sign with secret key
# 4. Send cookie to victim app
# 5. App deserializes → RCE