Skip to main content

Godot Engine EUVDEUVD-2026-101305

| CVE-2026-110735 LOW
Signed to Unsigned Conversion Error (CWE-195)
2026-10-14 mitre GHSA-qpjh-gxxf-v482
2.5
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

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

  1. Recon
    Deliver crafted .res resource file to victim
  2. Delivery
    Victim loads file in editor or exported game
  3. Exploit
    get_unicode_string reads negative signed length
  4. Install
    Signed comparison skips buffer resize
  5. C2
    Length sign-extends to huge unsigned copy size
  6. Execute
    Heap out-of-bounds write of file-controlled data
  7. Impact
    Memory corruption / potential code execution

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Signed/unsigned conversion safety
Exploitation Conditions

Requires the victim to load a specifically crafted Godot binary resource (.res) file - either opened in the Godot editor or loaded at runtime by an exported game that ingests external or user-supplied resource files (mods, downloaded assets, user-generated content). The crafted file must encode a negative value in the signed 32-bit Unicode-string length field so the signed size comparison skips the buffer resize and the value sign-extends into a large unsigned copy count. LIMITING FACTORS: (1) the attacker must get a malicious .res file to reach and be loaded by the victim (local vector, user interaction), raising delivery difficulty; (2) reliable code execution requires heap-grooming (high attack complexity); (3) the vendor considers loading untrusted .res files outside Godot's threat model, so default/intended usage treats resource files as trusted - the condition is primarily relevant to deployments that process third-party or untrusted resource files.

Impact

This is a low-urgency, technically-interesting issue rather than an operational emergency. The input CVSS 3.1 vector (AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:N, base 2.5) models the flaw as a local, high-complexity, user-interaction-dependent bug with only low integrity impact - which materially UNDERSTATES the technical primitive. CWE-195 combined with the description (signed 32-bit length, skipped resize, sign-extension to an unsigned byte count, file-controlled copy past an undersized heap allocation) is a classic heap out-of-bounds write that in principle enables memory corruption up to arbitrary code execution, so the I:L/C:N/A:N impact rating is conservative and arguably wrong - see assessed_cvss_vector where I rate impact higher. On the real-world-risk side, however, the mitigating signals dominate: no EPSS score was provided, there is NO CISA KEV listing, and NO public exploit was identified in the input (a referenced research write-up discusses the memory-safety bugs but is not confirmed weaponized exploit code). No SSVC decision data was supplied. Critically, the Supplier (Godot) explicitly disputes this as a security issue, arguing that loading an untrusted/crafted .res file is OUTSIDE the current Godot Engine threat model - i.e., resource files are assumed trusted, analogous to loading native code. CONFLICT TO FLAG: the raw CWE/heap-write severity conflicts with both the low CVSS and the vendor's not-a-vuln position; prioritization should hinge on whether your deployment ever loads untrusted .res files (e.g., user-generated content, mods, downloaded game assets). For default single-trust-domain game distribution, real risk is low; for engines/games that ingest third-party resource files, treat it as a genuine memory-corruption exposure.

Exploit ScenarioDerived

An attacker crafts a malicious Godot binary resource (.res) file encoding a negative 32-bit Unicode-string length, then delivers it to a victim who loads it in the Godot editor or via an exported game that ingests external/user-supplied resource files (e.g., mods or downloaded assets). When ResourceLoaderBinary::get_unicode_string processes it, the negative length skips the buffer resize and sign-extends to a huge unsigned copy size, writing file-controlled data far past the undersized heap allocation. Exploitation requires user interaction to open the file and high complexity (heap layout control for reliable code execution); no public weaponized exploit was identified in the provided data.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 14, 2026

A heap out-of-bounds write in Godot Engine through 4.7.2 is reachable when the engine (or an exported game built with it) loads a specially crafted binary resource file (.res). A negative Unicode-string length field read from the file bypasses the buffer-resize check and is then sign-extended into a very large unsigned copy count, causing file-controlled data to be written far past an undersized heap allocation. The attack is local and requires the victim to open a malicious .res file in the editor or to load it at runtime in a game that ingests external assets such as mods or user-supplied content, and reliable code execution demands heap grooming (high complexity); no public exploit code and no confirmed active exploitation were identified at time of analysis. Note that the supplier disputes the security relevance, arguing that loading untrusted resource files is outside Godot's threat model, whereas independent assessment rates the confidentiality, integrity and availability impact of a successful trigger as High.

RemediationAI

No vendor-released patch or fixed version could be confirmed from the available data at time of analysis; the referenced upstream item is a GitHub issue, not a tagged release or merged fix commit, so organizations should track https://github.com/godotengine/godot/issues/123608 and apply the patched engine build as soon as one is published, then rebuild and re-export affected games with that version. Because the vendor considers loading untrusted resource files outside Godot's threat model, the most effective near-term control is to treat every .res file as trusted input: do not open projects, resource files or mods from untrusted sources in the Godot editor, and avoid distributing or accepting .res-based mods or asset packs. Where untrusted content loading is a required product feature, run the Godot editor or exported game with least privilege in an OS-level sandbox (container, AppArmor/SELinux profile, or a low-privilege account), accepting that strict sandboxing may break asset-loading or mod functionality and can degrade rendering/input performance. Additional compensating measures include disabling or restricting any in-product mod/user-content loading paths that accept .res files, validating or re-serializing resource files through a trusted build before use, and enabling platform heap-hardening (ASLR plus allocator hardening) to raise the difficulty of turning the out-of-bounds write into code execution - none of these eliminate the underlying bug, and all should be viewed as temporary until an official engine fix is available.

Affected VersionsENISA

Godot Engine 1.0.0 ≤4.7.2

Affected Packages

euvd godot_engine no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The defect is a signed-to-unsigned conversion error (CWE-195) in Godot's binary resource loader at core/io/resource_format_binary.cpp, function ResourceLoaderBinary::get_unicode_string. When parsing a .res resource file, the loader reads a string length into a signed 32-bit integer and compares it against the destination buffer size using a signed comparison; a negative value therefore fails the size check and skips the conditional buffer resize. That same negative value is then passed to the copy routine where it is interpreted as an unsigned byte count, sign-extending to a very large value and copying attacker-controlled file contents well beyond the end of the undersized heap allocation. The vulnerable component is Godot's binary resource serialization format, used by .res resources and by exported projects that pack and load assets at runtime. The CPE string cpe:2.3:a:godotengine:godot_engine:*:*:*:*:*:*:*:* covers all tracked versions through 4.7.2 with no version constraint in the feed, so every build up to and including 4.7.2 should be treated as affected. Public technical analysis of this and related parser bugs is available, but the exploitability path in default usage is constrained: intended Godot workflows treat resource files as trusted content.

Know when Godot 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 2.5 LOW
AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:N
vuln.today AI 7.0 HIGH

File must be delivered and opened locally (AV:L, UI:R) and reliable corruption needs heap control (AC:H); a file-controlled heap OOB write is a strong memory-corruption primitive, so C/I/A:H rather than the input's I:L.

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

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

Attack Vector
Local
Attack Complexity
High
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

DescriptionCVE.org

Godot Engine through 4.7.2 has a heap out-of-bounds write exists in the binary resource loader (core/io/resource_format_binary.cpp, ResourceLoaderBinary::get_unicode_string). A string length is read from the resource file into a signed 32-bit integer and compared against the destination buffer size with a signed comparison, which conditionally resizes the buffer. A negative length value skips the resize; the same value is then passed to the copy routine as an unsigned byte count, where it sign-extends to a huge value, copying file-controlled data far past the undersized heap allocation. The defect is reached when the product or an exported game loads a crafted binary resource file (.res). NOTE: the Supplier's position is that the research has identified "no security issues" because the required attacker access is outside of the current Godot Engine threat model.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Medium
popular open-source game engine with large indie/hobbyist developer footprint, not infrastructure-ubiquitous
Data Quality
5 sources
Confidence: Medium

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 LOW
CISA KEV No
Public POC No
EPSS 0.1%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Low

Priority Score

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

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