CVE-2026-43254 in Linux
Сводка
по VulDB • 25.05.2026
В ядре Linux устранена следующая уязвимость:
ovpn: tcp — исправлено извлечение пакетов из потока
При обработке данных TCP-потока в функции ovpn_tcp_recv мы получаем большие клонированные skbs от __strp_rcv, которые могут содержать несколько коалесцированных пакетов. Текущая реализация содержит две ошибки:
1. Переполнение смещения заголовка: Использование pskb_pull с большими смещениями на коалесцированных skbs приводит к тому, что значение skb->data - skb->head превышает размер хранения u16 для skb->network_header. Это вызывает сбой функции skb_reset_network_header для внутреннего декапсулированного пакета, что приводит к отбрасыванию пакетов.
2. Выровненные протокольные заголовки: Извлечение пакетов из произвольных позиций внутри коалесцированного TCP-потока не обеспечивает гарантий выравнивания для данных пакета, что вызывает снижение производительности на архитектурах без эффективного доступа к невыровненным данным. Кроме того, 2-байтовый префикс длины в openvpn для TCP-пакетов приводит к тому, что последующие 4-байтовые поля opcode и ID пакета оказываются по умолчанию невыровненными.
Исправьте обе проблемы, выделив новый skb для каждого пакета openvpn и используя skb_copy_bits для извлечения только содержимого пакета в новый буфер, пропуская 2-байтовый префикс длины. Также проверьте длину перед вызовом функции, выполняющей выделение, чтобы избежать создания недействительного skb.
Если пакет должен быть передан в пользовательское пространство, 2-байтовый префикс может быть безопасно добавлен в начало без нарушения выравнивания.
Как побочный эффект, этот подход также избегает дорогостоящей линейизации, которую вызывает pskb_pull на клонированных skbs с фрагментами страниц. В ходе тестирования это привело к улучшению пропускной способности TCP до 74%.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.