Skip to main content

Square Squash EUVDEUVD-2026-97489

| CVE-2026-109391 CRITICAL
Deserialization of Untrusted Data (CWE-502)
2026-10-12 VulnCheck GHSA-f7j3-hchq-qp35
9.2
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    POST crafted YAML to /api/1.0/symbolication
  2. Delivery
    Store payload under attacker UUID
  3. Exploit
    Occurrence referencing UUID triggers symbolication
  4. Execution
    YAML.load deserializes in unsafe mode
  5. Impact
    Arbitrary 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.

Monitor Track and reassess. Why: Vendor states no customer action required.
No patch listed yet 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Squash 0 ≤e73f2805f9eb30780a5c213b001f0f4255660fbf

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

Vendor (VulnCheck) PRIMARY 9.2 CRITICAL
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
vuln.today AI 8.1 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: Severe
Compensating Controls

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

EPSS Score
0.5%
Top 61% exploitable
Prevalence
Low
niche, largely unmaintained open-source error-tracking tool; minimal enterprise footprint
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC Yes
EPSS 0.5%
Patch available No
Active threat No
Deciding rule
Vendor states no customer action required
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Out-of-Cycle
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Very High

Priority Score

66
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

CVE-2013-0333 HIGH POC
7.5 Jan 30

lib/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

CVE-2013-0156 HIGH POC
7.5 Jan 13

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

CVE-2016-2098 HIGH POC
7.3 Apr 07

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

CVE-2013-6414 MEDIUM POC
5.0 Dec 07

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

CVE-2017-17919 HIGH POC
8.1 Dec 29

SQL injection vulnerability in the 'order' method in Ruby on Rails 5.1.4 and earlier allows remote attackers to execute

CVE-2017-17920 HIGH POC
8.1 Dec 29

SQL injection vulnerability in the 'reorder' method in Ruby on Rails 5.1.4 and earlier allows remote attackers to execut

CVE-2012-6496 HIGH POC
7.5 Jan 04

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

CVE-2012-2695 HIGH POC
7.5 Jun 22

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

CVE-2013-0277 CRITICAL
10.0 Feb 13

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

CVE-2026-94462 HIGH POC
7.1 Sep 22

Authenticated store customers can seize other shoppers' guest carts in Spree Commerce by calling PATCH /api/v3/store/car

CVE-2013-3221 MEDIUM POC
6.4 Apr 22

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

CVE-2012-2660 MEDIUM POC
6.4 Jun 22

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.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy