Ad

CVE-2026-80982

HIGH CVSS 3.1: 7,8 EPSS 0.16%
Обновлено 14 сентября 2026
Linux
Параметр Значение
CVSS 7,8 (HIGH)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: net/smc: исправлено использование после освобождения в smc_rx_pipe_buf_release() smc_rx_splice() передает страницы ПКМ в канал и принимает ссылку на сокет для каждой записи, поэтому smc_sock остается активным до тех пор, пока программа чтения не завершит работу. соединения нет: одновременное закрытие запускает smc_conn_free(), который освобождает буфер приема обратно в пул канальной группы. smc_rx_pipe_buf_release() проверяет sk_state перед блокировкой сокета. Состояние может меняться между проверкой и блокировкой, и smc_rx_update_cons() затем разыменовывает conn->rmb_desc и переходит conn->lgr, который smc_conn_free() уже выпустил. На is_reg_err путь smcr_buf_unuse() полностью освобождает дескриптор, поэтому это использование после бесплатного использования.

Сначала возьмите блокировку сокета и вместо этого проверьте conn->freed. smc_conn_free() устанавливает этот флаг перед тем, как что-либо освободить, и каждый раз вызывающий абонент удерживает блокировку сокета. Оба пути исключают друг друга: либо выпуск канала запускается первым со всем действительным или видит флаг и пропускает обновление.

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

In the Linux kernel, the following vulnerability has been resolved: net/smc: fix use-after-free in smc_rx_pipe_buf_release() smc_rx_splice() hands RMB pages to a pipe and takes a socket reference per entry so the smc_sock stays alive until the reader finishes. The connection does not: a concurrent close runs smc_conn_free(), which releases the receive buffer back to the link group pool. smc_rx_pipe_buf_release() tests sk_state before taking the socket lock. The state can change between the test and the lock, and smc_rx_update_cons() then dereferences conn->rmb_desc and walks conn->lgr, which smc_conn_free() has already released. On the is_reg_err path smcr_buf_unuse() frees the descriptor outright, so this is a use-after-free. Take the socket lock first and test conn->freed instead. smc_conn_free() sets that flag before releasing anything, and every caller holds the socket lock. The two paths exclude each other: either the pipe release runs first with everything valid, or it sees the flag and skips the update.

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1