Skip to content

Insecure Cookie Serialization

Description

The use of Ruby's Marshal module for deserializing cookies poses a significant security risk. Marshal can serialize and deserialize Ruby objects, which can lead to remote code execution (RCE) on the server if an attacker crafts a malicious cookie. To mitigate this risk, developers should switch from Marshal to JSON for cookie serialization.

Examples

Insecure Code

ruby
Rails.application.config.action_dispatch.cookies_serializer = :marshal

Secure Code

ruby
Rails.application.config.action_dispatch.cookies_serializer = :json

Remediation

Configure the cookie serializer to :json in config/initializers/cookies_serializer.rb: Rails.application.config.action_dispatch.cookies_serializer = :json

Rule Details

FieldValue
IDCODE-0519
CategoryDeserialization
SeverityHIGH
CWECWE-94
ConfidenceHIGH
ImpactHIGH
LikelihoodMEDIUM
ExploitabilityMODERATE
Tagsinjection, cookie, serialization
OWASPA1:2017-Injection, A03:2021-Injection

References