Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPOST crafted YAML to /api/1.0/symbolication
-
DeliveryStore payload under attacker UUID
-
ExploitOccurrence referencing UUID triggers symbolication
-
ExecutionYAML.load deserializes in unsafe mode
-
ImpactArbitrary Ruby object execution (RCE)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Two concrete steps are required: (1) an attacker stores crafted YAML via the unauthenticated POST /api/1.0/symbolication endpoint under a chosen symbolication UUID, and (2) the deserialization only fires when occurrences referencing that attacker-controlled UUID are later symbolicated, at which point the stored value reaches YAML.load. The critical enabling configuration is SafeYAML operating in unsafe mode (per config/preinitializers/safe_yaml.rb), which permits arbitrary Ruby object deserialization. The principal limiting factor is this deferred trigger - exploitation is not instantaneous on request but depends on the symbolication worker processing referencing occurrences - matching the CVSS AC:H (high complexity) and AT:P (present attack requirement) metrics; no authentication or user interaction is required. |
| Impact | Multiple signals point to a genuinely high technical-impact flaw but a constrained real-world threat. The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N) confirms a network-reachable, unauthenticated entry point with full VC:H/VI:H/VA:H impact (CWE-502 deserialization leading to RCE), which rightly drives the 9.2 score. However, two deflating signals coexist: AC:H and AT:P indicate the attack is NOT turn-key - exploitation requires a specific precondition beyond merely sending the payload (the stored crafted YAML must subsequently be processed when occurrences referencing the attacker-controlled symbolication UUID are symbolicated). A public POC/exploit exists (VulnCheck advisory and a hackmd write-up), raising practical exploitability, but this is NOT the same as active exploitation: the CVE is not listed in CISA KEV and no EPSS score was provided in the input, so widespread opportunistic exploitation cannot be asserted. Net: this is a real, patch-worthy RCE for anyone running Square Squash, but the affected product is a niche, largely unmaintained open-source tool, so prioritization should be driven by whether the product is actually deployed rather than by the headline 9.2. Missing data to note explicitly: no EPSS and no KEV entry were supplied, and no fixed version is given (the advisory describes the state 'through commit e73f280'), so patch status could not be independently confirmed. |
| Exploit ScenarioDerived | A remote, unauthenticated attacker sends a POST request to /api/1.0/symbolication containing a crafted YAML payload, which Squash stores under an attacker-chosen symbolication UUID. When the application later symbolicates occurrences that reference that UUID, the stored value is passed to YAML.load with SafeYAML running in unsafe mode, deserializing arbitrary Ruby objects and achieving code execution on the server. A public proof-of-concept exploit is available (VulnCheck/hackmd), but the attacker must wait for or induce the symbolication-processing step, consistent with the CVSS AC:H/AT:P rating. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Unauthenticated remote code execution is achievable in Square Squash (all versions through commit e73f280) through a two-stage YAML deserialization path in the symbolication API. An attacker first stores crafted YAML under a chosen symbolication UUID using the unauthenticated POST /api/1.0/symbolication endpoint; the payload only detonates when occurrences referencing that UUID are later processed by the symbolication worker, at which point the stored value is passed to YAML.load with SafeYAML running in unsafe mode, permitting arbitrary Ruby object instantiation and code execution. Publicly available exploit code exists, and no CISA KEV listing confirms active exploitation; exploitation is deferred rather than immediate, which is why the assessed complexity is high (AC:H) despite requiring no authentication or user interaction.
RemediationAI
No vendor-released patch identified at time of analysis; the only upstream artifacts referenced are the vulnerable source files pinned at commit e73f280, so remediation must be compensating rather than patch-driven until Square publishes a fixed revision. The most direct control is to stop running SafeYAML in unsafe mode: remove or harden config/preinitializers/safe_yaml.rb so that YAML.load falls back to safe loading with an explicit permitted-class allowlist (or replace the call with YAML.safe_load), which closes the deserialization primitive outright but may break symbolication payloads that legitimately rely on tagged Ruby types - validate those formats before enforcing. Second, restrict the unauthenticated POST /api/1.0/symbolication endpoint at the network layer (reverse-proxy rules, mTLS, or IP allowlisting) so only trusted CI/build infrastructure can submit payloads; the trade-off is that arbitrary client reporting paths in the sample app will stop working until they are re-authenticated. Third, constrain the symbolication worker so it cannot be induced to process attacker-chosen UUIDs, for example by validating that UUIDs were issued server-side and by isolating the worker (unprivileged container, no outbound network, read-only filesystem) to blunt gadget-chain impact if deserialization still occurs. Finally, rotate any secrets or credentials reachable from the Squash process and review symbolication records for tampered YAML, since successful exploitation grants full code execution in the application context. Reference material for validation and monitoring is available at the VulnCheck advisory and the public exploit write-up at https://hackmd.io/@1ExmmukzRMWN7B4gQ4W-4Q/HJ87QX5ifg.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is CWE-502 (deserialization of untrusted data) in the Ruby on Rails web component of Square Squash. The application preinitializer at config/preinitializers/safe_yaml.rb configures the SafeYAML library in unsafe mode, which means YAML.load no longer restricts object instantiation and will honor Ruby type tags such as !ruby/object, opening the door to classic Ruby deserialization gadget chains that terminate in code execution. The ingestion surface is app/controllers/api/v1_controller.rb, which exposes POST /api/1.0/symbolication without authentication and persists attacker-supplied YAML keyed by a symbolication UUID. Actual deserialization happens asynchronously in lib/workers/symbolication_creator.rb, which consumes records modeled in app/models/symbolication.rb; the attacker must therefore induce a later symbolication request referencing the poisoned UUID to reach the vulnerable YAML.load call. The upstream code at commit e73f280 is referenced directly in the advisory material, and the affected product is captured by CPE cpe:2.3:a:square:squash:*:*:*:*:*:*:*:* - effectively the entire SquareSquash/web codebase as of that commit.
Know when Ruby On Rails gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Unauthenticated network endpoint stores the payload (PR:N/AV:N), but RCE triggers only via deferred symbolication of referencing occurrences (AC:H); full host compromise within one authority yields C/I/A:H and S:U.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Square Squash through commit e73f280 contains an insecure deserialization vulnerability that allows unauthenticated attackers to store crafted YAML via the POST /api/1.0/symbolication endpoint. When occurrences referencing the attacker-controlled symbolication UUID are symbolicated, the stored values are passed to YAML.load with SafeYAML in unsafe mode, enabling arbitrary Ruby object deserialization and potential code execution.
Executive ViewAI
Square Squash, the crash-symbolication service used to process application telemetry, contains a critical remote code execution flaw in its symbolication API that can be triggered by storing crafted data through a public-facing endpoint and detonating later when that data is processed by the symbolication worker. Because the vulnerable code runs with the worker's privileges, a successful attack could allow an adversary to execute arbitrary code on symbolication infrastructure, exposing internal systems, source artifacts, and any data those workers can reach. Leadership should care because this affects a component that typically sits on the network edge and is frequently granted access to build, storage, and credential material, and the deferred nature of the trigger means exploitation may not be obvious in real time.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict or block external access to the POST /api/1.0/symbolication endpoint; disable SafeYAML unsafe mode in favor of SafeYAML.safe_load; reject YAML containing Ruby object tags; run symbolication workers isolated with least privilege and no inbound reachability; monitor for anomalous deserialization and worker process activity.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
More in Ruby On Rails
View alllib/active_support/json/backends/yaml.rb in Ruby on Rails 2.3.x before 2.3.16 and 3.0.x before 3.0.20 does not properly
active_support/core_ext/hash/conversions.rb in Ruby on Rails before 2.3.15, 3.0.x before 3.0.19, 3.1.x before 3.1.10, an
Action Pack in Ruby on Rails before 3.2.22.2, 4.x before 4.1.14.2, and 4.2.x before 4.2.5.2 allows remote attackers to e
actionpack/lib/action_view/lookup_context.rb in Action View in Ruby on Rails 3.x before 3.2.16 and 4.x before 4.0.2 allo
SQL injection vulnerability in the 'order' method in Ruby on Rails 5.1.4 and earlier allows remote attackers to execute
SQL injection vulnerability in the 'reorder' method in Ruby on Rails 5.1.4 and earlier allows remote attackers to execut
SQL injection vulnerability in the Active Record component in Ruby on Rails before 3.0.18, 3.1.x before 3.1.9, and 3.2.x
The Active Record component in Ruby on Rails before 3.0.14, 3.1.x before 3.1.6, and 3.2.x before 3.2.6 does not properly
ActiveRecord in Ruby on Rails before 2.3.17 and 3.x before 3.1.0 allows remote attackers to cause a denial of service or
Authenticated store customers can seize other shoppers' guest carts in Spree Commerce by calling PATCH /api/v3/store/car
The Active Record component in Ruby on Rails 2.3.x, 3.0.x, 3.1.x, and 3.2.x does not ensure that the declared data type
actionpack/lib/action_dispatch/http/request.rb in Ruby on Rails before 3.0.13, 3.1.x before 3.1.5, and 3.2.x before 3.2.
EUVD-2026-97489
GHSA-f7j3-hchq-qp35
NVD
CVE.org
EPSS
Exploit-DB