Ad

CVE-2026-54056

HIGH CVSS 3.1: 7,1 EPSS 0.27%
Обновлено 17 июня 2026
Kovidgoyal
Параметр Значение
CVSS 7,1 (HIGH)
Уязвимые версии 0.47.0 — 0.47.2
Устранено в версии 0.47.2
Тип уязвимости CWE-59 (Некорректная обработка ссылок)
Поставщик Kovidgoyal
Публичный эксплойт Нет

Kitty — это кроссплатформенный терминал на базе графического процессора. В версиях 0.47.0 и 0.47.1 «kitten dnd» может позволить злонамеренному удаленному источнику перетаскивания перезаписывать или усекать произвольные файлы, доступные для записи локальным пользователем kitty. Удаленные отбрасывания `text/uri-list` размещаются во временном каталоге, но в файловых системах, чувствительных к регистру, дублирующиеся удаленные базовые имена не дедуплицируются.

Злоумышленник может сначала создать промежуточную символическую ссылку, а затем отправить запись в обычном файле с тем же именем. При записи обычного файла используется `utils.CreateAt()` / `openat(O_RDWR|O_CREAT|O_TRUNC)` без `O_NOFOLLOW`, поэтому он следует по созданной злоумышленником символической ссылке и записывает за пределы промежуточного каталога перед запуском окончательного подтверждения перезаписи. В классе это связано с рекомендацией по символической ссылке для передачи файлов, но это другая ошибка: она влияет на удаленную промежуточную реализацию перетаскивания `kitten dnd`, использует другой уязвимый код (`kittens/dnd/drop.go` и `tools/utils/file_at_fd.go`) и воспроизводится при фиксации. `4aa4a5c0567a92553a8c20a88a4352da637fca5d`, после исправления передачи файлов `O_NOFOLLOW`.

Версия 0.47.2 исправляет проблему.

Показать оригинальное описание (EN)

Kitty is a cross-platform GPU based terminal. In versions 0.47.0 and 0.47.1, `kitten dnd` can allow a malicious remote drag-and-drop source to overwrite or truncate arbitrary files writable by the local kitty user. Remote `text/uri-list` drops are staged in a temporary directory, but on case-sensitive filesystems duplicate remote basenames are not de-duplicated. An attacker can first create a staged symlink and then send a same-name regular-file entry. The regular-file write uses `utils.CreateAt()` / `openat(O_RDWR|O_CREAT|O_TRUNC)` without `O_NOFOLLOW`, so it follows the attacker-created symlink and writes outside the staging directory before final overwrite confirmation runs. This appears related in class to the file-transfer symlink advisory, but it is a different bug: it affects `kitten dnd` remote drag-and-drop staging, uses different vulnerable code (`kittens/dnd/drop.go` and `tools/utils/file_at_fd.go`), and reproduces on commit `4aa4a5c0567a92553a8c20a88a4352da637fca5d`, after the file-transfer `O_NOFOLLOW` fix. Version 0.47.2 patches the issue.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Требуется
Нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Высокое
Полная модификация данных
Доступность
Низкое
Частичное нарушение работы

Строка CVSS v3.1

Уязвимые продукты 1

Конфигурация От (включительно) До (исключительно)
Kovidgoyal Kitty
cpe:2.3:a:kovidgoyal:kitty:*:*:*:*:*:*:*:*
0.47.0 0.47.2