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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/alvaroguzmancode/cve-2026-98432
Статический анализАнализ уязвимостейЭксплуатацияФаззингСтатьи и ИсследованияЛаборатории и Практика
GitHubalvaroguzmancode/cve-2026-98432

cve-2026-98432

Детектор на Rust и локальная лаборатория для CVE-2026-98432 — use-after-free в IPv4 TCP в Linux в inet_opt/ireq_opt: статический анализ ELF, проверки достижимости через kprobe и триггер гонки.

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

Популярное

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

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

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

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

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

CVE-2026-98432 — use-after-free в IPv4 TCP (inet_opt / ireq_opt)

Исследовательский PoC и локальная лаборатория для use-after-free в ядре Linux, достижимого из обычного IPv4 TCP-листенера. Это детектор/триггер бага, а не эксплойт.

Статус

  • Путь кода уязвим в проанализированной сборке (7.0.0-38-generic): inet_sock_destruct() и tcp_v4_reqsk_destructor() освобождают опции через kfree() вместо kfree_rcu().
  • Путь kfree достижим во время выполнения (kprobes).
  • Сам UAF — сложная, залповая гонка. Мы наблюдали два кандидатных события free -> use (via=reqsk) в одном старом прогоне и не смогли воспроизвести их надёжно.
  • RCE, утечка KASLR и примитив записи не реализованы. Эталонный репозиторий tcp2kaslr также останавливается на триггере бага; последующие стадии не опубликованы.
  • Для надёжного подтверждения требуется ядро с KASAN (или KFENCE). На тестовом хосте CONFIG_KASAN выключен, а сэмплирование KFENCE отключено.

Правильный вектор (из tcp2kaslr)

MPTCP не требуется. Доказанный путь — обычный IPv4 TCP:

  1. Атакующий отправляет SYN с опцией IPv4 Record Route.
  2. Ядро сохраняет опции в request-сокете (ireq_opt).
  3. Повторно переданный SYN строит SYNACK и читает эти опции.
  4. Рукопожатие завершается; дочерний сокет получает тот же указатель.
  5. Приложение вызывает accept() для дочернего сокета, устанавливает SO_LINGER(0) и закрывает его. inet_sock_destruct() освобождает опции через kfree().
  6. Путь SYNACK всё ещё читает освобождённую память.
  7. Конкурентное чтение/запись должно происходить на двух CPU.

Наш более ранний триггер был неверен в двух отношениях: жертва так и не приняла/закрыла дочерний сокет (free_sock=0), и мы отправляли RST вместо того, чтобы полагаться на закрытие сервером. Текущий код добавляет правильные элементы:

  • listen --accept-close — accept + SO_LINGER(0) + close.
  • --sync — ACK + дублированный SYN одновременно, без RST, с опциями Record Route.

Исправление в upstream выглядит ровно так:

-    kfree(rcu_dereference_protected(inet->inet_opt, 1));
+    kfree_rcu(rcu_dereference_protected(inet->inet_opt, 1), rcu);

и то же изменение в tcp_v4_reqsk_destructor().

Содержание

ПутьЧто
rust-poc/нативный PoC на Rust: статический анализ ELF, kprobes, режимы запуска
lab/жертва на Alpine + PHP через loopback для старых локальных тестов
scripts/локальные вспомогательные скрипты для воспроизведения, вспомогательные скрипты для авторизованного аудита
docs/FINDINGS.mdчто было протестировано, что подтверждено, что нет
docs/EXPLOITATION-NOTES.mdобласть охвата: только запуск бага, без RCE
docs/evidence/очищенные образцы доказательств

Быстрый старт

cd rust-poc
cargo build --release

# static analysis (no root)
./target/release/cve-2026-98432 static

# runtime reachability (root, tracefs)
sudo ./target/release/cve-2026-98432 runtime

# correct local vector: accept+close server + --sync trigger
cd ..
PASSES=1 ./scripts/repro-sync.sh 8083

repro-sync.sh запускает жертву с --accept-close на 127.0.0.1:8083, запускает триггер синхронизации через sudo и выводит free_sock, use_build и вердикт UAF. Чистый прогон не является доказательством безопасности: частота составляет примерно 1e-7 на попытку, а события кластеризуются.

Если artifacts/ отсутствует, static/runtime переключаются на /boot; устаревший scripts/cve-2026-98432.sh --static может сгенерировать артефакты ядра.

Как выглядит положительный результат

С KASAN ядро сообщает о slab-use-after-free в inet_csk_route_req / ip_options_build со стеком освобождения в inet_sock_destruct / inet_release. Харнесс tcp2kaslr достигает этого примерно за 134 тыс. попыток с KASAN; на обычном ядре та же гонка наблюдалась лишь дважды за ~48 млн попыток.

Ответственное использование

Тестируйте только те ядра и хосты, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Триггер представляет собой гонку в ядре и может привести к краху хоста. Используйте одноразовую ВМ со снимком.

Ссылки

  • offline-ant/tcp2kaslr — триггер бага, доказательства KASAN, анализ: https://github.com/offline-ant/tcp2kaslr
  • Патч в upstream: ipv4: free inet_opt and ireq_opt after an RCU grace period (Eric Dumazet), kfree → kfree_rcu в net/ipv4/af_inet.c и net/ipv4/tcp_ipv4.c.

Лицензия

MIT. См. LICENSE.

Скачать инструмент