Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconDeliver crafted .res resource file to victim
-
DeliveryVictim loads file in editor or exported game
-
Exploitget_unicode_string reads negative signed length
-
InstallSigned comparison skips buffer resize
-
C2Length sign-extends to huge unsigned copy size
-
ExecuteHeap out-of-bounds write of file-controlled data
-
ImpactMemory 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:N
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.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
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
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
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.
More in Godot Engine
View allA stack overflow issue exists in Godot Engine up to v3.2 and is caused by improper boundary checks when loading .TGA ima
An integer overflow issue exists in Godot Engine up to v3.2 that can be triggered when loading specially crafted.TGA ima
Heap out-of-bounds write in the Radiance HDR (.hdr) image decoder of Godot Engine through 4.7.2 allows an attacker-suppl
EUVD-2026-101305
GHSA-qpjh-gxxf-v482
NVD
CVE.org
EPSS
Exploit-DB