Skip to main content

Ghidra CVE-2026-115394

| EUVDEUVD-2026-108329 MEDIUM
Memory Allocation with Excessive Size Value (CWE-789)
2026-10-22 disclosure@vulncheck.com GHSA-cj2j-2w64-7q9c
6.8
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

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

  1. Access
    Distribute crafted GZF packed database file
  2. Delivery
    Victim or pipeline imports the file
  3. Exploit
    BinaryField.read() passes unchecked 32-bit length to DataBuffer.get()
  4. Execution
    Huge byte[] allocation triggers Java heap OutOfMemoryError
  5. Impact
    Import aborts and Ghidra JVM session/pipeline crashes

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory allocation limits
Exploitation Conditions

Exploitation requires a user (or an automated headless Ghidra instance) to import a crafted GZF packed database file through the GzfLoader import path; the malicious file must contain a DB BinaryField record whose 32-bit length field is set to an arbitrarily large value. Triggering factors that LIMIT exploitation: passive user interaction is required (UI:P) - the victim must be persuaded to import the attacker-supplied file, and the vector is local (AV:L), so there is no remote unauthenticated network exposure. No authentication or privileges are needed (PR:N). Impact is confined to availability (process crash and loss of unsaved work); the condition that most amplifies real risk is deployment in automated binary-analysis/triage pipelines using headless Ghidra, where a single malicious sample crashes the processing queue. All versions through 12.2 are affected; the fix is upgrading to 12.2.

Impact

This is a medium-severity, availability-only denial-of-service issue, not a high-impact priority. The vendor CVSS 4.0 vector (CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H) scores 6.8 and confirms the shape: local attack vector, low complexity, no privileges (PR:N), but passive user interaction required (UI:P), and impact limited strictly to availability (VC:N/VI:N/VA:H) - there is no confidentiality or integrity loss. Exploitation status is 'no public exploit identified at time of analysis' (no CISA KEV listing and no input field confirming public exploit code), though the GHSA advisory publishes the exact triggering mechanism, source lines, and a full OutOfMemoryError stack trace, which materially lowers the barrier to reproducing it. The vuln.today decision label is 'this_month' rather than act_now/emergency, consistent with a DoS that requires user action. EPSS is not provided in the input, so exploitation probability cannot be quantified here. Note a data conflict: the input Tags label this 'Information Disclosure', but every signal (CWE-789 uncontrolled allocation, VC:N/VI:N, VA:H, description, and advisory) establishes it as availability-only denial of service - the tag is wrong. Realistic risk is elevated specifically for automated/headless Ghidra triage pipelines where a single malicious sample can crash the processing queue; for interactive analysts the consequence is a crashed session and loss of unsaved work.

Exploit ScenarioDerived

An adversary distributing malware embeds a crafted GZF packed database file whose BinaryField record encodes an arbitrarily large 32-bit length value. An analyst (or an automated headless pipeline) imports the file; PackedDatabase.open() parses the record and DataBuffer.get() attempts to allocate a byte array of the attacker-chosen size, immediately triggering a Java heap OutOfMemoryError that aborts the import and crashes the Ghidra JVM. No public exploit code is identified at time of analysis, but the GHSA advisory publishes the full trigger mechanism and stack trace.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 22, 2026

Heap exhaustion in Ghidra's GZF packed-database import path can crash the JVM when a user or automated headless pipeline opens a crafted DB file whose BinaryField length is set to an arbitrarily large value. The issue is local and requires the victim to import the file; impact is availability-only (OutOfMemoryError, aborted import, and loss of unsaved work), and the supplied data records no public exploit at time of analysis. Version scope is conflicting across sources: the GHSA lists vulnerable versions below 12.2 with the fix in 12.2, while the NVD description and independent assessment refer to Ghidra through 12.2.

RemediationAI

Upgrade to Ghidra 12.2, which the GHSA package metadata lists as the fixed version and which the independent assessment identifies as the remediation target; because the NVD wording refers to Ghidra through 12.2, verify the exact installed build against the vendor advisory at https://github.com/NationalSecurityAgency/ghidra/security/advisories/GHSA-q538-hhhf-5jxp. The GHSA fix guidance calls for max-length checks in DataBuffer.get() and BinaryField.read(), plus reading and sanitizing the length through readLength() in DBRecord.read(). No vendor workaround is described; an exposure reduction consistent with the described import path is to avoid opening untrusted GZF packed databases and to run headless imports in disposable, isolated workers so an OutOfMemoryError does not stall the main processing queue.

Affected VersionsENISA

Ghidra 0 ≤12.2

Affected Packages

euvd ghidra 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

Ghidra's database framework reads record fields through DBRecord.read(), BinaryField.read(), and DataBuffer.get(). BinaryField.read() takes a 32-bit length from the serialized DB stream and passes the positive value directly to DataBuffer.get(), which allocates a new byte array of that size before any max-length validation; negative lengths are handled separately by setting the field data to null. The GHSA assigns CWE-789 (uncontrolled memory allocation) and also CWE-20, and the supplied stack trace confirms the path GzfLoader.loadPackedProgramDatabase() -> PackedDatabase.open() -> DBHandle -> MasterTable -> DBRecord.read() -> BinaryField.read() -> DataBuffer.get(), ending in java.lang.OutOfMemoryError. The trigger is a crafted GZF packed database imported into Ghidra, including headless automated analysis pipelines. No CPE strings were supplied; the provided tag 'Information Disclosure' is inconsistent with the availability-only denial-of-service impact described by the advisory and assessed vector.

Know when the next one hits your stack

  • 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 6.8 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.5 MEDIUM

Local processing of an attacker-supplied file requiring the user to initiate import (AV:L, UI:R), no privileges (PR:N), and heap-exhaustion crash yields availability-only impact (C:N/I:N/A:H).

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

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Local
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

Ghidra through 12.2 contains an uncontrolled memory allocation vulnerability in BinaryField.read() that allows attackers to exhaust heap memory via an unchecked 32-bit length field. Attackers can persuade users to import a crafted GZF packed database file, triggering an OutOfMemoryError in PackedDatabase.open() that aborts the import and denies service.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Medium
widely used reverse-engineering tool, common in security teams but not general infrastructure
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
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