Summary

The JSON Parsing code in Rails 2.3 and 3.0 support multiple parsing backends. One of the backends involves transforming the JSON into YAML, and passing that through the YAML parser. Using a specially crafted payload, attackers can trick the backend into decoding a subset of YAML.

Impact

An attacker can execute arbitrary Ruby on Rails (RoR) code on the system. The attacker may also be able to execute arbitrary system commands.

Remediation

Upgrade to version 2.3.16, 3.0.20, or higher, to address this vulnerability. If you are unable to upgrade, or apply the patches, you can work around this vulnerability by switching backends to the JSONGem backend. Place this code in an application initializer:
ActiveSupport::JSON.backend = "JSONGem"

Required Skills for Successful Exploitation

This vulnerability is not difficult to leverage, RoR is a high level language for which there are vast resources available. Successful exploitation requires knowledge of the programming language, access to or the ability to produce source code for use in such attacks and minimal attack skills.

Severity

Critical

Classification

PCI v3.2-6.5.1 CAPEC-356 CWE-94 HIPAA-164.306(a) 164.308(a) ISO27001-A.14.2.5 WASC-23 OWASP 2013-A1 OWASP 2017-A1 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N