Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
kpatch-cve-2026-98432 — kpatch livepatch для CVE-2026-98432 (и CVE-2026-99999) на AlmaLinux и Rocky Linux 8, 9 и 10 | Kitploit
Инструменты/GitHubGitHub/nsrg-fmlorg/kpatch-cve-2026-98432
Оборонительные ИнструментыАнализ уязвимостейЭксплуатацияСкриптинг и автоматизацияУтилиты и фреймворки
GitHubnsrg-fmlorg/kpatch-cve-2026-98432

kpatch-cve-2026-98432

kpatch livepatch для CVE-2026-98432 (и CVE-2026-99999) на AlmaLinux и Rocky Linux 8, 9 и 10

Репозиторий
113 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

kpatch livepatch для CVE-2026-98432 на AlmaLinux и Rocky Linux

日本語

Модули livepatch, исправляющие CVE-2026-98432 на работающем хосте AlmaLinux или Rocky Linux 8, 9 или 10 (x86_64) без перезагрузки. На ядрах, в которых также отсутствует исправление для CVE-2026-99999, тот же модуль исправляет и его, поэтому хосту достаточно одного модуля, независимо от того, какого из двух исправлений не хватает его ядру.

Статус (2026-11-02): каждый модуль собран и протестирован на загрузку; ни один ещё не выпущен, поэтому применять пока нечего. Далее последуют релиз и тест однострочной команды на каждом выпущенном модуле; до тех пор scripts/livepatch.sh не имеет модулей в своей таблице и отказывает для любого ядра.

Ядра

684 ядра: 380 от AlmaLinux и 304 от Rocky Linux, от 8.3 до 10.2, перечислены в tools/kernels.tsv. Это все ядра, чьи SRPM и debuginfo находятся на зеркалах дистрибутива (включая vault), только x86_64, за исключением Rocky 5.14.0-611.41.1.el9_7, чей debuginfo отсутствует ни на одном зеркале. Он включает единственное ядро Rocky 8.3, 4.18.0-240.22.1.el8, которое прежний репозиторий Rocky не покрывал, и ядра, выпущенные обоими дистрибутивами после прежних репозиториев, вплоть до 4.18.0-553.180.1.el8_10 (AlmaLinux), 5.14.0-687.61.1.el9_8 и 6.12.0-211.69.1.el10_2. Вариант x86_64_v2 для AlmaLinux 10 не покрыт.

В 666 из 684 также отсутствует исправление для CVE-2026-99999, и их модуль содержит оба. Остальные 18 уже имеют его (начиная с AlmaLinux 4.18.0-553.177.1.el8_10 и Rocky 553.178.1.el8_10, а также с 5.14.0-687.59.1.el9_8 и 6.12.0-211.67.1.el10_2 в обоих), и их модуль содержит только изменение из CVE-2026-98432.

Что было протестировано

Каждый модуль был собран в CI и применён с помощью scripts/livepatch.sh к поставляемому ядру в виртуальной машине (tools/loadtest.sh), 2026-10-31, по одному запуску на дистрибутив и минорную версию, 40 запусков; все 684 вывели RESULT: PASS. В каждом:

  • inet_sock_destruct и tcp_v4_reqsk_destructor указаны как пропатченные функции vmlinux.
  • 2 000 TCP-соединений через loopback из сокета с установленными IP-опциями, и 2 000 «голых» SYN с IP-опциями из raw-сокета, выполнялись без ошибок и без предупреждений ядра (tools/tcpopt.py). Это задействует оба освобождения, которые изменяет исправление, при наличии опций; без IP-опций они освобождают только NULL.
  • Там, где модуль содержит часть CVE-2026-99999, она вступает в силу на vmlinux, nfnetlink_queue и xt_CHECKSUM (а на 9 и 10 — nf_conntrack_bridge). На 8 и 9 (511 ядер, а также Rocky 8.3) специально сформированный кадр фрагментировался поставляемым ядром и отбрасывался с применённым модулем. На 10 (154 ядра) кадр отклоняется до того, как достигнет уязвимости, поэтому эта проверка там ничего не говорит ни в ту, ни в другую сторону.
  • У 665 ядер был модуль из прежних репозиториев. Он был загружен первым, и новый модуль заменил его: прежний патч был отключён, а его модуль выгружен.
  • Затем модуль был отключён и удалён.

Не тестировалось: сама гонка. Демонстрация CVE-2026-98432 на поставляемом ядре и её отсутствия с модулем требует KASAN и искусственного чередования повторно переданного SYN с освобождением дочернего сокета; в этих виртуальных машинах это не происходит по требованию. Также ни один модуль не тестировался с включённой Secure Boot (он не подписан и был бы отклонён) или загруженным при загрузке через kpatch.service.

Как создаются порты

tools/mkdiffs.sh портирует каждый SRPM ядра минорной версии. Сначала он применяет собственные патчи SRPM к его tarball, как это делает %prep (tools/prep.py): AlmaLinux таким образом несёт свои собственные исправления, среди них исправление CVE-2026-99999 в 4.18.0-553.177.1.el8_10, а 6.12.0-211.69.1 из 10.2 представляет собой tarball Red Hat 211.56.1 плюс 466 патчей, поэтому порт, сделанный против голого tarball, упустил бы то, что есть в ядре. Затем изменённые строки сверяются с tools/ref/: строки CVE-2026-98432 должны совпадать с upstream, строки CVE-2026-99999 — с патчем AlmaLinux для 8 или 9 либо с upstream для 10, или отсутствовать там, где ядро имеет это исправление. Все 684 совпали. tools/port.py также останавливается, если kfree_rcu() в дереве не пропускал бы NULL-указатель, каковыми обычно являются оба указателя.

8 и 9 собираются с помощью kpatch-build, 10 — с помощью собственного klp-build ядра; оба собирают replace-патчи, что позволяет модулю заменить более ранний.

CVE-2026-98432

Исправление в upstream — torvalds/linux e3f33b0a1d89, "ipv4: free inet_opt and ireq_opt after an RCU grace period". Когда SYN содержит IP-опции, слушатель сохраняет их в request-сокете (ireq_opt) и передаёт дочернему сокету (inet_opt) без копирования. Повторно переданный SYN для того же запроса может быть отвечен SYN-ACK на другом CPU, читая эти опции под RCU, в то время как дочерний сокет закрывается и inet_sock_destruct() освобождает их обычным kfree(): use after free. Миграция request-сокета имеет ту же проблему в tcp_v4_reqsk_destructor(). Исправление освобождает оба указателя через kfree_rcu().

Ни один из дистрибутивов не выпустил исправление: на 2026-10-27 новейшие ядра AlmaLinux и Rocky Linux 8, 9 и 10 не упоминали CVE в своих changelog, а исходники 4.18.0-305.3.1.el8_4, 4.18.0-553.179.1.el8_10, 5.14.0-687.61.1.el9_8 и 6.12.0-211.68.1.el10_2 по-прежнему освобождают оба указателя через kfree().

CVE-2026-99999

Исправлено ранее, отдельно для каждого дистрибутива, с помощью nsrg-fmlorg/kpatch-alma-cve-2026-99999 и nsrg-fmlorg/kpatch-rocky-cve-2026-99999. Оба дистрибутива теперь поставляют ядра с этим исправлением, начиная с 4.18.0-553.177.1.el8_10 (AlmaLinux) или 553.178.1.el8_10 (Rocky), 5.14.0-687.59.1.el9_8 и 6.12.0-211.67.1.el10_2. Там, где ядро его не содержит, модуль из этого репозитория несёт то же изменение, что и более ранние, и заменяет уже загруженный более ранний модуль (проверено на каждом из 665 ядер, где он был, см. выше).

Структура

ПутьЧто это
build.shСобирает модуль для одного ядра внутри контейнера дистрибутива
tools/kernels.tsvЯдра, которые собирает CI: дистрибутив, минорная версия, версия ядра
tools/select-kernels.pyКакие из них берёт запуск CI
tools/mkdiffs.shДелает порт для каждого ядра минорной версии и проверяет его по tools/ref/
tools/prep.pyПрименяет собственные патчи SRPM к его tarball, как это делает %prep, перед портированием
tools/port.pyСамо изменение, применяемое к дереву ядра
tools/kpatchify.pyПревращает порт в форму, подаваемую в kpatch-build
tools/klp-overlay.sh, tools/klp-overlay-lds.py, tools/klp-overlay/Передаёт klp-build из 10.2 в 10.0 и 10.1
tools/klpsymcheck.pyПроверяет символы модуля klp-build по поставляемому ядру
tools/loadtest.sh, tools/loadtest-guest.sh, tools/loadtest-bootprep.sh, tools/loadtest-bootinfo.shЗагружает поставляемое ядро в VM и применяет, проверяет и удаляет модуль
tools/csum-probe.sh, tools/csum-inject.pyПроверяет CVE-2026-99999 до и после
tools/tcpopt.pyУправляет двумя освобождениями, которые меняет CVE-2026-98432, при наличии IP-опций
tools/doccheck.pyЗавершается с ошибкой, если файл не упомянут в обоих README или ссылка битая
scripts/livepatch.shПрименяет, проверяет и удаляет выпущенный модуль на хосте
scripts/build-local.shСобирает и проводит load-тест модуля одного ядра на вашей машине
.github/workflows/diffs.ymlЗапускает tools/mkdiffs.sh для каждой минорной версии обоих дистрибутивов
.github/workflows/build.ymlСобирает модули и проводит их load-тесты
.github/workflows/docs.ymlЗапускает tools/doccheck.py
Скачать инструмент