Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft theme ZIP with many tiny image entries
-
DeliveryDeliver archive and persuade analyst to import
-
ExploitreadZipTheme extracts unlimited files to images dir
-
ExecutionExhaust filesystem inodes and disk space
-
ImpactDeny service to Ghidra and host
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the victim to actively import an attacker-supplied Ghidra theme ZIP archive through the theme import feature; the malicious archive must contain a very large number of files in its image/ subdirectory, which readZipTheme() extracts without count or size limits into ~/.config/ghidra/Ghidra*/images. Limiting factors: the attack is local and gated on user interaction (UI:P) - the target must be socially engineered into importing an untrusted theme - so there is no remote or unauthenticated trigger; it affects Ghidra versions 10.3 up to but not including 12.2, and version 12.2 enforces a 3000-entry icon cap that blocks this. Severity depends on the host filesystem's available inode pool and free disk space. |
| Impact | This is a genuine but low-urgency availability issue, not a high-impact priority. The provided CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P) scores 6.8 (Medium) and is internally consistent with the description: exploitation is local, requires passive user interaction (the victim must import a theme archive), needs no privileges, and produces only an availability impact (VA:H) with zero confidentiality or integrity impact. There is NO CISA KEV listing and NO EPSS score in the supplied data, so there is no signal of active or probable exploitation - consistent with the vuln.today 'this_month' decision label rather than act_now/emergency. No proof-of-concept or exploit-code reference appears among the provided references (only NVD, the fixing commit, the 12.2 release, the GHSA advisory, and the VulnCheck advisory), so exploitation status is 'no public exploit identified at time of analysis.' The signals do not conflict: a Medium-severity, user-interaction-gated, local DoS against a developer/analyst tool. The one caveat worth verifying is reach - the GHSA notes inode/disk exhaustion can degrade OTHER system services beyond Ghidra, so impact is host-wide rather than process-local, which is why VA:H (not L) is justified. |
| Exploit ScenarioDerived | An attacker shares a malicious Ghidra theme ZIP (e.g., via a forum, chat, or file-sharing channel) and persuades a reverse-engineer to import it. On import, readZipTheme() extracts the archive's thousands of tiny image files into ~/.config/ghidra/Ghidra*/images, exhausting the filesystem's inode pool and free disk space, which then blocks Ghidra and other local services that need to write to disk. No public exploit code was identified, but the attack requires only a crafted archive and basic ZIP-crafting skill. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 22, 2026
Inode and disk-space exhaustion in Ghidra 10.3 through 12.1 allows an attacker who can convince a user to import a crafted theme ZIP archive to fill the host filesystem, causing Ghidra's own theme imports and other disk-dependent operations to fail. The flaw sits in ThemeReader.readZipTheme(), which extracts every entry under the archive's image/ directory into ~/.config/ghidra/Ghidra*/images without counting entries or bounding total size; an archive containing a very large number of tiny icon files drains the inode pool. The trigger is local and gated on user interaction (the victim must actively import the untrusted theme), so there is no remote or unauthenticated path, and the impact depends heavily on the target filesystem's free inodes and disk space. No public exploit code has been identified at time of analysis and the issue is not in CISA KEV; the upstream fix commit caps extracted icon entries at 3000 and Ghidra 12.2 ships that cap.
RemediationAI
Upgrade to Ghidra 12.2 or later, which enforces MAX_ZIP_ICON_ENTRIES = 3000 in ThemeReader.readZipTheme() and aborts an over-limit archive with an IOException instead of extracting it; the fixed build is published at https://github.com/NationalSecurityAgency/ghidra/releases/tag/Ghidra_12.2_build and the details are in advisory GHSA-fvwx-pwq5-3738, with the code change in commit b0762c3e728a6a26d80ed4943c2efd53e2569120. No patched build exists for earlier 10.3-12.1 releases, so upgrading is the only complete fix and backporting the commit is the option for organizations that cannot move versions. Because exploitation requires the user to import an attacker-supplied theme archive, the practical compensating control before upgrading is to restrict theme imports to archives from trusted sources and, where feasible, inspect an archive's entry list and reject ones with thousands of entries under image/ before importing; the trade-off is that this relies on user discipline and manual review rather than technical enforcement. Monitoring free inodes and disk usage on Ghidra workstations (for example with df -i) gives detection but no prevention, and if inode exhaustion has already occurred, removing the extracted files under ~/.config/ghidra/Ghidra*/images is required to restore host availability. Note that this is a local, user-interaction-gated availability issue with no identified public exploit code, so remediation can follow normal patch-cycle timing rather than emergency change control.
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 is the NSA's Java-based software reverse-engineering suite, and its GUI framework (Ghidra/Framework/Gui, package generic.theme) implements user-selectable themes. ThemeReader.readZipTheme() unpacks a theme ZIP, copying non-image theme data plus icons found under the archive's image/ subdirectory onto the host at ~/.config/ghidra/Ghidra*/images. The root cause is CWE-770 (Allocation of Resources Without Limits or Throttling), also tracked in the advisory as CWE-400: the extraction loop iterates every entry in the archive with no cap on the number of files and no aggregate size or inode budget, so a zip of thousands of minuscule files consumes one inode per extracted file. Because inodes are a filesystem-wide, fixed resource, exhaustion spills beyond Ghidra and blocks file creation by other applications on the same host, producing a system-level availability loss rather than a Ghidra-only crash. The upstream fix commit b0762c3e728a6a26d80ed4943c2efd53e2569120 introduces a constant MAX_ZIP_ICON_ENTRIES = 3000 and an icon counter in readZipTheme() that throws an IOException ("Maximum number of extracted icon files (%d) has been exceeded!") once the limit is crossed, converting unbounded extraction into a bounded failure. The vector is local (AV:L) with user interaction required for the import (UI:P in the CVSS 4.0 vector, UI:R in the independent 3.1 assessment); confidentiality and integrity are unaffected, and the sole impact is high availability loss. The trigger beyond the entry-count inflation itself is not described in the available sources.
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
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
A local untrusted theme file must be imported by the user, so AV:L and UI:R; no privileges needed (PR:N); impact is availability-only host DoS (A:H) with no C/I impact.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
1DescriptionCVE.org
Ghidra 10.3 before 12.2 contains a resource allocation without limits vulnerability in ThemeReader.readZipTheme() that extracts unlimited theme ZIP entries to the images directory. Attackers can persuade users to import a crafted theme archive with many small files, exhausting inodes and disk space to deny service to the host.
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.
EUVD-2026-108331
GHSA-hmjg-837r-prfv
NVD
CVE.org
EPSS
Exploit-DB