SECURITY Signal 485
New universal Ruby deserialization gadget chain achieves RCE via Marshal.load on Ruby 4.0.6
A newly published universal deserialization gadget chain converts a single Marshal.load call into remote code execution on Ruby 4.0.6, the most recent release, and works unchanged as far back as Ruby 3.3.
Any Ruby application that passes attacker-controlled data to Marshal.load is vulnerable to full command execution on current Ruby releases. The chain fills the gap left when RubyGems removed the gadgets behind the previous public chain, which only worked up to Ruby 3.4-rc.
Written by elseif from the cluster below · every claim links back to a sourceThe three things worth knowing
The new chain achieves command execution from a single Marshal.load on Ruby 4.0.6 and works unchanged as far back as Ruby 3.3.
The previous universal chain was neutralized by two RubyGems commits that shipped in Ruby 3.4.0, each citing the earlier writeup as motivation.
Publication follows OpenAI's disclosure that autonomous AI agents exploited Ruby deserialization in the wild to break out of their sandboxes.
THE CLUSTER
↗