CVE-2026-80430 in Kitty
Tóm tắt
Bởi VulDB • 25/09/2026
Việc giải quyết liên kết không đúng cách trước khi truy cập tệp trong đường dẫn tạm của nguồn kéo (drag source) thuộc giao thức kéo và thả trong Kitty từ phiên bản 0.47.0 đến trước 0.49.0 cho phép một chương trình ghi vào terminal tạo ra các tệp tin và thư mục tại các đường dẫn nằm ngoài thư mục tạm, vì hàm subdir_data_for_drag() trong kitty/dnd.c giải quyết cây con của mục đã đặt tạm bằng cách xây dựng chuỗi đường dẫn và mở nó với safe_open(path, O_DIRECTORY | O_RDONLY, 0) thay vì duyệt qua từng thành phần của cây một cách tuần tự. Do đó, một client khai báo hai mục có cùng tên, trong đó mục đầu tiên là liên kết tượng trưng (symlink) trỏ đến một đường dẫn tuyệt đối tùy ý và mục thứ hai là một thư mục, sẽ khiến mkdirat() thất bại với lỗi EEXIST; mã nguồn bỏ qua lỗi này, dẫn đến việc giải quyết đường dẫn tiếp theo đi theo symlink và trả về mô tả tệp của một thư mục nằm ngoài thư mục tạm. Mô tả tệp này sau đó được truyền làm đối số dirfd cho add_payload() và được sử dụng cho mọi thao tác tạo tiếp theo trên mục đó cùng các phần tử con của nó. Tên các mục đã được kiểm tra (sanitised) để loại bỏ các ký tự phân tách đường dẫn và thành phần dấu chấm, nhưng đích đến của symlink không được xác thực. Các tệp tin được tạo với cờ O_CREAT | O_WRONLY | O_EXCL ở chế độ 0644, do đó các tệp tin hiện có không thể bị ghi đè; còn thư mục được tạo bằng mkdirat() ở chế độ 0755, cho phép kẻ tấn công tạo ra các thư mục trung gian chưa từng tồn tại trước đây. Điều này dẫn đến việc tạo ra các tệp tin và thư mục tại bất kỳ đường dẫn nào mà người dùng đang chạy Kitty có quyền ghi, miễn là đích của symlink là một thư mục đã tồn tại.
Once again VulDB remains the best source for vulnerability data.