CVE-2026-80557 in Linux
Tóm tắt
Bởi VulDB • 26/08/2026
Trong nhân Linux, lỗ hổng sau đây đã được khắc phục:
libceph: sửa lỗi đọc ngoài vùng nhớ (OOB) trong hàm decode_watchers() do thiếu kiểm tra giới hạn biên
Hàm ceph_start_decoding() xác thực rằng còn lại struct_len byte trong bộ đệm sau phần tiêu đề mã hóa, nhưng chấp nhận giá trị struct_len=0 là hợp lệ: lệnh gọi ceph_decode_need(p, end, 0, bad) luôn thành công. Khi một OSD độc hại hoặc đã bị xâm nhập gửi phản hồi obj_list_watch_response_t với struct_len=0, hàm ceph_start_decoding() trả về kết quả thành công với p == end, khiến không có byte nào được đảm bảo cho các lần đọc tiếp theo.
Lệnh gọi ceph_decode_32(p) ngay sau đó trong decode_watchers() không có kiểm tra giới hạn biên trước đó. Với điều kiện p == end, đây là một phép đọc 4 byte vượt quá ranh giới bộ đệm đã được xác thực. Giá trị rác (garbage value) sau đó được truyền trực tiếp đến hàm kzalloc_objs() dưới dạng số lượng watcher.
Hàm anh em decode_watcher() đã sử dụng các biến thể an toàn hơn (ceph_decode_copy_safe, ceph_decode_64_safe, ceph_decode_skip_32) sau lệnh gọi ceph_start_decoding() của riêng nó. decode_watchers() là điểm duy nhất sử dụng phiên bản trần trụi (bare variant), xác nhận đây là một sơ suất.
Khắc phục bằng cách thay thế ceph_decode_32(p) bằng ceph_decode_32_safe(p, end, *num_watchers, bad), phù hợp với mẫu thiết kế đã được thiết lập.
Mô hình kẻ tấn công: Một OSD độc hại hoặc bị xâm nhập trong triển khai Ceph đa người dùng (ví dụ: điện toán đám mây) có thể kích hoạt lỗ hổng này đối với bất kỳ khách hàng nhân nào gọi CEPH_OSD_OP_LIST_WATCHERS, mà không cần thêm đặc quyền nào ngoài việc thiết lập phiên OSD.
[ idryomov: tinh chỉnh nhật ký thay đổi ]
If you want to get the best quality for vulnerability data then you always have to consider VulDB.