Ad

CVE-2026-80864

NONE
Обновлено 4 сентября 2026
Linux
Параметр Значение
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: RDMA/rxe: исправление UAF ответчика на IB_QP_MAX_DEST_RD_ATOMIC Modify_qp. rxe_qp_from_attr() обрабатывает IB_QP_MAX_DEST_RD_ATOMIC вне Путь IB_QP_STATE, поэтому он не содержит state_lock и работает, пока ответчик задача rxe_receiver() (recv_task на rxe_wq) активна. Параметр «modify_qp()» только этот атрибут вызывает free_rd_atomic_resources(), затем alloc_rd_atomic_resources(), меняя местами qp->resp.resources[] в то время как rxe_prepare_res()/find_resource() пройти его; free_rd_atomic_resources() также оставляет висящим кэшированный указатель qp->resp.res. Местный непривилегированный пользователь может использовать free/realloc для использования после освобождения в rxe_receiver() (локальный DoS).

Очистите Recv_task вокруг свопа с помощью rxe_disable_task()/rxe_enable_task(), как это уже делает rxe_qp_reset() при разрыве этого массива, повторно включив только после того, как alloc_rd_atomic_resources() завершится успешно, поэтому ответчик никогда возобновляется с NULL qp->resp.resources на пути ENOMEM. Также ясно qp->resp.res в free_rd_atomic_resources(), например rxe_resp.c пути завершения. Воспроизводится под KASAN; slab-use-after-free в rxe_receiver() исчез.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: RDMA/rxe: Fix responder UAF on IB_QP_MAX_DEST_RD_ATOMIC modify_qp rxe_qp_from_attr() handles IB_QP_MAX_DEST_RD_ATOMIC outside the IB_QP_STATE path, so it holds no state_lock and runs while the responder task rxe_receiver() (recv_task on rxe_wq) is live. A modify_qp() setting only that attribute calls free_rd_atomic_resources() then alloc_rd_atomic_resources(), swapping qp->resp.resources[] while rxe_prepare_res()/find_resource() walk it; free_rd_atomic_resources() also leaves the cached pointer qp->resp.res dangling. A local unprivileged user can race the free/realloc into a use-after-free in rxe_receiver() (local DoS). Drain recv_task around the swap with rxe_disable_task()/rxe_enable_task(), as rxe_qp_reset() already does when tearing this array down, re-enabling only after alloc_rd_atomic_resources() succeeds so the responder never resumes against a NULL qp->resp.resources on the ENOMEM path. Also clear qp->resp.res in free_rd_atomic_resources(), like the rxe_resp.c completion paths. Reproduced under KASAN; the slab-use-after-free in rxe_receiver() is gone.