Ruby on Rails: Remote Code Execution — GLSA 202408-24

A vulnerability has been discovered in Ruby on Rails, which can lead to remote code execution via serialization of data.

Affected packages

dev-ruby/rails on all architectures
Affected versions < 7.0.3.1
< 6.1.6.1
Unaffected versions >= 7.0.3.1
>= 6.1.6.1

Background

Ruby on Rails is a free web framework used to develop database-driven web applications.

Description

Multiple vulnerabilities have been discovered in Ruby on Rails. Please review the CVE identifiers referenced below for details.

Impact

When serialized columns that use YAML (the default) are deserialized, Rails uses YAML.unsafe_load to convert the YAML data in to Ruby objects. If an attacker can manipulate data in the database (via means like SQL injection), then it may be possible for the attacker to escalate to an RCE. Impacted Active Record models will look something like this: class User < ApplicationRecord serialize :options # Vulnerable: Uses YAML for serialization serialize :values, Array # Vulnerable: Uses YAML for serialization serialize :values, JSON # Not vulnerable end The released versions change the default YAML deserializer to use YAML.safe_load, which prevents deserialization of possibly dangerous objects. This may introduce backwards compatibility issues with existing data.

Workaround

There is no known workaround at this time.

Resolution

All Ruby on Rails users should upgrade to the latest version:

 # emerge --sync
 # emerge --ask --oneshot --verbose ">=dev-ruby/rails-6.1.6.1:6.1"
 # emerge --ask --oneshot --verbose ">=dev-ruby/rails-7.0.3.1:7.0"
 

References

Release date
August 11, 2024

Latest revision
August 11, 2024: 1

Severity
normal

Exploitable
remote

Bugzilla entries