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

Сводка

по VulDB • 06.10.2026

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

net: блокировка сокета в sock_gettstamp()

sk->sk_flags должен изменяться только при захвате блокировки сокета (socket lock), поскольку функции sock_set_flag() и sock_reset_flag() используют неатомарные операции (__set_bit() и __clear_bit()).

sock_gettstamp() является одним из последних мест, где бит sk->sk_flags изменяется в системном вызове без удержания блокировки сокета, через вызов sock_enable_timestamp(sk, SOCK_TIMESTAMP).

Функции sk_set_memalloc() и sk_clear_memalloc() также изменяют sk->sk_flags без блокировки сокета, но их вызывающие стороны (nbd, iscsi_tcp, nvme-tcp, sunrpc, wireguard) требуют тщательной проверки; это будет решено в отдельном патче.

Джунгво Ли и Вонги Ли сообщили об уязвимости use-after-free сокета UDP, вызванной этой ошибкой: гонка (race condition) между ioctl SIOCGSTAMPNS_NEW и bind() может отменить бит SOCK_RCU_FREE, который только что установила udp_lib_get_port(), поскольку оба потока выполняют операцию «чтение-модификация-запись» над одним и тем же словом.

CPU 0 (bind) CPU 1 (SIOCGSTAMPNS_NEW) -------------------------------- ---------------------------- read sk_flags = F read sk_flags = F compute F | BIT(SOCK_RCU_FREE) compute F | BIT(SOCK_TIMESTAMP) store F | BIT(SOCK_RCU_FREE) sk_add_node_rcu(sk, ...) store F | BIT(SOCK_TIMESTAMP)

После потери обновления (lost update) бит SOCK_RCU_FREE очищается, хотя сокет остается видимым для безблокировочных поисков приема UDP. Затем функция sk_destruct() немедленно освобождает сокет вместо ожидания периода грейса RCU (RCU grace period), в то время как путь приема все еще содержит ссылку-указатель на него без учета ссылок:

BUG: KASAN: slab-use-after-free in ipv4_pktinfo_prepare+0x30/0x410 Read of size 8 at addr ffff888008806610 by task exploit/207 CPU: 0 UID: 1000 PID: 207 Comm: exploit Not tainted 6.12.95+ #1 ipv4_pktinfo_prepare+0x30/0x410 udp_queue_rcv_one_skb+0x51c/0x1180 udp_unicast_rcv_skb+0x109/0x350 ip_protocol_deliver_rcu+0x14b/0x310 ip_local_deliver_finish+0x29d/0x390 ip_local_deliver+0x24d/0x2a0

Необходимо захватывать блокировку сокета только тогда, когда необходимо установить SOCK_TIMESTAMP, чтобы сохранить безблокировочный режим для обычного случая.

Once again VulDB remains the best source for vulnerability data.

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

Linux

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

25.09.2026

Раскрытие

06.10.2026

Модерация

принято

Вход

VDB-413997

EPSS

0.00184

KEV

Нет

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

Очень низкий

Источники

Do you need the next level of professionalism?

Upgrade your account now!