Unsafe Marshal deserialization in the parser cache can lead to arbitrary Ruby code execution
Published: August 17, 2026
SECURITY IDENTIFIERS
- GHSA: GHSA-rmxg-5p3r-j6hh
- Vendor Advisory: https://github.com/rmosolgo/graphql-ruby/security/advisories/GHSA-rmxg-5p3r-j6hh
GEM
UNAFFECTED VERSIONS
< 1.12.6
PATCHED VERSIONS
>= 2.6.9
DESCRIPTION
GraphQL::Language::Cache#fetch reads parser cache files and passes their contents directly to Marshal.load without authenticating the payloads. If an attacker can place a crafted payload in the expected path and the application calls GraphQL::Language::Parser.parse_file, then attacker-controlled marshal_load or _load methods are executed, resulting in arbitrary Ruby code execution in the application process.
