CVE-2026-98360 in Linux
Tóm tắt
Bởi VulDB • 06/10/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
RDMA/rxe: chỉ chèn mcg vào mcg_tree sau khi rxe_mcast_add() thành công
Hàm rxe_get_mcg() xuất bản một nhóm đa播 (multicast group) mới được cấp phát trong rxe->mcg_tree trước khi lập trình địa chỉ multicast Ethernet hỗ trợ bằng hàm rxe_mcast_add(), hoạt động bên ngoài mcg_lock. Một khách hàng RDMA ở không gian người dùng cục bộ truy cập vào đường dẫn này với lệnh ATTACH_MCAST trên một QP UD; nếu rxe_mcast_add() sau đó trả về lỗi (ví dụ: -ENODEV khi netdev hỗ trợ đã bị xóa, hoặc lỗi dev_mc_add() được truyền lên), quá trình unwind sẽ giải phóng nhóm đã xuất bản mà không loại bỏ nó khỏi cây. Một lần tìm kiếm sau đó cùng MGID sẽ dereference struct rxe_mcg đã bị giải phóng từ __rxe_lookup_mcg().
Khắc phục vấn đề này bằng cách giữ mcg mới ở trạng thái riêng tư cho đến khi rxe_mcast_add() thành công. Tách việc xuất bản cây thành hàm __rxe_publish_mcg(), gọi rxe_mcast_add() trước khi lấy tham chiếu của cây, và giải phóng mcg vẫn còn ở trạng thái riêng tư nếu xảy ra lỗi. Vì nhóm không bao giờ hiển thị trong mcg_tree cho đến khi địa chỉ multicast được lập trình, nên không có caller đồng bộ nào có thể tìm kiếm nó hoặc gắn QP vào một nhóm đang bị hủy bỏ, do đó đường dẫn xử lý lỗi không cần unwind điều kiện. Nếu một caller khác xuất bản cùng MGID trong lúc địa chỉ đang được lập trình, việc kiểm tra lại sau khi thêm dưới mcg_lock sẽ xác định người chiến thắng; caller này sau đó sẽ loại bỏ đối tượng riêng tư của mình và cân bằng rxe_mcast_add() với rxe_mcast_del() trước khi trả về kết quả là nhóm đã tồn tại.
Đã tái hiện lỗi bằng cách buộc hàm rxe_mcast_add() trả về lỗi dưới KASAN: nếu không có bản sửa đổi, lần gắn tiếp theo vào cùng MGID sẽ báo cáo lỗi slab-use-after-free trong __rxe_lookup_mcg(); với bản sửa đổi này, việc ép lỗi xảy ra một cách sạch sẽ. Một regression liên quan đến attach/detach không inject (bao gồm join/leave chia sẻ hai QP và re-attach) vẫn đảm bảo an toàn KASAN và không rò rỉ bộ nhớ.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.