Ad

CVE-2026-80615

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

В ядре Linux устранена следующая уязвимость: net: dst_metadata: исправлено ложное срабатывание переполнения memcpy в tun_dst_unclone kmalloc_flex() в Metadata_dst_alloc() устанавливает __counted_by для структуру в options_len, которая затем инициализируется нулем. Позже мы инициализируем структуру, копируя информацию о туннеле. вместе с опциями, и это вызывает предупреждение о потенциальном переполнение memcpy, поскольку компилятор считает, что параметры не могут вписываются в структуру, хотя память для них на самом деле выделено. memcpy: обнаружено переполнение буфера: запись 104 байт буфера размером 96 ВНИМАНИЕ: ЦП: X PID: Y в lib/string_helpers.c:1036 __fortify_report skb_tunnel_info_unclone+0x179/0x190 Geneve_xmit+0x7fe/0xe00 Проблема возникает при сборке с использованием Clang и улучшения исходного кода. Исправьте это, выполнив копирование в два этапа: сначала — основные данные с options_len, затем options.

Таким образом, правильная длина должна быть известны на момент копирования. Было бы лучше, если бы options_len никогда не менялся после выделения, но код выделения немного отличается от инициализации и было бы неудобно и потенциально опасно возвращать структуру с параметром options_len, установленным в ненулевое значение из метаданных_dst_alloc(). Другой вариант — использовать ip_tunnel_info_opts_set(), но это выполнение слишком большого количества ненужных операций для данного варианта использования.

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

In the Linux kernel, the following vulnerability has been resolved: net: dst_metadata: fix false-positive memcpy overflow in tun_dst_unclone kmalloc_flex() in metadata_dst_alloc() sets __counted_by for the structure to the options_len, which is then initialized to zero. Later, we're initializing the structure by copying the tunnel info together with the options, and this triggers a warning for a potential memcpy overflow, since the compiler estimates that the options can't fit into the structure, even though the memory for them is actually allocated. memcpy: detected buffer overflow: 104 byte write of buffer size 96 WARNING: CPU: X PID: Y at lib/string_helpers.c:1036 __fortify_report skb_tunnel_info_unclone+0x179/0x190 geneve_xmit+0x7fe/0xe00 The issue is triggered when built with clang and source fortification. Fix that by doing the copy in two stages: first - the main data with the options_len, then the options. This way the correct length should be known at the time of the copy. It would be better if the options_len never changed after allocation, but the allocation code is a little separate from the initialization and it would be awkward and potentially dangerous to return a struct with options_len set to a non-zero value from the metadata_dst_alloc(). Another option would be to use ip_tunnel_info_opts_set(), but it is doing too many unnecessary operations for the use case here.

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

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

Последствия

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

Строка CVSS v3.1