Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft malicious .sla packed stream
-
DeliveryDeliver file to Ghidra analyst
-
ExploitAnalyst loads file, decompiler parses it
-
ExecutionInteger truncation under-skips string, cursor stays in attacker data
-
ImpactParser reinterprets content, injects attributes or crashes decompiler
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Numeric truncation prevention
|
| Exploitation Conditions | Exploitation requires an analyst to open or import a crafted packed stream - such as a malicious .sla file or other decompiler input that reaches PackedDecode::skipAttribute/skipAttributeRemaining during openElement attribute scanning - into Ghidra; this is reflected by AV:L (local file processing) and UI:P (the victim must load the file). Default Ghidra configurations parse such input, so no special feature toggle is needed, but the attacker must deliver the file and rely on the analyst processing attacker-supplied material, which is the core limiting factor. Impact is bounded to the decompiler process (parser confusion, attribute injection, or crash) with no confidentiality impact (VC:N) and only limited integrity/availability effects; the AT:P requirement reflects that a specific crafted length value (0x100000000-style) is needed to trigger the truncation, and the exact triggering conditions beyond this are as described in the GHSA source analysis. |
| Impact | This is a genuinely low-priority issue, and the signals agree. The CVSS 4.0 base score is 2.0 (Low) with vector AV:L/AC:L/AT:P/PR:N/UI:P and only limited integrity/availability impact (VI:L/VA:L, VC:N) - confirming a local, user-interaction-dependent flaw with no confidentiality exposure and no remote reach. The vuln.today Decision label is 'monitor', the weakest urgency tier, consistent with the low score. There is no CISA KEV listing and no EPSS score was provided; exploitation status is no public exploit identified at time of analysis - the VulnCheck and GHSA references are vendor/finder advisories and a patch commit, not working exploit code. The one cross-signal nuance: the GHSA advisory stresses that this parser-state corruption 'can chain with the handle_index and operand index OOB vulnerabilities in the same codebase,' so the real risk is higher as a chaining primitive than as a standalone bug, though those other flaws are outside this record and unverified here. Net: a real but low-severity defect whose worst realistic outcome is a crashed or confused decompiler process on a reverse engineer's workstation, not a widespread exploitation threat. |
| Exploit ScenarioDerived | An attacker crafts a malicious packed stream (such as a booby-trapped .sla SLEIGH file or other decompiler input) and gets a reverse engineer or malware analyst to load it into Ghidra. When the decompiler's PackedDecode parser skips a string attribute whose length is 0x100000000, the 64-bit length truncates to 0, leaving the parser cursor inside attacker-controlled data that is then re-interpreted as legitimate packed protocol elements, injecting arbitrary attributes or crashing the decompiler process. No public working exploit code is identified at this time. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 24, 2026
Integer truncation in Ghidra's decompiler packed-stream parser (PackedDecode::skipAttribute and skipAttributeRemaining in marshal.cc) causes the parser cursor to under-skip string attributes when a crafted length such as 0x100000000 is supplied, so the cursor remains inside attacker-controlled string data that is then decoded as legitimate protocol elements. Any Ghidra release before 12.2 is affected; an analyst must open or import a malicious packed stream such as a crafted .sla file, after which the decompiler process can be made to misinterpret data, inject attributes into its input stream, or crash. Impact is bounded to the decompiler process with no confidentiality effect and only limited integrity/availability impact; no public exploit was identified at time of analysis and the issue is not in CISA KEV, so this is a low-priority, patch-when-convenient fix rather than an emergency.
RemediationAI
Upgrade to Ghidra 12.2 (the Ghidra_12.2_build release) or later; the fix is contained in commit d105789b331dba84ad73ab92db890e38fe665be0, which widens the length variable in PackedDecode::skipAttribute and skipAttributeRemaining and the advancePosition skip argument from uint4 to uint8 so 64-bit string lengths are no longer truncated. Full details and any vendor workaround guidance are in the GitHub security advisory https://github.com/NationalSecurityAgency/ghidra/security/advisories/GHSA-v423-5vh7-c7jw and the release notes at https://github.com/NationalSecurityAgency/ghidra/releases/tag/Ghidra_12.2_build. If upgrading must wait, the practical compensating control is to avoid opening or importing .sla files or other decompiler packed streams of untrusted provenance, since the flaw requires the analyst to load a crafted file - the trade-off being that analysts cannot process third-party or shared Ghidra artifacts until the build is patched.
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
Ghidra's decompiler exchanges data with the rest of the toolchain through a packed binary marshal format implemented in Ghidra/Features/Decompiler/src/decompile/cpp/marshal.cc. PackedDecode::readInteger(int4 len) is declared to return a 64-bit uint8, but in skipAttribute (around marsh.cc lines 651-655) and the identical skipAttributeRemaining (lines 667-671) the returned length was stored in a 32-bit uint4 variable before being passed to advancePosition(Position&, uint4). A string attribute encoding a length of 0x100000000 therefore truncates to zero, advancePosition moves the cursor nowhere, and the byte reader continues from inside the string payload; if that payload is shaped like valid packed-format headers, the parser accepts the injected bytes as real attributes and elements (parser state corruption / attribute injection). The root cause is a numeric truncation (CWE-197, also classed CWE-681), and notably readString in the same file already used uint8 for this length, showing the 64-bit requirement was known elsewhere. The upstream fix changes both skip functions and advancePosition's skip parameter from uint4 to uint8. Because the corruption lets an attacker place arbitrary attribute values into the decode path, it can be chained with handle_index and operand-index out-of-bounds issues in the same codebase; on its own it produces decompiler misinterpretation, undefined behavior, or a crash. The trigger is a crafted packed stream reaching attribute scanning during openElement.
Know when Ghidra 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:L/AC:L/AT:P/PR:N/UI:P/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N
Exploitation requires an analyst to open a crafted file locally (AV:L, UI:R), no auth (PR:N); impact is limited parser corruption and decompiler crash (I:L/A:L) with no data disclosure (C:N).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Ghidra before 12.2 contains a numeric truncation vulnerability in PackedDecode::skipAttribute and skipAttributeRemaining in marshal.cc that stores 64-bit string lengths in 32-bit variables. Attackers can supply a crafted packed stream, such as a malicious .sla file, to inject attributes into the decompiler's input or crash the decompiler process.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Ghidra/RuntimeScripts/Linux/support/launch.sh in NSA Ghidra through 10.2.2 passes user-provided input into eval, leading
NSA Ghidra through 9.0.4, when experimental mode is enabled, allows arbitrary code execution if the Read XML Files featu
NSA Ghidra before 9.0.1 allows XXE when a project is opened or restored, or a tool is imported, as demonstrated by a pro
NSA Ghidra before 9.0.2 is vulnerable to DLL hijacking because it loads jansi.dll from the current working directory. Ra
In NSA Ghidra before 9.1, path traversal can occur in RestoreTask.java (from the package ghidra.app.plugin.core.archive)
Command injection in NSA Ghidra (versions before 12.0.3) executes arbitrary commands when analysts click on maliciously
SQL injection in Ghidra's BSim binary-similarity component (versions before 12.1) allows authenticated remote attackers
Authentication bypass in NSA Ghidra versions prior to 12.1 allows any holder of a valid CA-signed certificate to imperso
SQL injection in Ghidra's PostgreSQL collaboration backend (versions 11.0 through pre-12.1) allows authenticated users t
Remote code execution in NSA Ghidra before version 12.1 allows attackers to execute arbitrary commands when a user opens
Command injection in Ghidra versions before 12.1 on Windows allows attackers to execute arbitrary OS commands under the
Arbitrary file write in NSA's Ghidra reverse-engineering framework before version 12.0.4 allows attackers to escape the
EUVD-2026-109270
GHSA-5r3f-xv7p-f23m
NVD
CVE.org
EPSS
Exploit-DB