CVE-2026-23440

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

В ядре Linux устранена следующая уязвимость: net/mlx5e: исправлено состояние гонки во время обновления IPSec ESN. В режиме полной разгрузки IPSec устройство сообщает ESN (расширенный Порядковый номер) переносит событие в драйвер. Драйвер подтверждает это событие, запросив IPSec ASO и проверив, что esn_event_arm поле имеет значение 0x0, что указывает на то, что событие произошло.

После обработки событие, драйвер должен повторно включить контекст, установив esn_event_arm обратно в 0x1. На этом пути обработки существует состояние гонки. После проверки событие, драйвер вызывает mlx5_accel_esp_modify_xfrm() для обновления состояние ядра xfrm.

Эта функция временно освобождает и повторно получает блокировку состояния xfrm. Итак, сначала необходимо подтвердить событие, установив для esn_event_arm значение 0x1. Это предотвращает повторную обработку драйвером того же обновления ESN, если оборудование отправляет события по другой причине.

Со времени следующего обновления ESN происходит только после получения почти 2^31 пакета, риска отсутствует обновление, так как это произойдет спустя много времени после того, как эта обработка будет завершена. закончено. Двойная обработка события приводит к тому, что старшие биты ESN (esn_msb) быть увеличено неправильно. Затем драйвер программирует оборудование с помощью это недействительное состояние ESN, которое приводит к сбоям защиты от повтора и полная остановка IPSec-трафика.

Исправьте это, повторно поставив событие ESN на охрану сразу после его проверки. перед вызовом mlx5_accel_esp_modify_xfrm(). Это гарантирует, что любой ложные, повторяющиеся события правильно игнорируются, что завершает гонку окно.

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

In the Linux kernel, the following vulnerability has been resolved: net/mlx5e: Fix race condition during IPSec ESN update In IPSec full offload mode, the device reports an ESN (Extended Sequence Number) wrap event to the driver. The driver validates this event by querying the IPSec ASO and checking that the esn_event_arm field is 0x0, which indicates an event has occurred. After handling the event, the driver must re-arm the context by setting esn_event_arm back to 0x1. A race condition exists in this handling path. After validating the event, the driver calls mlx5_accel_esp_modify_xfrm() to update the kernel's xfrm state. This function temporarily releases and re-acquires the xfrm state lock. So, need to acknowledge the event first by setting esn_event_arm to 0x1. This prevents the driver from reprocessing the same ESN update if the hardware sends events for other reason. Since the next ESN update only occurs after nearly 2^31 packets are received, there's no risk of missing an update, as it will happen long after this handling has finished. Processing the event twice causes the ESN high-order bits (esn_msb) to be incremented incorrectly. The driver then programs the hardware with this invalid ESN state, which leads to anti-replay failures and a complete halt of IPSec traffic. Fix this by re-arming the ESN event immediately after it is validated, before calling mlx5_accel_esp_modify_xfrm(). This ensures that any spurious, duplicate events are correctly ignored, closing the race window.