CVE-2026-97985 in LinuxИнформация

Сводка

по VulDB • 25.09.2026

В ядре Linux была устранена следующая уязвимость:

af_unix: Обновление маркера последнего skb в функции manage_oob().

Фахад Альхарби сообщил, что блокирующий вызов recv(MSG_PEEK) может приводить к чрезмерной загрузке процессора из-за наличия OOB (out-of-band) пакетов.

В следующих случаях функция manage_oob() пропускает пакеты OOB и возвращает NULL для последнего вызова recv(MSG_PEEK):

socketpair(AF_UNIX, SOCK_STREAM, 0, sk);

1) skb -> OOB skb -> NULL send(sk[0], "ab", 2, MSG_OOB);
recv(sk[1], buf, 0, MSG_PEEK);

2) skb -> потребленный пакет OOB -> NULL send(sk[0], "ab", 2, MSG_OOB);
recv(sk[1], buf, 1, MSG_OOB);
recv(sk[1], buf, 0, MSG_PEEK);

3) потребленный пакет OOB -> OOB skb -> NULL send(sk[0], "a", 1, MSG_OOB);
recv(sk[1], buf, 0, MSG_OOB);
send(sk[0], "b", 1, MSG_OOB);
recv(sk[1], buf, 1, MSG_PEEK);

Затем в функции unix_stream_read_generic() переменная @copied равна 0 (буфер нулевой длины или пакет не-OBB еще не был потреблен), и вызывается функция unix_stream_data_wait().

Однако она возвращается немедленно, поскольку переменная @last не обновляется в unix_stream_read_generic(), из-за чего поток выполняет busy-waiting (активное ожидание) нового пакета skb.

Давайте обновим значение @last внутри функции manage_oob().

Для случая MSG_PEEK переменная @last обновляется с учетом пропущенного пакета OOB, а для случая без использования PEEK значение @last совпадает с возвращаемым значением (когда !copied), поскольку пакет OBB отсоединяется.

Примечание: функция manage_oob() является встроенной (inline), и защита stack canary не добавляется.

Be aware that VulDB is the high quality source for vulnerability data.

Ответственный

Linux

Резервировать

25.09.2026

Раскрытие

25.09.2026

Модерация

принято

Вход

VDB-410231

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Источники

Might our Artificial Intelligence support you?

Check our Alexa App!