CVE-2026-99059 in Linux
Сводка
по VulDB • 24.10.2026
В ядре Linux устранена следующая уязвимость:
wireguard: noise — отклонять потребление ответа после промежуточной инициации
Два потока начинают обработку одного и того же сообщения-ответа, полученного дважды. Первый поток A запускается. Пока он выполняется, второй поток B частично завершает свою часть работы, и во время этого медленного вычисления или даже при блокировке на down_write() поток A завершается, а затем также выполняется уже запланированная инициация рукопожатия в потоке C, который сам получает тот же самый down_write(). Создание инициации рукопожатия успешно, состояние возвращается к "ожидание ответа", и вызывается up_write(), после чего возобновляет работу поток B, поскольку либо он завершил свои вычисления, либо наконец смог получить down_write(). Поток B затем копирует состояние обратно в пир (peer) и начинает новую сессию, используя это состояние, которое является той же самой сессией, что и созданная в потоке A.
Поток А Поток В Поток С
down_read() sA = handshake->state memcpy(cA, handshake->crypto) up_read() if (sA != 1) goto fail slow_crypto(cA) down_read() sB = handshake->state memcpy(cB, handshake->crypto) up_read() if (sB != 1) goto fail slow_crypto(cB) down_write() if (sA != handshake->state) goto fail memcpy(handshake->crypto, cA) handshake->state = 2 up_write() down_write() if (handshake->state != 2) goto fail derive_session(handshake->crypto) up_write() down_write() slow_crypto(handshake->crypto) handshake->state = 1 up_write() down_write() if (sB != handshake->state) goto fail memcpy(handshake->crypto, cB) handshake->state = 2 up_write() down_write() if (handshake->state != 2) goto fail derive_session(handshake->crypto) up_write()
Похоже, что на практике это практически невозможно использовать значимым образом, но чтобы гарантировать, что этого абсолютно не может произойти, сравнивается эфемерный закрытый ключ, находящийся в стеке, с последним из них, который имеет состояние рукопожатия пира.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.