К обсуждениям

Linux IPVS: проверяем checksum для клиентского ICMPv6

Редакция VOne Технологии

Практический аудит Linux IPVS после исправления проверки checksum ICMPv6: границы пути, отрицательный контроль и безопасные счётчики в отдельном namespace.

Граница исправления: IPVS ICMPv6 input path

В ip_vs_in_icmp_v6 отсутствовала проверка checksum входящих клиентских ICMPv6-пакетов; исправление добавляет её до дальнейшей обработки. Это узкая граница IPVS ICMPv6 input path: совпадение версии Linux, семейства устройства или общего симптома ещё не устанавливает достижимость именно этого path. Карточка GHSA-mp45-vjm2-gvhg сопоставляет проблему с CVE-2026-80901, а stable commit показывает фактическое изменение upstream. Сначала подтверждают загруженное ядро и наличие backport, затем конфигурацию компонента и только потом runtime-ветку. Отсутствие сбоя в одном запуске не равно PASS, а наличие advisory не означает инцидент. Все UNKNOWN сохраняют до получения provenance; выводы не расширяют на другие drivers или версии.

Артефакт контроля для IPVS ICMPv6 input path

Основной рабочий артефакт — таблица namespace × IPVS service × ICMPv6 checksum state × validation counter × forwarding result. В исходную строку входят kernel build и commit, включённые IPVS modules, тестовый IPv6 service, namespace routes, checksum offload state и исходные counters. Каждое поле получает фактическое значение, TRUE/FALSE/UNKNOWN и ссылку на воспроизводимый источник: package digest, runtime symbol, trace marker либо selftest output. Версия из репозитория или панели не заменяет хеш загруженного kernel image. IP, usernames, ключи, содержимое buffers, пользовательские файлы и длинные raw logs исключают; достаточно относительных ids и агрегированных counters.

Обратимый тест: linux-ipvs-icmpv6-checksum-validation-check

В двух временных network namespaces подать один корректный и один намеренно отмеченный тестовым генератором некорректный ICMPv6 frame, не маршрутизируя их за пределы veth-пары. Перед стартом фиксируют SHA-256 fixture, baseline counters и конкретный rollback либо snapshot. Меняют один фактор, ограничивают число итераций и deadline, после чего выполняют штатный teardown и повторно снимают те же показатели. Положительный контроль подтверждает работоспособность harness; отрицательный должен остановиться на ожидаемой границе, а не просто не упасть. Реальные пользовательские данные, внешняя сеть и production credentials в fixture не входят.

PASS и решение по CVE-2026-80901

PASS: Корректный контроль достигает ожидаемой ветки, некорректный checksum отбрасывается до IPVS transformation, а счётчики namespace и tracepoint подтверждают разные исходы. Рекомендуемое действие: Перейти на stable kernel с исправлением; временно ограничить вход к затронутому IPVS edge доверенным источником, не отключая checksum validation. UPDATE-REQUIRED ставят при affected runtime или отсутствии подтверждённого backport. NOT-REACHABLE допустим только для проверенного entry point, а не для всего продукта. UNKNOWN нужен при расхождении binary, config и документации. После штатного обновления повторяют тот же узкий control и один нормальный smoke-test, не совмещая это с firmware, network, storage или policy changes: иначе причинность результата потеряется.

Stop-rule для IPVS ICMPv6 input path

Не использовать внешние адреса, production virtual services либо массовую генерацию пакетов; прекратить при выходе трафика из namespace или изменении host routing. После первого неожиданного warning, timeout, sanitizer report или изменения за пределами fixture не повышают нагрузку, права и объём входа. Тест не должен превращаться в воспроизведение атаки: не ищут дополнительные malformed variants, не публикуют trigger bytes, memory dumps, адреса и конфигурацию инфраструктуры. Если безопасной модели недостаточно для решения, работу останавливают и передают владельцу kernel/platform минимальный evidence pack; advisory используется как граница проверки, а не как утверждение о прошлом событии.

Минимальный пакет сопровождения IPVS ICMPv6 input path

Передать владельцу следует только: kernel digest, список загруженных IPVS modules, namespace topology, два checksum состояния, counters до/после и SHA-256 тестового генератора. Добавляют московское время, expected/actual, прямые ссылки на GHSA-mp45-vjm2-gvhg и stable commit, а также владельца rollback. Перед отправкой удаляют абсолютные домашние пути, hostnames, IP, serial numbers, pid, session identifiers, cookies, токены и payloads. Пакет должен позволять проверить ровно один заявленный инвариант, но не раскрывать среду. Он не доказывает отсутствие прошлой эксплуатации, применимость к иной сборке, массовость пользовательской боли, поисковый спрос, индексацию либо будущие позиции страницы.

Материал подготовлен редакцией VOne с помощью автоматизированного черновика. Факты и границы вывода сверены 5 сентября 2026 года по прямой advisory и первичному stable commit. Текст написан самостоятельно; опасные действия и реальные пользовательские данные не использовались.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.