CVE-2026-95835: CWE-862 Missing Authorization in Kovid Goyal kitty
Missing Authorization in the askpass escape code handler in kitty from 0.25.0 before 0.49.0 allows a local user other than the one running the terminal to obtain the text typed into a prompt that kitty itself displays, because handle_remote_askpass() in kitty/window.py opens the POSIX shared memory object named in the escape code, parses a prompt definition out of it, and writes the user's answer back into an object of that same name, without at any point checking that the object is owned by the user running kitty or that its permissions exclude other users. The equivalent consumer of the same SharedMemory class in the ssh kitten performs exactly that check; the askpass path did not. The handler is reached through a device control string processed from the byte stream of the window, so the attacker must also cause bytes of their choosing to be displayed by the victim's terminal. Where the POSIX shared memory namespace is shared between the two users, a second local user can create an object with permissions that allow the victim to read and write it, cause the victim's kitty to render a prompt of the attacker's choosing, including a masked password prompt, and read the typed secret back out of the object afterwards. The prompt text is additionally passed to the display without control character sanitisation, so it can overwrite the warning line kitty prints above it. The answer is written by reopening an object of that name when the user answers, rather than through the handle already held. This results in disclosure of a secret typed by the victim to a second local user, and does not require any privilege on the victim's account.
AI Analysis
Technical Summary
The vulnerability arises from the handle_remote_askpass() function in kitty/window.py, which opens a POSIX shared memory object named in an escape code, parses a prompt, and writes the user's response back into the same object without checking that the object is owned by the kitty user or that its permissions exclude other users. Unlike the ssh kitten consumer of the same SharedMemory class, the askpass path lacks this authorization check. An attacker sharing the POSIX shared memory namespace can create an object with permissive access, cause the victim's kitty terminal to render a prompt of the attacker's choosing (including masked password prompts), and subsequently read the victim's typed secret from the shared memory object. The prompt text is also passed to the display without sanitizing control characters, allowing overwriting of kitty's warning line. This results in disclosure of sensitive input to a second local user without requiring elevated privileges.
Potential Impact
A local attacker can obtain sensitive information typed by another user into a kitty terminal prompt, including passwords or other secrets, by exploiting the missing authorization checks on shared memory objects. This compromises confidentiality of user input on the affected system. The attacker must be able to cause the victim's terminal to display attacker-controlled bytes and share the POSIX shared memory namespace. No privilege escalation or victim account compromise is required.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until a fix is available, users should avoid running kitty versions from 0.25.0 up to but not including 0.49.0 in multi-user environments where untrusted local users share the POSIX shared memory namespace. Restricting access to the shared memory namespace or avoiding use of the askpass feature may reduce risk.
CVE-2026-95835: CWE-862 Missing Authorization in Kovid Goyal kitty
Description
Missing Authorization in the askpass escape code handler in kitty from 0.25.0 before 0.49.0 allows a local user other than the one running the terminal to obtain the text typed into a prompt that kitty itself displays, because handle_remote_askpass() in kitty/window.py opens the POSIX shared memory object named in the escape code, parses a prompt definition out of it, and writes the user's answer back into an object of that same name, without at any point checking that the object is owned by the user running kitty or that its permissions exclude other users. The equivalent consumer of the same SharedMemory class in the ssh kitten performs exactly that check; the askpass path did not. The handler is reached through a device control string processed from the byte stream of the window, so the attacker must also cause bytes of their choosing to be displayed by the victim's terminal. Where the POSIX shared memory namespace is shared between the two users, a second local user can create an object with permissions that allow the victim to read and write it, cause the victim's kitty to render a prompt of the attacker's choosing, including a masked password prompt, and read the typed secret back out of the object afterwards. The prompt text is additionally passed to the display without control character sanitisation, so it can overwrite the warning line kitty prints above it. The answer is written by reopening an object of that name when the user answers, rather than through the handle already held. This results in disclosure of a secret typed by the victim to a second local user, and does not require any privilege on the victim's account.
CVSS v4.0
Score 5.6medium
Affected software
Kovid Goyal
kitty
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability arises from the handle_remote_askpass() function in kitty/window.py, which opens a POSIX shared memory object named in an escape code, parses a prompt, and writes the user's response back into the same object without checking that the object is owned by the kitty user or that its permissions exclude other users. Unlike the ssh kitten consumer of the same SharedMemory class, the askpass path lacks this authorization check. An attacker sharing the POSIX shared memory namespace can create an object with permissive access, cause the victim's kitty terminal to render a prompt of the attacker's choosing (including masked password prompts), and subsequently read the victim's typed secret from the shared memory object. The prompt text is also passed to the display without sanitizing control characters, allowing overwriting of kitty's warning line. This results in disclosure of sensitive input to a second local user without requiring elevated privileges.
Potential Impact
A local attacker can obtain sensitive information typed by another user into a kitty terminal prompt, including passwords or other secrets, by exploiting the missing authorization checks on shared memory objects. This compromises confidentiality of user input on the affected system. The attacker must be able to cause the victim's terminal to display attacker-controlled bytes and share the POSIX shared memory namespace. No privilege escalation or victim account compromise is required.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until a fix is available, users should avoid running kitty versions from 0.25.0 up to but not including 0.49.0 in multi-user environments where untrusted local users share the POSIX shared memory namespace. Restricting access to the shared memory namespace or avoiding use of the askpass feature may reduce risk.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- Secur0
- Date Reserved
- 2026-09-22T16:30:34.123Z
- Cvss Version
- 4.0
- State
- PUBLISHED
Threat ID: 6ab6a5d7f7a7c5410605564e
Added to database: 09/25/2026, 16:48:23 UTC
Last enriched: 09/25/2026, 17:03:03 UTC
Last updated: 09/25/2026, 17:33:34 UTC
Views: 4
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.