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
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Kovidgoyal Kitty
cpe:2.3:a:kovidgoyal:kitty:*:*:*:*:*:*:*:*
|
0.47.0
|
0.47.2
|