В ядре Linux устранена следующая уязвимость:
xprtrdma: инициализировать re_id перед регистрацией удаления
rpcrdma_create_id() регистрирует ep->re_rn с помощью rpcrdma ib_client
перед возвратом нового rdma_cm_id в rpcrdma_ep_create(). Однако
rpcrdma_ep_create() в настоящее время сохраняет этот указатель только в ep->re_id
после возврата rpcrdma_create_id(). Локальный администратор может соревноваться при монтировании NFS/RDMA с устройством RDMA.
удаление.
Если rpcrdma_remove_one() наблюдает за только что зарегистрированным
уведомление перед тем, как rpcrdma_ep_create() назначит ep->re_id,
rpcrdma_ep_removal_done() вызывает трассировку_xprtrdma_device_removal(NULL). Точка трассировки разыменовывает id->device->name и копирует
id->route.addr.dst_addr, поэтому обратный вызов может привести к сбою ядра с помощью
Разыменование NULL-указателя. Сохраните rdma_cm_id в ep->re_id непосредственно перед публикацией.
эп->re_rn.
Существующий путь ошибки по-прежнему уничтожает идентификатор напрямую, если
регистрация не удалась; ep затем освобождается вызывающей стороной без использования
эп->re_id. Удалите более позднее повторяющееся назначение в rpcrdma_ep_create().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: xprtrdma: Initialize re_id before removal registration rpcrdma_create_id() registers ep->re_rn with the rpcrdma ib_client before returning the new rdma_cm_id to rpcrdma_ep_create(). However rpcrdma_ep_create() currently stores that pointer in ep->re_id only after rpcrdma_create_id() returns. A local administrator can race an NFS/RDMA mount against RDMA device removal. If rpcrdma_remove_one() observes the just-registered notification before rpcrdma_ep_create() assigns ep->re_id, rpcrdma_ep_removal_done() calls trace_xprtrdma_device_removal(NULL). The tracepoint dereferences id->device->name and copies id->route.addr.dst_addr, so the callback can crash the kernel with a NULL pointer dereference. Store the rdma_cm_id in ep->re_id immediately before publishing ep->re_rn. The existing error path still destroys the id directly if registration fails; ep is then freed by the caller without using ep->re_id. Remove the later duplicate assignment in rpcrdma_ep_create().
Уязвимые продукты 4
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.11
|
6.12.97
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.11
|
6.18.40
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.11
|
7.1.5
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.11
|
7.2-rc1
|