CVE-2026-80615 в Linux Kernel: ложное срабатывание memcpy overflow в tun_dst_unclone

CVE: CVE-2026-80615
Продукт: Linux Kernel
Дата публикации: 28.08.2026
Критичность: HIGH
CVSS: 8.2 (3.1)
EPSS: 0,35%; процентиль 27,99%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В Linux Kernel устранена проблема в функции tun_dst_unclone, вызывающая ложное срабатывание механизма защиты от переполнения буфера (memcpy overflow) при обработке туннелей GENEVE.

Ошибка возникает при компиляции с clang и source fortification, приводя к срабатыванию __fortify_report и потенциальному прерыванию работы.

Исправление разбивает копирование данных на два этапа, чтобы корректно определить длину буфера. Обновление критично для систем, использующих туннели и скомпилированных с усиленной защитой, так как ложное срабатывание может нарушить сетевую функциональность.

Основные характеристики​


Риск связан не с реальным переполнением памяти, а с ложным срабатыванием встроенной защиты ядра, что может привести к отказу в обслуживании сетевых функций при обработке туннелей. Метрики отражают потенциальное влияние на доступность, но вероятность эксплуатации в реальных атаках крайне мала.

  • Тип ошибки: Ложное срабатывание защиты (false-positive) при проверке memcpy. Механизм fortification ошибочно интерпретирует корректную операцию как переполнение буфера.
  • CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H (8.2, HIGH). Высокая оценка обусловлена сетевым вектором и влиянием на доступность, хотя фактическая эксплуатация как уязвимости маловероятна.
  • Условия атаки: Требуется компиляция ядра с clang и включенным source fortification, а также активное использование туннелей GENEVE.
  • Факт эксплуатации: Подтвержденных случаев эксплуатации в реальных атаках нет. Ошибка обнаружена при разработке и тестировании.
  • EPSS: 0,35% (процентиль 27,99%). Низкая вероятность эксплуатации в ближайшие 30 дней, что соответствует статусу «ложное срабатывание».

Какие продукты и версии затронуты​


Затронуты версии Linux Kernel, содержащие функцию tun_dst_unclone в файле include/net/dst_metadata.h и скомпилированные с clang и source fortification. Конкретные номера версий не указаны в источниках, но исправление внесено в stable-ветки ядра.

  • Компонент: Подсистема net: dst_metadata, отвечающая за метаданные туннелей.
  • Функция: tun_dst_unclone, вызываемая при обработке пакетов GENEVE.
  • Условие сборки: Ядро должно быть скомпилировано с clang и включенным source fortification (CONFIG_FORTIFY_SOURCE).
  • Исправление: Внесено в stable-ветки ядра, см. ссылки на коммиты в разделе «Исправление».

Причина уязвимости​


Причина кроется в несовпадении между метаданными структуры и фактическим размером выделяемой памяти. Функция kmalloc_flex() в metadata_dst_alloc() устанавливает атрибут __counted_by для структуры на значение options_len, которое затем инициализируется нулем. При последующем копировании туннельной информации вместе с опциями компилятор оценивает, что опции не помещаются в структуру, хотя память для них фактически выделена.

Это приводит к срабатыванию механизма защиты __fortify_report, который интерпретирует операцию как переполнение буфера. Проблема возникает из-за того, что длина options_len изменяется после выделения памяти, что затрудняет корректную проверку границ при компиляции с clang и source fortification.

Как работает атака​


Атака не является классической эксплуатацией уязвимости, а представляет собой сценарий, при котором легитимная сетевая операция приводит к ложному срабатыванию защиты. При обработке пакетов GENEVE функция tun_dst_unclone копирует туннельную информацию, включая опции, в новую структуру. Из-за некорректного определения длины буфера механизм fortification срабатывает, вызывая __fortify_report и потенциально прерывая работу.

Следствием может стать отказ в обслуживании сетевых функций, так как ядро может прервать обработку пакета или завершить работу процесса. Однако это не приводит к удаленному выполнению кода или повышению привилегий, а лишь к нарушению доступности.

Условия успешной эксплуатации​


Для срабатывания проблемы необходимо соблюдение следующих условий:

  • Ядро скомпилировано с clang и включенным source fortification (CONFIG_FORTIFY_SOURCE).
  • Активно используются туннели GENEVE, вызывающие функцию tun_dst_unclone.
  • В туннеле присутствуют опции, размер которых приводит к несовпадению с метаданными __counted_by.
  • Система обрабатывает сетевой трафик, проходящий через GENEVE-туннель.

Возможный сценарий атаки​


Сценарий срабатывания: администратор настраивает GENEVE-туннель с опциями для маршрутизации трафика. При обработке первого пакета с опциями функция tun_dst_unclone пытается скопировать туннельную информацию.

Механизм fortification, некорректно оценив размер буфера, срабатывает, вызывая __fortify_report. Ядро прерывает обработку пакета, что приводит к потере трафика или сбое в работе сетевого сервиса.

Пользователи могут наблюдать ошибки в логах ядра и нарушение сетевой связности.

Есть ли публичный эксплойт​


Публичный эксплойт отсутствует. Ошибка была обнаружена при разработке и тестировании, а не в ходе реальных атак.

В источниках нет сведений о PoC, техническом описании атаки или подтвержденной эксплуатации. Отсутствие эксплойта не означает, что проблема неактуальна, но подтверждает, что риск связан с ложным срабатыванием защиты, а не с возможностью удаленного компрометирования системы.

Признаки эксплуатации​


Специфичных IOC для этой проблемы нет, так как она не связана с атакой, а с ложным срабатыванием защиты. Общие точки контроля (неспецифичные):

  • Записи в логах ядра, содержащие __fortify_report и memcpy: detected buffer overflow.
  • Сбои в работе сетевых сервисов, использующих GENEVE-туннели.
  • Ошибки в логах приложений, связанных с обработкой туннельного трафика.

Эти признаки могут указывать на проблему, но также могут быть вызваны другими причинами, поэтому требуют дополнительной диагностики.

Как обнаружить атаку​


Для обнаружения проблемы необходимо анализировать логи ядра на наличие записей __fortify_report и memcpy: detected buffer overflow. Также следует проверять логи сетевых сервисов на признаки сбоев при обработке GENEVE-трафика.

Специфичных IOC нет, поэтому диагностика должна включать проверку конфигурации ядра (clang, source fortification) и мониторинг сетевой функциональности. Рекомендуется использовать инструменты аудита ядра и сетевых логов для выявления аномалий.

Как проверить свою версию​


Для проверки версии ядра и наличия исправления используйте следующие команды:

Bash:
uname -r
uname -a
cat /proc/version

Эти команды покажут текущую версию ядра. Для проверки наличия конкретного исправления необходимо сверить версию с релизными заметками дистрибутива или проверить наличие коммитов 4c6d43db2a4d2cef3921e885cf34798f790d34ea и 7ce31739fe88a558370135db95bbeec1e7ddfc29 в истории ядра. Если используется дистрибутив, проверьте обновления через пакетный менеджер.

Исправление​


Исправление внесено в stable-ветки Linux Kernel. Необходимо обновить ядро до версии, содержащей коммиты 4c6d43db2a4d2cef3921e885cf34798f790d34ea и 7ce31739fe88a558370135db95bbeec1e7ddfc29. Ссылки на коммиты:


Для пользователей дистрибутивов рекомендуется установить обновления через пакетный менеджер. Если обновление невозможно, рассмотрите отключение source fortification или перекомпиляцию ядра без clang, хотя это снижает общую безопасность.

Временные меры защиты​


Пока обновление не установлено, можно временно снизить риск, отключив source fortification при компиляции ядра или переключившись на компилятор GCC, если это допустимо. Также можно ограничить использование GENEVE-туннелей с опциями, если это не критично для инфраструктуры.

Однако эти меры не устраняют проблему полностью, а лишь снижают вероятность срабатывания. Рекомендуется планировать обновление ядра в ближайшем окне обслуживания.

Как проверить устранение уязвимости​


После обновления ядра проверьте, что проблема устранена, проведя тестирование GENEVE-туннелей с опциями. Убедитесь, что в логах ядра отсутствуют записи __fortify_report и memcpy: detected buffer overflow.

Также проверьте, что сетевая функциональность работает корректно. Для автоматической проверки можно использовать скрипты, которые генерируют тестовый трафик через GENEVE-туннель и анализируют логи на наличие ошибок.

Вывод​


CVE-2026-80615 представляет собой ложное срабатывание механизма защиты ядра, а не классическую уязвимость. Риск связан с нарушением доступности сетевых функций при обработке GENEVE-туннелей, но не с удаленным компрометированием.

Обновление ядра до версии с исправлением критично для систем, использующих туннели и скомпилированных с clang и source fortification. Откладывать обновление не рекомендуется, так как ложное срабатывание может нарушить сетевую функциональность и привести к сбоям в работе критичных сервисов.

Официальные источники​


  1. NVD — CVE-2026-80615
  2. FIRST EPSS — CVE-2026-80615
  3. net: dst_metadata: fix false-positive memcpy overflow in tun_dst_unclone - kernel/git/stable/linux.git - Linux kernel stable tree
  4. net: dst_metadata: fix false-positive memcpy overflow in tun_dst_unclone - kernel/git/stable/linux.git - Linux kernel stable tree
  5. CVEs — The Linux Kernel documentation

История обновлений статьи​


  • 02.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ