CVE-2026-95835
ŚrednieCVSS 5.6Streszczenie
Podatność typu Missing Authorization w obsłudze kodu escape askpass w terminalu kitty (wersje od 0.25.0 do 0.49.0). Funkcja handle_remote_askpass() otwiera obiekt pamięci współdzielonej POSIX wskazany w kodzie escape i zapisuje do niego odpowiedź użytkownika, nie sprawdzając właściciela ani uprawnień obiektu. Inny lokalny użytkownik może utworzyć taki obiekt, wymusić wyświetlenie fałszywego monitu (np. o hasło) i odczytać wpisany sekret.
Ocena ryzyka
Lokalny użytkownik na tym samym systemie może przechwycić dane wpisywane przez ofiarę do monitu wyświetlonego przez kitty, w tym hasła, bez potrzeby posiadania uprawnień na koncie ofiary. Tekst monitu nie jest sanityzowany, co pozwala dodatkowo ukryć ostrzeżenie wyświetlane przez terminal.
Rekomendacja
Zaktualizuj kitty do wersji 0.49.0 lub nowszej. Do czasu aktualizacji unikaj uruchamiania kitty na systemach wieloużytkownikowych, gdzie przestrzeń nazw pamięci współdzielonej POSIX jest wspólna dla użytkowników.
Inne podatności w kitty
Zobacz wszystkie- CVE-2026-95834Średnie
Podatność Use After Free w protokole przeciągnij i upuść w kitty od wersji 0.47.0 do 0.49.0 pozwala programowi piszącemu do terminala na odczyt i zapis do zwolnionej pamięci sterty. Błąd występuje w funkcji drag_remote_file_data() w kitty/dnd.c, gdzie wskaźnik do tablicy jest używany po jej zwolnieniu przez funkcje pomocnicze.
- CVE-2026-80432Średnie
Brak autoryzacji w ścieżce obsługi upuszczania protokołu drag and drop w kitty od wersji 0.47.0 przed 0.49.0 pozwala programowi piszącemu do terminala na uzyskanie zawartości plików przeciągniętych nad oknem, nawet jeśli użytkownik nie zakończy upuszczania, a także na kontynuowanie odczytu plików po opuszczeniu okna przez przeciąganie.
- CVE-2026-80431Średnie
W kitty w wersjach od 0.40.0 do 0.49.0 występuje podatność polegająca na zapisie poza granicami bufora w naturalnej gałęzi protokołu skalowania tekstu. Program zapisujący do terminala może wysłać kod escape OSC 66 z grafenem dłuższym niż cztery punkty kodowe, co powoduje zapis poza bufor o stałym rozmiarze w funkcji screen_handle_multicell_command(). Skutkiem jest zakończenie procesu kitty, a tym samym wszystkich okien, zakładek i procesów potomnych.
- CVE-2026-80430Średnie
W kitty w wersjach 0.47.0 do 0.49.0 występuje podatność nieprawidłowego rozwiązywania ścieżek przed dostępem do plików w protokole drag and drop (ściąganych). Program zapisujący do terminala może utworzyć pliki i katalogi poza katalogiem przejściowym przez zahaczanie wpisów z symlinkami i późniejsze podążanie za nimi podczas tworzenia elementów. Atakujący może wykorzystać to do zapisu w dowolnym miejscu zapisywalnym przez użytkownika kitty.
- CVE-2026-95832Krytyczne
W kitty od wersji 0.47.3 przed 0.49.0, obsługa kodów sterujących kolorami (colour control escape codes) nie neutralizuje nazw pól w odpowiedziach, co pozwala programowi piszącemu do terminala na wykonanie dowolnego polecenia w powłoce użytkownika. Atakujący może skomponować polecenie powłoki, wykorzystując znaki ASCII i znak nowej linii z handle_remote_ssh().
- CVE-2026-33642Krytyczne
Kitty to wieloplatformowy terminal oparty na GPU. W wersjach 0.46.2 i niższych funkcja handle_compose_command() w kitty/graphics.c wykonuje walidację granic przesunięć kompozycji przy użyciu arytmetyki 32-bitowej bez znaku, która jest podatna na zawijanie liczb całkowitych, co może prowadzić do odczytu/zapisu poza zakresem sterty (Heap Buffer Over-Read/Write). Atakujący, który może zapisać sekwencje ucieczki do terminala kitty (np. poprzez złośliwy plik, baner logowania SSH lub przetworzoną treść), może dostarczyć spreparowane wartości x_offset/y_offset, które przechodzą kontrolę granic po zawinięciu, ale powodują masywny dostęp do pamięci sterty poza zakresem w compose_rectangles(). Nie jest wymagana żadna interakcja użytkownika ani niestandardowa konfiguracja. Atakujący potrzebuje jedynie możliwości wyświetlenia danych w oknie terminala kitty. Problem został naprawiony w wersji 0.47.0.
- CVE-2026-72913Wysokie
Kitty to wieloplatformowy terminal oparty na GPU. Przed wersją 0.48.2 handlery DCS @kitty-echo i @kitty-ssh w kitty/window.py zapisują nieuwierzytelnione dane do standardowego wejścia powłoki dziecka, gdzie handle_remote_echo akceptuje drukowalne znaki poleceń powłoki, a handle_remote_ssh wywołuje get_ssh_data w kittens/ssh/utils.py, które emituje znak nowej linii; połączenie tych handlerów może wykonać polecenia kontrolowane przez atakującego, gdy użytkownik wyświetla niezaufane dane terminala. Problem naprawiono w wersji 0.48.2.
- CVE-2026-33633Wysokie
Terminal Kitty w wersjach 0.46.2 i niższych zawiera przepełnienie sterty w funkcji load_image_data(). Każdy proces mogący pisać do stdin terminala może wysłać spreparowane polecenie APC z deklaracją PNG, które przekracza dwukrotność początkowej pojemności bufora, powodując natychmiastowy crash i potencjalnie zdalne wykonanie kodu.
Oryginalny opis (angielski, źródło NVD)
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.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

