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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/bluedragonsecurity/cve-2026-23416-poc
Анализ уязвимостейЭксплуатацияСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubbluedragonsecurity/cve-2026-23416-poc

CVE-2026-23416-POC

PoC для CVE-2026-23416 (ядро Linux 6.17 – ядро Linux 7 rc5) - уязвимость, обнаруженная Antonius

Репозиторий
8133 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-23416 — PoC

mm/mseal: обновление конца VMA при слиянии исправлено

Уязвимость обнаружена Antonius / Blue Dragon Security


Обзор

ПолеДетали
CVE IDCVE-2026-23416
Подсистемаmm/mseal — mm/vma.c
ЗатрагиваетLinux kernel 6.17 – 7.0-rc5
Исправлено вLinux 7.0-rc6, стабильные бэкпорты 6.18.21, 6.19.11
Требуемый доступНепривилегированный пользователь (UID 1000, без привилегий)
Используемые системные вызовыmemfd_create, mmap, mseal
Воспроизводимость100% детерминировано, < 1 секунды
Зарезервирован2026-01-13
Опубликован2026-04-02

Описание уязвимости

Ошибка находится в mseal_apply() внутри mm/mseal.c. При переборе VMA для применения системного вызова mseal(2) функция отслеживает позицию с помощью curr_start и curr_end:

root@kitploit:~
/* Упрощённая логика до исправления */
curr_end = vma->vm_end;
/* ... обработка VMA ... */
curr_start = curr_end;  /* переход к следующей VMA */

Проблема: vma_modify_flags() — вызываемая во время итерации — может сливать VMA, изменяя vma->vm_end на месте. Это делает значение curr_end, которое было захвачено до слияния, устаревшим. На следующей итерации curr_start устанавливается в теперь уже устаревший curr_end, что приводит к некорректному начальному адресу.

В отладочных ядрах (CONFIG_DEBUG_VM) это несогласованное состояние vmg вызывает:

root@kitploit:~
VM_WARN_ON_VMG(middle &&
    ((middle != prev && vmg->start != middle->vm_start) ||
     vmg->end > middle->vm_end))

в mm/vma.c:830, порождая kernel WARNING.

В рабочих ядрах (WARN скомпилирован в no-op) устаревший curr_start продолжает работу без предупреждения — то есть VM_SEALED может быть применён к неправильному диапазону адресов без каких-либо видимых ошибок, подрывая гарантию безопасности, которую должен обеспечивать mseal(2).

Путь вызова

root@kitploit:~
mseal(2)
  └─ do_mseal()              [mm/mseal.c]
       └─ mseal_apply()
            └─ vma_modify_flags()   [mm/vma.c]
                 └─ vma_modify()
                      └─ vma_merge_existing_range()
                           └─ VM_WARN_ON_VMG срабатывает на строке 830

Первопричина

root@kitploit:~
/* ДО исправления — mm/mseal.c mseal_apply() */
curr_end = vma->vm_end;           // захватывается здесь
/* ... vma_modify_flags() может сливать VMA, изменяя vma->vm_end ... */
curr_start = curr_end;            // устаревшее! слияние не отражено

Исправление устанавливает curr_end = vma->vm_end безусловно на каждой итерации после любого потенциального слияния, а также дополнительно фиксирует curr_start/curr_end как const значения, полученные из входного диапазона и границ VMA:

root@kitploit:~
/* ПОСЛЕ исправления */
curr_end = vma->vm_end;           // безусловно, всегда свежее

Расположение VMA во время срабатывания

PoC создаёт следующую структуру перед вторым вызовом mseal():

root@kitploit:~
[0x21da6000 - 0x21de5fff]  VMA-A  (fd2, MAP_SHARED|MAP_FIXED) ← VM_SEALED после шага 1
[0x21de6000 - 0x21e82fff]  VMA-B  (fd2, MAP_SHARED|MAP_FIXED) ← НЕ запечатана
[0x21e83000 - 0x21e84fff]  VMA-C  (остаток)

Второй вызов mseal(m2, 0x70000) нацелен на диапазон [0x21da6000 – 0x21e15fff], охватывающий VMA-A (запечатанную) и VMA-B (не запечатанную). Внутри mseal_apply() устаревший curr_end от VMA-A используется как curr_start при обработке VMA-B, создавая несогласованное состояние vmg.


Влияние на безопасность

  1. Достижимо из непривилегированного пользовательского пространства — требуется только memfd_create + mmap + mseal, никаких CAP_* не нужно.
  2. mseal(2) — это примитив безопасности — он защищает неизменность VMA. Логическая ошибка в его применении означает, что VM_SEALED может быть незаметно применён неправильно при охвате VMA со смешанным состоянием запечатывания.
  3. Незаметно в рабочих системах — на неотладочных ядрах несогласованное состояние продолжается без предупреждения, потенциально оставляя дерево VMA с некорректным состоянием запечатывания.

PoC (доказательство концепции)

Файл: cve-2026-23416-poc.c

Сборка

root@kitploit:~
gcc -o poc cve-2026-23416-poc.c

Запуск

root@kitploit:~
./poc

Ожидаемый вывод (отладочное ядро с CONFIG_DEBUG_VM)

root@kitploit:~
============================================
CVE-2026-23416-POC
Discovered by : Antonius / Blue Dragon Security
  https://bluedragonsec.com
  https://github.com/bluedragonsecurity
============================================
[iter 0]
[iter 1]
...
[+] WARNING triggered N times total

Проверьте dmesg на:

root@kitploit:~
WARNING: CPU: X PID: Y at mm/vma.c:830 vma_merge_existing_range+0x...

Требования

  • Linux kernel 6.17 – 7.0-rc5
  • CONFIG_DEBUG_VM=y для наблюдения VM_WARN_ON_VMG (на рабочих ядрах ошибка всё ещё присутствует, но незаметна)
  • Ни root, ни специальных привилегий не требуется

Исправление

Три патча в основной линии (применены в 7.0-rc6 и стабильных бэкпортах):

КоммитДерево
40b3f4700e55stable
83737e34b83astable
2697dd8ae721stable

Исправленные версии ядра: 7.0-rc6, 6.18.21, 6.19.11


Ссылки

  • CVE-2026-23416 — cve.org
  • CVE-2026-23416 — NVD
  • Техническое описание — Medium (@w1sdom)
  • Blue Dragon Security

Хронология раскрытия

ДатаСобытие
2026-01-13Зарезервирован CVE ID
2026-04-02CVE опубликован, исправления объединены

Автор

Antonius (@w1sdom)
Blue Dragon Security — Тангеранг, Индонезия
GitHub: bluedragonsecurity


Данный PoC опубликован в образовательных и исследовательских целях.

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