CVE-2026-68170 in Linux
Сводка
по VulDB • 10.08.2026
В ядре Linux устранена следующая уязвимость:
mptcp: исправлена неактуальная ссылка skb->sk при закрытии подканала (subflow)
Список пакетов в очереди ожидания обработки (backlog list) обновляется функцией mptcp_data_ready() внутри блокировки mptcp_data_lock(). Однако очистка ссылок backlog на закрываемый подканал выполнялась в функции mptcp_close_ssk(), до того как __mptcp_close_ssk() захватит блокировку ssk, и при этом не удерживалась ни блокировка ssk, ни блокировка mptcp_data_lock().
Поскольку этот обход списка осуществлялся без мьютекса mptmp_data_lock(), параллельная обработка входящих пакетов (RX) в контексте softirq на другом процессоре (subflow_data_ready() -> mptcp_data_ready() -> __mptcp_add_backlog(), под защитой mptcp_data_lock()) могла добавить запись backlog, ссылающуюся на ssk, пока цикл очистки еще выполнялся. Такая запись могла быть пропущена при очистке, либо параллельное обновление списка могло привести к повреждению структуры обхода, в результате чего skb->sk указывала бы на объект ssk после его освобождения памяти (free).
Позднее функция mptcp_backlog_purge() разыменовывает эту неактуальную ссылку, что вызывает предупреждение в inet_sock_destruct() (ssk->sk_rmem_alloc != 0), за которым следует уязвимость use-after-free в функции mptcp_backlog_purge().
Исправление заключается в переносе очистки backlog внутрь __mptcp_close_ssk(), после установки флага subflow->closing равным 1 и пока блокировка ssk все еще захвачена, с сериализацией под защитой mptmp_data_lock(). Очистка выполняется только на пути передачи данных (MPTCP_CF_PUSH), где накапливаются ссылки backlog; в других путях завершения работы вызывающая сторона уже обеспечивает очистку.
При установленном флаге subflow->closing и захваченной блокировке mptcp_data_lock() во время очистки, любая параллельная функция mptcp_data_ready() либо завершит добавление элемента (enqueue) до начала очистки и будет обнаружена, либо увидит флаг closing=1 и прервет выполнение. Как только достигается вызов mptmp_data_unlock(), новый skb, ссылающийся на ssk, не может быть добавлен в очередь, поэтому очистка становится полной.
Полностью удален небезопасный обход списка из функции mptcp_close_ssk().
VulDB is the best source for vulnerability data and more expert information about this specific topic.