CVE: CVE-2026-80603
Продукт: Linux Kernel
Дата публикации: 28.08.2026
Критичность: CRITICAL
CVSS: 9.1 (3.1)
EPSS: 0,43%; процентиль 35,45%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В модуле netfilter Linux Kernel обнаружена уязвимость, позволяющая читать байт за границей буфера при обработке IRC-трафика. Это приводит к формированию некорректных conntrack-записей. Статья описывает механику ошибки, условия эксплуатации и способы проверки исправления.
Основные характеристики
Уязвимость позволяет нарушителю повлиять на логику отслеживания соединений, читая неинициализированные данные. Риск реализуется при обработке специально сформированного сетевого трафика.
- Тип ошибки: Off-by-one out-of-bounds read (чтение за границей буфера).
- CVSS 3.1: 9.1 (CRITICAL). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N.
- Условия атаки: Удаленный доступ, отсутствие необходимости в привилегиях или взаимодействии пользователя.
- Эксплуатация: Публичные данные о подтвержденной эксплуатации в реальных атаках отсутствуют.
- EPSS: 0,43% (вероятность эксплуатации в ближайшие 30 дней).
Какие продукты и версии затронуты
Уязвимость затрагивает ядра Linux, в которых включен модуль
nf_conntrack_irc. Ошибка присутствовала с версии 2.6.12-rc2 и была исправлена в стабильных ветках ядра.- Компонент:
net/netfilter/nf_conntrack_irc.c.
- Функция:
parse_dcc().
- Версии: Все ядра, не содержащие патч
ef6400ca25a13fd6dedbe8ef4a1d0979bbbfe88a.
- Особенность: Проблема проявляется только при активном парсинге DCC-команд в IRC-трафике.
Причина уязвимости
Причина ошибки заключается в несовпадении конвенций обработки указателей в функции
parse_dcc(). Функция ожидает, что параметр data_end указывает на последний валидный байт данных.Однако единственный вызывающий код передает
data_limit = ib_ptr + datalen, что указывает на позицию сразу после последнего валидного байта. В результате цикл поиска символа новой строки использует условие tmp <= data_end.Если в данных отсутствует символ
\n, цикл доходит до tmp == data_end и выполняет чтение *tmp. Это приводит к обращению к памяти за пределами области, заполненной функцией skb_header_pointer().Как работает атака
Атакующий отправляет в систему пакет IRC-трафика, содержащий DCC-команду без завершающего символа новой строки. Модуль
nf_conntrack_irc перехватывает пакет и передает данные в parse_dcc().Из-за off-by-one ошибки функция читает байт, расположенный за пределами валидных данных. Этот байт может содержать случайные или устаревшие данные из памяти. Если прочитанный байт является ASCII-цифрой, функция
simple_strtoul интерпретирует его как часть IP-адреса или порта.В результате в таблице conntrack формируется запись с некорректными параметрами. Это может привести к блокировке легитимного трафика или, в худшем случае, к обходу правил фильтрации.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:
- В ядре Linux должен быть загружен и активен модуль
nf_conntrack_irc.
- Система должна обрабатывать входящий IRC-трафик, проходящий через netfilter.
- Атакующий должен иметь возможность отправлять пакеты в систему (удаленный доступ).
- В пакете должна отсутствовать завершающая DCC-команду строка, чтобы спровоцировать выход за границы буфера.
Возможный сценарий атаки
Сценарий атаки начинается с отправки специально сформированного IRC-сообщения. Сообщение содержит DCC-команду, которая не завершается символом
\n в пределах переданных данных.Модуль netfilter обрабатывает пакет и вызывает
parse_dcc(). Функция ищет символ новой строки, но не находит его в валидной области. Цикл продолжает работу и читает байт за границей буфера.Если этот байт содержит цифру,
simple_strtoul формирует некорректный IP или порт. Conntrack-запись создается с этими параметрами. Атакующий может использовать это для манипуляции с правилами фильтрации или отслеживания соединений.Есть ли публичный эксплойт
На момент публикации CVE-2026-80603 публичные эксплойты или подтвержденные случаи эксплуатации в реальных атаках не зафиксированы. Ошибка была исправлена в ядре Linux, что снижает вероятность массового использования.
Отсутствие публичного эксплойта не означает, что уязвимость не может быть использована. Техническое описание ошибки и патч позволяют разработать эксплойт, но для этого требуется контроль над IRC-трафиком, проходящим через уязвимую систему.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для CVE-2026-80603 в доступных источниках не описаны. Для обнаружения атаки можно использовать следующие неспецифичные методы контроля:
- Мониторинг логов netfilter на наличие некорректных conntrack-записей.
- Анализ IRC-трафика на предмет DCC-команд без завершающих символов.
- Проверка целостности правил фильтрации на предмет неочевидных изменений.
- Контроль за аномальным поведением модуля
nf_conntrack_ircв логах ядра.
Как обнаружить атаку
Для обнаружения атаки рекомендуется использовать следующие методы:
- Логи netfilter: Ищите записи conntrack с некорректными IP-адресами или портами, которые не соответствуют ожидаемому трафику.
- Анализ трафика: Используйте инструменты для перехвата и анализа IRC-трафика, чтобы выявить DCC-команды без завершающих символов.
- Мониторинг ядра: Следите за сообщениями об ошибках или предупреждениями, связанными с модулем
nf_conntrack_irc.
- Аудит правил: Регулярно проверяйте правила iptables/nftables на предмет неочевидных изменений, которые могли быть вызваны некорректными conntrack-записями.
Как проверить свою версию
Для проверки версии ядра и наличия уязвимости используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Сравните полученную версию с списком исправленных версий в официальных источниках. Если ядро не содержит патч
ef6400ca25a13fd6dedbe8ef4a1d0979bbbfe88a, система уязвима.Исправление
Для устранения уязвимости необходимо обновить ядро Linux до версии, содержащей патч
ef6400ca25a13fd6dedbe8ef4a1d0979bbbfe88a. Патч изменяет условие цикла в parse_dcc() с tmp <= data_end на tmp < data_end.- Обновление ядра: Используйте пакетный менеджер вашей дистрибутива для обновления ядра.
- Проверка патча: Убедитесь, что в исходном коде ядра применены изменения из патча.
- Перезагрузка: После обновления ядра выполните перезагрузку системы для применения изменений.
Временные меры защиты
Пока обновление ядра не выполнено, можно использовать следующие временные меры:
- Отключение модуля: Если возможно, отключите модуль
nf_conntrack_ircс помощьюmodprobe -r nf_conntrack_irc.
- Фильтрация трафика: Настройте правила iptables/nftables для блокировки IRC-трафика, если он не является критическим для работы системы.
- Мониторинг: Усиленный мониторинг conntrack-записей для выявления некорректных данных.
- Изоляция: Ограничьте доступ к системе из внешних сетей, если это допустимо.
Как проверить устранение уязвимости
Для проверки успешного устранения уязвимости выполните следующие шаги:
- Проверка версии: Убедитесь, что версия ядра содержит патч
ef6400ca25a13fd6dedbe8ef4a1d0979bbbfe88a.
- Тестирование: Отправьте тестовый IRC-трафик с DCC-командой без завершающего символа и проверьте, что conntrack-записи формируются корректно.
- Аудит логов: Проверьте логи netfilter на наличие ошибок или предупреждений, связанных с
nf_conntrack_irc.
- Проверка правил: Убедитесь, что правила фильтрации не были изменены некорректными conntrack-записями.
Вывод
CVE-2026-80603 представляет собой серьезную уязвимость в модуле netfilter Linux Kernel, позволяющую нарушителю манипулировать conntrack-записями через off-by-one ошибку. Обновление ядра до версии с патчем
ef6400ca25a13fd6dedbe8ef4a1d0979bbbfe88a является основным способом устранения риска. Временные меры включают отключение модуля и усиленный мониторинг.Официальные источники
- NVD — CVE-2026-80603
- FIRST EPSS — CVE-2026-80603
- netfilter: nf_conntrack_irc: fix parse_dcc() off-by-one OOB read - kernel/git/stable/linux.git - Linux kernel stable tree
- netfilter: nf_conntrack_irc: fix parse_dcc() off-by-one OOB read - kernel/git/stable/linux.git - Linux kernel stable tree
- netfilter: nf_conntrack_irc: fix parse_dcc() off-by-one OOB read - kernel/git/stable/linux.git - Linux kernel stable tree
- netfilter: nf_conntrack_irc: fix parse_dcc() off-by-one OOB read - kernel/git/stable/linux.git - Linux kernel stable tree
- netfilter: nf_conntrack_irc: fix parse_dcc() off-by-one OOB read - kernel/git/stable/linux.git - Linux kernel stable tree
- netfilter: nf_conntrack_irc: fix parse_dcc() off-by-one OOB read - kernel/git/stable/linux.git - Linux kernel stable tree
- netfilter: nf_conntrack_irc: fix parse_dcc() off-by-one OOB read - kernel/git/stable/linux.git - Linux kernel stable tree
- netfilter: nf_conntrack_irc: fix parse_dcc() off-by-one OOB read - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 02.09.2026 — Опубликована первая версия материала.
