Skip to main content

Gosub Engine EUVDEUVD-2026-89554

| CVE-2026-103087 HIGH
Uncontrolled Recursion (CWE-674)
2026-09-30 mitre GHSA-pj55-j4f4-8jj5
7.1
CVSS 4.0 · Vendor: mitre
View

Attack ChainAIDerived

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

  1. Access
    Host page with nested-SVG in IMG SRC
  2. Delivery
    Victim visits attacker-controlled page
  3. Exploit
    Engine recurses over unbounded SVG node depth
  4. Execution
    Thread stack overflows
  5. Impact
    Application crashes (DoS)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
Exploitation Conditions

Exploitation requires the victim to open, in an application built on the Gosub engine, an attacker-controlled web page that embeds a malicious SVG document (an SVG with an excessive number of deeply nested elements) via the SRC attribute of an IMG element. No authentication is needed (PR:N) and the attack is remote (AV:N), but it does require passive user interaction (UI:P) - the victim must visit the page for the engine to render the SVG. The affected code has no SVG node-nesting depth limit; the fix introduces one plus a stacker-based stack growth guard. The practical limiting factor is deployment: only software embedding gosub-engine through 0.1.0 / main before commit 46868b3 is affected. Impact is confined to a crash of the affected application (availability); no data exposure or code execution occurs.

Impact

This is a genuine but low-priority availability-only issue. All signals align on impact: the vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H) rates it 7.1 with availability-high and confidentiality/integrity none, matching CWE-674 (uncontrolled recursion) and the described stack-exhaustion crash - there is no memory-safety code execution here, only a Denial of Service. The vector is network-reachable and unauthenticated but requires passive user interaction (UI:P - the victim must visit a page). There is no EPSS score, no CISA KEV listing, and no public exploit code identified at time of analysis; no SSVC decision was provided. The dominant risk-limiting factor is prevalence, not the flaw itself: gosub-engine is an early-stage, experimental Rust browser engine (versions through 0.1.0), so real-world exposure is minimal. Signals are internally consistent - no conflicts between the CVSS vector and the description. Net: real defect, cleanly patched, but not an operational priority outside of developers building on this specific engine.

Exploit ScenarioDerived

An attacker crafts an SVG document containing thousands of deeply nested elements (e.g., recursively nested <g> groups) and embeds it via the SRC attribute of an <img> element on a web page they control. When a victim using an application built on the Gosub engine visits that page, the engine recursively walks the SVG node tree with no depth limit, overflowing the ~2 MiB worker thread stack and crashing the application. No public proof-of-concept exploit has been identified, though the fix's added SVG-limits fuzzer illustrates the trigger.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 30, 2026

Stack exhaustion in the Gosub browser engine (gosub-engine through 0.1.0 and main before commit 46868b3) lets a remote, unauthenticated attacker crash any application built on the engine by getting it to render an SVG document containing an excessive number of deeply nested elements. The malicious SVG can be embedded via the SRC attribute of an IMG element on an attacker-controlled page, so exploitation requires only that a victim visit that page (UI:P) - no credentials are needed (PR:N) and the attack is network-reachable (AV:N). Impact is availability-only (a hard crash of the host application; no data exposure or code execution), no public exploit code has been identified at time of analysis, and the practical exposure is limited to the narrow set of deployments embedding the engine at those revisions, making this a genuine but low-priority issue.

RemediationAI

Apply the upstream fix at commit 46868b3, delivered through pull request #1229 (https://github.com/gosub-io/gosub-engine/pull/1229) and documented in GHSA-c762-mxfh-vwvp (https://github.com/gosub-io/gosub-engine/security/advisories/GHSA-c762-mxfh-vwvp); it caps SVG/XML element nesting depth and adds a stacker-based stack-growth guard, and note that patch status is "upstream fix available (PR/commit); released patched version not independently confirmed," so rebuild against the fixed revision or vendor source rather than waiting on a tagged crate. Until that rebuild lands, a practical compensating control is to fetch and render untrusted images/SVG out-of-process so a stack overflow takes down only the sandboxed renderer, not the host application - the trade-off is added IPC complexity and the need for crash detection, supervision, and automatic restart. A cheaper containment step is to raise the render worker's stack via RUST_MIN_STACK or an explicitly sized std::thread builder around the SVG layout path, which delays but does not eliminate exhaustion for sufficiently deep documents and increases per-thread memory. Finally, you can reduce reachability by disabling or proxying remote IMG/SVG loading (for example, a strict img-src policy or a fetch proxy that rejects or flattens SVG with abnormal nesting depth before it reaches the engine); the cost is broken or degraded images for legitimate content and a new filter to maintain. Note that none of these controls substitute for the depth-limit fix, and monitoring should treat an unexplained engine process abort as a possible exploitation attempt.

Affected VersionsENISA

gosub-engine 0 <46868b3deae44544bee2a13e756772966dde950e

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 root cause is CWE-674 (uncontrolled recursion): the engine's DOM serialization walk in crates/gosub_html5/src/writer.rs recursed once per node with no bound on element nesting depth, and it is reached on the layout path for inline SVG content such as deeply nested <g> elements. Under tokio's roughly 2 MiB worker-thread stacks, attacker-controlled nesting depth translates directly into stack usage, overflows the thread stack, and aborts the process. The engine is written in Rust and parses markup with XML/DOM tooling (the fix PR pulls in roxmltree 0.21.1 alongside the flate2 and stacker crates), so the vulnerable surface is the SVG/XML parse-and-render pipeline rather than any network-facing protocol. Accordingly, the CPE cpe:2.3:a:gosub-io:gosub-engine:*:*:*:*:*:*:*:* covers every published revision up through 0.1.0. The upstream fix addresses the class of bug in two complementary ways: it rewrites the recursive serializer as an explicit heap-allocated work stack (Step::Enter / Step::Close / Step::ShadowRoot variants) so depth costs memory instead of call-stack frames, and it adds the stacker crate as a stack-growth guard, plus a dedicated fuzz harness (fuzz-svg-limits) that exercises the SVG nesting scanner against the real XML parser.

Know when Gosub Engine 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 (mitre) PRIMARY 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Remote unauthenticated with no complexity, but the victim must open a page (UI:R); crash of the engine yields A:H only, no C/I impact.

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

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

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

DescriptionCVE.org

Uncontrolled recursion in the Gosub browser engine (gosub-engine) through 0.1.0 and main before commit 46868b3 allows a remote attacker to cause a Denial of Service (stack exhaustion and application crash) via an SVG document containing an excessive number of deeply nested elements. Because the engine does not limit the nesting depth of processed SVG nodes, rendering such a document overflows the thread stack and terminates the application. The malicious SVG can be embedded through the SRC attribute of an IMG element, and thus exploitation only requires the victim to visit an attacker-controlled web page.

Technical POC Analysis

CWE-674, Uncontrolled Recursion.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

The Gosub browser engine, used by applications to render web content, contains a stack exhaustion vulnerability that can crash any affected application when a user views a malicious SVG document. Only deployments built on engine versions through 0.1.0 or the main branch before commit 46868b3 are impacted, and exploitation requires no credentials, just a victim visiting an attacker-controlled page. While the flaw is availability-only and no public exploit code has been identified, a crash could disrupt business operations for organizations relying on the engine.

Business Impact: Low
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
Rare
experimental early-stage (0.1.0) hobby Rust browser engine, negligible production footprint
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Low
Technical Impact
Partial

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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