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

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

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

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

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

Категории

Все категории
Loading categories
tcp2kaslr — CVE-2026-98432: уязвим обычный IPv4 TCP-сервер, MPTCP не является триггером. Триггер ошибки, доказательства и анализ. | Kitploit
Инструменты/GitHubGitHub/offline-ant/tcp2kaslr
Криминалистика памятиАнализ уязвимостейЭксплуатацияФаззингСтатьи и ИсследованияЛаборатории и Практика
GitHuboffline-ant/tcp2kaslr

tcp2kaslr

CVE-2026-98432: уязвим обычный IPv4 TCP-сервер, MPTCP не является триггером. Триггер ошибки, доказательства и анализ.

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

Популярное

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

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

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

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

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

CVE-2026-98432

Автор: DeepSeek.

Уязвим обычный IPv4 TCP-сервер. MPTCP не является триггером.

Мы собрали Linux 6.18.55 из релизного tarball и заставили ядро читать освобождённую память на обычном слушателе IPPROTO_TCP. KASAN сообщил об этом дважды. Ни один сокет MPTCP так и не был создан, а в одном запуске MPTCP был отключён в ядре.

Тот же баг заставляет ядро копировать байты из освобождённого объекта в ответ, который оно отправляет обратно. Это тот примитив, который нужен для обхода KASLR, и мы наблюдали его в неопубликованной работе. Мы не строили утечку адреса ядра и не доказали запись.

Что доказано здесь, с кодом и логами: use-after-free реален, штатный TCP до него доходит, а исправление в upstream его останавливает.

Запуски

ЯдроMPTCPПопыткиВремяРезультат
6.18.55, без исправленияне используется134,95534 сKASAN use-after-free
6.18.55, без исправленияотключён191,43180 сKASAN use-after-free
6.18.55 + исправлениене используется439,316411 счисто

Насколько трудно это воспроизвести?

Очень трудно. С KASAN читатель работает медленно, поэтому баг проявляется в течение нескольких сотен тысяч попыток. На обычном ядре он гораздо реже: примерно за 48 миллионов попыток мы увидели два события, оба в пределах одних и тех же пяти секунд.

Этого слишком мало, чтобы назвать частоту. Максимум, что мы заявим, — это граница примерно 1e-7 на попытку, и даже это лучший случай, потому что наш harness принудительно направляет два пакета на два CPU, а реальный NIC обычно отправляет один поток на один CPU.

Так что чистый запуск не означает безопасное ядро. Прочитайте разделы 5.2 и 6 в ANALYSIS.md, прежде чем цитировать какие-либо числа.

Баг простыми словами

TCP-сервер получает SYN. SYN несёт опцию IPv4 (Record Route или Timestamp). Ядро сохраняет эти опции в request-сокете.

Приходит второй SYN для того же соединения. Ядро строит для него SYNACK и читает сохранённые опции.

В то же время завершается handshake. Дочерний сокет получает тот же указатель, а не копию. Сервер закрывает дочерний сокет, и ядро освобождает опции обычным kfree().

Код SYNACK всё ещё читает эту память. Это и есть use-after-free. То же чтение помещает освобождённые байты в пакет.

Чем этот репозиторий не является

Это триггер бага, а не эксплойт. Он не утекает адреса ядра, не пишет в память ядра и не даёт root. Он показывает, как ядро читает освобождённую память; судья — KASAN.

Репозиторий намеренно на этом останавливается. Последующие этапы разрабатывались приватно и здесь не публикуются.

Воспроизведение

scripts/get-kernel.sh              # fetch 6.18.55, sha256 checked, into linux/
scripts/build-kernel.sh vuln       # KASAN kernel, no fix
scripts/build-kernel.sh patched    # KASAN kernel, with the fix
scripts/build-harness.sh           # builds harness/init + initramfs
scripts/run.sh vuln 90 selftest    # checks the wiring only
scripts/run.sh vuln 600            # expect a KASAN report
scripts/run.sh patched 600         # expect nothing

Нужны gcc, make, bison, flex, bc и qemu-system-x86_64. KVM сильно помогает. Виртуальная машина занимает 2 ГБ ОЗУ и 8 vCPU.

Один запуск может ничего не показать. Это не доказательство безопасности ядра. Запустите несколько раз и прочитайте оговорки в ANALYSIS.md.

Проверьте собственное ядро

Не доверяйте строке версии. Смотрите на код в бинарнике.

scripts/check-free-sites.py

Он находит два свободных места в работающем ядре и показывает, какую функцию они вызывают: kfree (плохо) или kvfree_call_rcu (исправлено).

На машине, где это писалось (6.18.59_1), оба места используют kvfree_call_rcu, так что это ядро исправлено.

Кто подвержен риску

Хост подвержен риску, если верны все три условия:

  1. он слушает IPv4 TCP, и
  2. пир отправляет SYN с IP-опциями, и
  3. программа вскоре закрывает принятый сокет.

Атакующий контролирует пункт 2. Поэтому большинство интернет-серверов подвержены риску, и «мы не используем MPTCP» не помогает.

Два замечания:

  • accept_source_route=0 не защищает вас. Он блокирует только source routing, но не Record Route или Timestamp.
  • Если вы пока не можете установить патч, отбрасывайте входящие SYN, несущие IP-опции. Тогда ядро никогда не сохраняет опции для сокета запроса. Установка патча лучше.

Файлы

ПутьЧто
ANALYSIS.mdполный отчёт: путь в исходниках, метод, результаты, ограничения
harness/триггер бага, запускаемый как /init в QEMU
patches/исправление из upstream, используемое для контрольной сборки
scripts/вспомогательные скрипты для загрузки, сборки, запуска и проверки
evidence/отчёты KASAN, логи запусков, сравнение сборок

Область применения

Только тестовые ядра, и только те, которыми вы владеете. Ничто здесь не должно направляться на системы, которые вы не контролируете.

Лицензия

MIT для нашего кода и текста. patches/ содержит коммит ядра Linux и остаётся под GPL-2.0. См. LICENSE.

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