Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRun malicious program in kitty session
-
DeliveryUser drags file over window (hover)
-
ExploitEmit drag-data request escape sequence
-
Executionkitty reads and streams file contents
-
ImpactExfiltrate disclosed file data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires kitty 0.47.0 through 0.48.x with the drag-and-drop protocol, a window that has registered to accept drops, and a client able to write escape sequences to that terminal (a local program or a process in an active session such as SSH). The decisive precondition is user interaction: the victim must drag a file or directory over the kitty window (a hover/move event) - the flaw lets the client request and receive that offered data before, or without, the user ever completing the drop, and drop_left_child() leaves directory handles and in-flight file transfers readable even after the drag leaves. Limiting factors: local attack vector, mandatory drag interaction by the victim, and disclosure is bounded to the files the drag source actually offered (not arbitrary attacker-chosen paths). |
| Impact | This is a genuine but moderate-severity information-disclosure flaw, not a high-urgency issue. The vendor-assigned CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P, VC/VI/VA:N but SC:H) is internally consistent with the description: the terminal process itself is unharmed (no vulnerable-system impact) but user files handled during a drag session are disclosed to a subsequent system, hence SC:H and the 6.0 score. Two signals temper real-world urgency: (1) exploitation is local (AV:L) - the attacker must already be able to write escape sequences to the terminal (a local program, or a process reachable through an active session such as SSH), and (2) it requires user interaction (UI:P) - the victim must physically drag a file or directory over the kitty window. There is no EPSS score, no CISA KEV listing, and no public exploit code identified - so this is 'no public exploit identified at time of analysis,' with only a vendor/researcher advisory (Secur0) and a confirmed upstream patch. No conflicting signals were found between the CVSS vector and the description; both agree on local, low-privilege, interaction-dependent, confidentiality-only impact. Overall: a real defect worth patching on developer workstations but not a mass-exploitation priority. |
| Exploit ScenarioDerived | A user runs a malicious or compromised program inside kitty (for example a CLI tool, or output streamed over an SSH session) that emits drag-and-drop protocol escape sequences. When the user drags a sensitive file or folder over the kitty window while deciding whether to drop it, the program issues a drag-data request; because drop_enqueue_request() never checks the window's drop state, kitty reads the offered file paths from disk and streams their contents back to the program even though the user never released the drop. No public exploit code has been identified, only a researcher advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 25, 2026
Information disclosure in the kitty terminal emulator versions 0.47.0 through 0.48.x lets a program that can write escape sequences to the terminal read the contents of files a user merely drags over a kitty window, without ever completing the drop. The drag-and-drop handler in kitty/dnd.c serves a client's drag-data request without first verifying that a drop has actually occurred, and drop_left_child() keeps the offered URI list, directory handles, an open file descriptor and its main-loop transfer timer alive after the drag leaves the window, so a client can keep reading through a retained directory handle or let an in-flight file transfer continue streaming with no drag in progress. The CVSS 4.0 base score is 6.0 (moderate), the request path is unauthenticated (PR:N) and the decisive precondition is user interaction: the victim must drag a file or directory over the window; no public exploit code was identified at time of analysis, and vendor-released patch kitty 0.49.0 is available.
RemediationAI
Vendor-released patch: upgrade kitty to 0.49.0 or later, which is the version that denies pre-drop data requests with EPERM and tears down all drag-session state (URI list, directory handles, file descriptor and transfer timer) when the drag leaves the window; the fix is commit 026d11f517da17bfd3c35ea502057babdfbe5828 and the release is https://github.com/kovidgoyal/kitty/releases/tag/v0.49.0, with the CNA advisory at https://secur0.com/en/cna/cve-list/cve-2026-80432-kitty-dnd-data-before-drop. Until upgrading, the practical compensating controls are behavioural rather than configuration-level: do not drag files or directories over a kitty window while a program you do not fully trust is able to write escape sequences to that terminal, including processes reached through an active SSH session, since the disclosure only triggers once a drag is offered and is bounded to the paths the drag source supplied; and avoid dropping directories or initiating large file transfers into untrusted sessions on 0.47.x/0.48.x because the retained directory handles and in-flight transfers survive the drag leaving the window - the trade-off is purely operational, since kitty offers no documented switch to disable the drag-and-drop protocol without patching, and disabling or rebuilding without the DnD handler would break legitimate file-drop integration in terminal applications such as file managers and editors. Upstream regression tests (dnd_test_probe_state checks for drop_dropped, drop_num_dir_handles, drop_uri_list_sz and drop_file_fd_plus_one) can be used to verify that a patched build really clears this state after a leave event.
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
kitty implements drag and drop as a terminal escape-sequence protocol: a client registers a window as a drop target, the terminal reports drag enter/move/leave events with the MIME types on offer, and the client then requests data by name or requests a listing of a URI/directory handle. The flaw is CWE-862 (Missing Authorization) in kitty/dnd.c. In drop_enqueue_request() the terminal validated geometry and queued the request but never checked w->drop.dropped, so a request issued while the drag was merely hovering (a move event only, no release) was served with the data the drag source had offered. A second defect in drop_left_child(), which runs when the drag leaves the window without a drop, freed only the offered MIME list while retaining the pending request state, the open file descriptor plus its main-loop transfer timer, the directory handles, the URI list and the pending MIME name - the upstream fix commit 026d11f517da17bfd3c35ea502057babdfbe5828 also updates docs/dnd-protocol.rst to require that requests received before a drop be rejected with EPERM and that a leave event discard all drag-session data and resources (URI lists, in-progress transfers, directory handles) so stale handles fail. Note that kitty itself performs the filesystem reads using the paths the drag source offered, so the disclosure is bounded to files the user actually dragged over the window, not arbitrary attacker-chosen paths; the affected CPE is cpe:2.3:a:kovid_goyal:kitty:*:*:*:*:*:*:*:* mapped to versions before the 0.49.0 fix.
Know when Kitty 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:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N
Local terminal-write access (AV:L), no privileges (PR:N), but the victim must drag a file over the window (UI:R); kitty reads user files into a different component (S:C) yielding confidentiality-only impact (C:H).
Primary rating from Vendor (Secur0).
CVSS VectorVendor: Secur0
DescriptionCVE.org
Missing Authorization in the drop handling path of the drag and drop protocol in kitty from 0.47.0 before 0.49.0 allows a program writing to the terminal to obtain the contents of files dragged over the window even when the user never completes the drop, because drop_enqueue_request() in kitty/dnd.c serves a drag data request without first checking the drop state of the window, so a client that issues the request while a drag is merely hovering receives the data offered for the drag. In the same file, drop_left_child(), which runs when the drag leaves the window without a drop having occurred, releases the offered MIME list but retains the pending request state, the open file descriptor and its main loop transfer timer, the directory handles, the URI list and the pending MIME name, so a client can continue to read through a retained directory handle, and an in-flight file transfer continues to stream, when no drag is in progress. The file contents are read from the filesystem by the kitty process itself using the paths the drag source offered. This results in disclosure of the contents of files the user moved over the window without ever releasing them into it.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot
Stack-based buffer overflow in the SCP command-line utility in PuTTY before 0.67 and KiTTY 0.66.6.3 and earlier allows r
The Graphics Protocol feature in graphics.c in kitty before 0.19.3 allows remote attackers to execute arbitrary code bec
KiTTY versions 0.76.1.13 and before is vulnerable to command injection via the filename variable, occurs due to insuffic
KiTTY versions 0.76.1.13 and before is vulnerable to a stack-based buffer overflow via the username, occurs due to insuf
KiTTY versions 0.76.1.13 and before is vulnerable to a stack-based buffer overflow via the hostname, occurs due to insuf
In Kitty before 0.26.2, insufficient validation in the desktop notification escape sequence can lead to arbitrary code e
Heap memory corruption in Kitty cross-platform GPU terminal emulator (versions 0.46.2 and below) allows remote attackers
Heap buffer overflow in Kitty terminal versions 0.46.2 and below allows any process able to write to the terminal's stan
open_actions.py in kitty before 0.41.0 does not ask for user confirmation before running a local executable file that ma
Remote code execution in Kitty terminal emulator versions prior to 0.47.0 allows any process or remote peer that can wri
Command injection in Kitty cross-platform GPU terminal emulator versions prior to 0.47.0 allows remote attackers to exec
EUVD-2026-87226
GHSA-ghc4-9m25-367h
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB