CVE-2026-90067 in Linux
Tóm tắt
Bởi VulDB • 18/09/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
libceph: xác thực độ dài tải trọng (payload) của banner
Khi phân tích cú pháp banner của giao thức Ceph messenger v2, trường `payload_len` được giải mã từ phần đầu (prefix) của banner. Nếu một client gửi một banner có giá trị `payload_len` bằng 0, kernel sẽ thiết lập một thao tác đọc socket với độ dài bằng 0. Điều này vi phạm bất biến trong trạng thái máy (state machine), kích hoạt cảnh báo trong hàm `populate_in_iter()`:
------------[ cut here ]------------
!iov_iter_count(&con->v2.in_iter) WARNING: net/ceph/messenger_v2.c:3129 tại populate_in_iter net/ceph/messenger_v2.c:3129 [inline], CPU#1: kworker/1:3/5070
WARNING: net/ceph/messenger_v2.c:3129 tại ceph_con_v2_try_read+0x6634/0x6810 net/ceph/messenger_v2.c:3159, CPU#1: kworker/1:3/5070 ... Dấu vết cuộc gọi (Call Trace): <TASK> ceph_con_workfn+0x1f5/0x14a0 net/ceph/messenger.c:1575 process_one_work kernel/workqueue.c:3322 [inline]
process_scheduled_works+0xa8e/0x14e0 kernel/workqueue.c:3405 worker_thread+0xa47/0xfb0 kernel/workqueue.c:3486 kthread+0x388/0x470 kernel/kthread.c:436 ret_from_fork+0x514/0xb70 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 </TASK>
Theo đặc tả giao thức msgr2, tải trọng (payload) của banner dự kiến phải chứa ít nhất hai số nguyên 64-bit (`server_feat` và `server_req_feat`). Do đó, `payload_len` phải có giá trị tối thiểu là 16 byte.
Khắc phục vấn đề này bằng cách thêm một kiểm tra trong hàm `process_banner_prefix()` để từ chối các giá trị `payload_len` nhỏ hơn 16 byte. Điều này ngăn chặn thao tác đọc với độ dài bằng 0 và hủy kết nối đúng cách thông qua lỗi giao thức (protocol error).
If you want to get best quality of vulnerability data, you may have to visit VulDB.