CVE-2026-89651 in Linux
Tóm tắt
Bởi VulDB • 12/09/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
ceph: giới hạn việc giải mã đường dẫn MDSCapAuth và fs_name trong handle_session()
Hàm `handle_session()` giải mã các bản ghi MDSCapAuth do thông báo CEPH_SESSION_OPEN mang theo (msg_version >= 6). Đối với mỗi bản ghi, các chuỗi byte `match.path` và `match.fs_name` được đọc bằng cách đầu tiên giải mã độ dài 32-bit, sau đó sao chép số lượng byte tương ứng bằng hàm `ceph_decode_copy()` trần trụi. Khác với các trường xung quanh sử dụng các biến thể giải mã `_safe`, hai phép sao chép này không có kiểm tra giới hạn `ceph_decode_need()` đi trước, và các trường `struct_len` của MDSCapAuth và MDSCapMatch bao bọc bị bỏ qua thay vì được áp đặt như một ngưỡng trên. Một độ dài lớn hơn số byte còn lại ở phần đầu thông báo khiến `ceph_decode_copy()` đọc vượt quá vùng đệm phía trước (front buffer).
Phần front của thông báo là một bộ cấp phát riêng biệt (`ceph_msg_new2()` -> `kvmalloc`), do đó việc đọc tràn ra khỏi đối tượng này. Một MDS độc hại hoặc đã bị xâm phạm có thể kích hoạt lỗ hổng này bằng tin nhắn đầu tiên sau khi kết nối trong quá trình mount, mà không cần sự tương tác nào từ phía người dùng client; dưới KASAN, nó được báo cáo là lỗi đọc slab-out-of-bounds (đọc vượt ra ngoài vùng nhớ) trong `handle_session()`.
Tác động: Một MDS độc hại có thể buộc kernel client đọc lên đến 4 GiB vượt quá bộ cấp phát front của thông báo trong khi thiết lập phiên, gây sập client (lỗi đọc out-of-bounds).
Chuyển cả hai phép sao chép sang sử dụng `ceph_decode_copy_safe()`, hàm này thực hiện kiểm tra giới hạn `ceph_decode_need()` trước khi sao chép và rẽ nhánh đến nhãn lỗi hiện có, phù hợp với phần còn lại của trình giải mã và đường dẫn xử lý lỗi để giải phóng mảng cap_auths đã được giải mã một phần.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.