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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-68121 — Исследовательский репозиторий для CVE-2026-68121 — use-after-free в PPPoE ядра Linux в pppoe_sendmsg(), позволяющей локальное повышение привилегий, с PoC, анализом первопричины и настройкой лабораторной среды. | Kitploit
Инструменты/GitHubGitHub/0xblackash/cve-2026-68121
Повышение привилегийКриминалистика памятиАнализ уязвимостейЭксплуатацияОбратная инженерияСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHub0xblackash/cve-2026-68121

CVE-2026-68121

Исследовательский репозиторий для CVE-2026-68121 — use-after-free в PPPoE ядра Linux в pppoe_sendmsg(), позволяющей локальное повышение привилегий, с PoC, анализом первопричины и настройкой лабораторной среды.

7 ч 50 мин назадЕщё не проверено

Популярное

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

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

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

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

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

⚡ CVE-2026-68121 - PPPoEject

Linux Kernel PPPoE Use-After-Free → Local Privilege Escalation

Уязвимость повреждения памяти в ядре Linux в пути передачи PPPoE, вызванная устаревшим указателем на заголовок sk_buff после того, как callback заголовка устройства перераспределяет head skb.


⚠️ Отказ от ответственности

Этот репозиторий предназначен только для авторизованных исследований в области безопасности, анализа уязвимостей ядра, сред CTF и защитного тестирования.

Не запускайте код proof-of-concept против систем без явного разрешения.


📌 Обзор уязвимости

Запись CVE определяет уязвимость как устаревший указатель на заголовок PPPoE, который может стать недействительным, когда dev_hard_header() перераспределяет head skb.


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

Уязвимость существует в:

root@kitploit:~
drivers/net/ppp/pppoe.c

внутри:

root@kitploit:~
pppoe_sendmsg()

Уязвимая последовательность концептуально выглядит так:

root@kitploit:~
pppoe_sendmsg()
      │
      ▼
Сохранение указателя на заголовок PPPoE
      │
      ▼
dev_hard_header()
      │
      ▼
head skb может быть перераспределён
      │
      ▼
Старый указатель становится устаревшим
      │
      ▼
PPPoE выполняет запись через устаревший указатель
      │
      ▼
Use-After-Free
      │
      ▼
Повреждение памяти ядра

Сетевой код Linux допускает, что callback заголовка устройства может перераспределить head sk_buff. Поэтому указатель на старый head не может безопасно использоваться после возврата из dev_hard_header().


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

Основная проблема — нарушение времени жизни.

pppoe_sendmsg() получает указатель на заголовок PPPoE перед вызовом:

root@kitploit:~
dev_hard_header()

Однако этот callback может привести к перемещению head skb.

Концептуально:

root@kitploit:~
До callback:

skb
┌──────────────────────────────┐
│ Ethernet │ PPPoE │ Payload   │
└──────────┴───────┴───────────┘
           ▲
           │
       устаревший указатель


После расширения skb:

старый head skb ──X──► освобождён

новый head skb
┌────────────────────────────────────┐
│ Ethernet │ PPPoE │ Payload         │
└──────────┴───────┴─────────────────┘
           ▲
           │
      корректное расположение

Старый указатель по-прежнему ссылается на освобождённую область памяти.

Когда PPPoE впоследствии записывает заголовок через этот указатель, ядро выполняет запись use-after-free.


🧠 Условие срабатывания

Документированный триггер включает гонку вокруг copy_from_user() и изменения операций заголовка team-устройства.

Одна из описанных последовательностей:

root@kitploit:~
PPPoE sendmsg()
      │
      ▼
copy_from_user() блокируется
      │
      │
      ├───────────────┐
      │               │
      ▼               ▼
Team-устройство       Добавляется первый
меняет операции       не-Ethernet порт
заголовка             │
                      ▼
               Делегированный GRE callback
                      │
                      ▼
               Расширение head skb
      │               │
      └───────────────┘
              │
              ▼
       устаревший указатель PPPoE
              │
              ▼
       запись use-after-free

Запись CVE отмечает, что это может произойти, когда первый не-Ethernet порт добавляется к пустому team-устройству и делегированный GRE callback заголовка расширяет head skb.


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

Уязвимость может привести к:

  • Use-after-free в куче ядра
  • Повреждению памяти ядра
  • Падению ядра / отказу в обслуживании
  • Потенциальному раскрытию памяти ядра
  • Потенциальному произвольному изменению памяти ядра
  • Потенциальному выполнению кода ядра
  • Локальному повышению привилегий

Опубликованный вектор CVSS для CVE:

root@kitploit:~
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

с базовой оценкой 7.8 High.


🔎 Техническая поверхность атаки

Соответствующие компоненты:

root@kitploit:~
PF_PPPOX / PPPoE socket
          │
          ▼
    pppoe_sendmsg()
          │
          ▼
     sk_buff (skb)
          │
          ▼
  dev_hard_header()
          │
          ▼
 Callback заголовка сетевого устройства
          │
          ▼
 Потенциальное расширение head skb
          │
          ▼
 Устаревший указатель на заголовок PPPoE
          │
          ▼
     UAF-запись

Таким образом, уязвимый код — это не просто универсальный парсер пакетов PPPoE; критическое условие заключается во взаимодействии между передачей через PPPoE-сокет и динамическим перераспределением head skb.


🩹 Исправление в upstream

Исправление в upstream называется:

root@kitploit:~
pppoe: reload header pointer after dev_hard_header()

Исправление перезагружает заголовок PPPoE через смещение сетевого заголовка skb после создания заголовка устройства.

Важное свойство:

root@kitploit:~
До:

указатель на заголовок
      │
      ▼
dev_hard_header()
      │
      ▼
skb перемещается
      │
      ▼
указатель = устаревший ❌


После:

dev_hard_header()
      │
      ▼
skb может переместиться
      │
      ▼
перезагрузка заголовка с использованием смещения skb
      │
      ▼
указатель = корректный ✅

pskb_expand_head() обновляет соответствующее смещение skb при перемещении head skb, что делает поиск по смещению безопасным после перераспределения.


📊 Уязвимая vs исправленная версия


🧪 Исследовательская среда

Контролируемую лабораторию можно организовать так:

root@kitploit:~
┌───────────────────────────────────────────────┐
│                 Linux VM                     │
│                                               │
│       ┌───────────────┐                       │
│       │ PPPoE Socket  │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │ pppoe_sendmsg │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │     Team      │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │     GRE       │                       │
│       └───────────────┘                       │
│                                               │
└───────────────────────────────────────────────┘

Полезные инструменты отладки ядра:

root@kitploit:~
gdb
pwndbg
gef
crash
objdump
readelf
pahole

Мониторинг сообщений ядра:

root@kitploit:~
sudo dmesg -w

Проверка поддержки PPPoE:

root@kitploit:~
lsmod | grep pppoe

Проверка доступных модулей PPP:

root@kitploit:~
find /lib/modules/$(uname -r) -iname '*pppoe*'

🔎 Проверка ядра

Проверка текущего работающего ядра:

root@kitploit:~
uname -r

Проверка конфигурации, связанной с PPPoE:

root@kitploit:~
grep -E 'CONFIG_PPP|CONFIG_PPPOE' \
/boot/config-$(uname -r)

Типичные соответствующие опции включают:

root@kitploit:~
CONFIG_PPP
CONFIG_PPP_ASYNC
CONFIG_PPP_SYNC_TTY
CONFIG_PPPOE

🧪 Процесс воспроизведения

Для контролируемого исследования ядра:

root@kitploit:~
01. Собрать уязвимое ядро
          ↓
02. Загрузить изолированную VM
          ↓
03. Включить поддержку PPPoE
          ↓
04. Создать контролируемую сетевую топологию
          ↓
05. Настроить взаимодействие team/GRE
          ↓
06. Задействовать PPPoE sendmsg()
          ↓
07. Отслеживать время жизни skb
          ↓
08. Собрать диагностику ядра
          ↓
09. Применить upstream-исправление
          ↓
10. Повторить и сравнить

Цель — безопасно воспроизвести нарушение времени жизни памяти и сравнить поведение уязвимой и исправленной версий.


📂 Структура репозитория

root@kitploit:~
CVE-2026-68121-PPPoEject/
│
├── README.md
│
├── exploit/
│   ├── poc.c
│   └── Makefile
│
├── analysis/
│   ├── root-cause.md
│   ├── pppoe-sendmsg.md
│   ├── skb-lifetime.md
│   └── patch-analysis.md
│
├── kernel/
│   ├── vulnerable/
│   └── patched/
│
├── lab/
│   ├── setup.sh
│   ├── cleanup.sh
│   └── topology.md
│
├── screenshots/
│
├── docs/
│   └── research-notes.md
│
└── LICENSE

🛡️ Меры защиты

Рекомендуемая мера — обновление до ядра Linux, содержащего upstream-исправление или соответствующий backport дистрибутива.

Для Debian/Kali:

root@kitploit:~
sudo apt update
sudo apt full-upgrade

Затем перезагрузка:

root@kitploit:~
sudo reboot

Проверка работающего ядра:

root@kitploit:~
uname -r

Backports дистрибутивов могут использовать другие номера версий, поэтому администраторам следует сверять установленный пакет с рекомендациями по безопасности дистрибутива. В настоящее время Debian указывает исправленные версии, включая 6.1.187-1 для Bookworm и 6.12.101-1 для Trixie.


📦 Ссылки на upstream-исправление

Стабильные ветки Linux содержат исправление в нескольких поддерживаемых ветках. Запись CVE перечисляет соответствующие стабильные коммиты и указывает затронутый исходный файл:

root@kitploit:~
drivers/net/ppp/pppoe.c

Уязвимая история начинается с реализации PPPoE в ядре Linux, а серия исправляющих коммитов завершается upstream-исправлением, представленным 7a56e7c9b08e08fd55a1bcada24cf4fe3782b722 в данных CVE.


🧩 Уроки безопасности

01 — Время жизни указателя имеет значение

Нельзя считать указатель на skb действительным после callback, способного перераспределить head skb.

02 — Callback могут нарушать предположения

Сетевые callback могут изменять лежащую в основе структуру памяти.

03 — Используйте смещения, когда память может перемещаться

Исправление демонстрирует, почему смещение относительно skb безопаснее, чем сохранение сырого указателя через потенциально перемещающую операцию.

04 — Состояния гонки усиливают ошибки памяти

Уязвимое состояние зависит от параллельной активности вокруг передачи пакетов и конфигурации сетевого устройства.

05 — UAF в ядре имеют высокое воздействие

Устаревший указатель в сетевом коде ядра может стать примитивом повреждения памяти с последствиями для конфиденциальности, целостности и доступности.


📚 Ссылки

  • CVE: CVE-2026-68121
  • Кодовое имя: PPPoEject
  • Подсистема Linux: PPPoE
  • Источник: drivers/net/ppp/pppoe.c
  • Основная функция: pppoe_sendmsg()
  • Исправление: pppoe: reload header pointer after dev_hard_header()
  • CVSS: 7.8 High
  • Debian Security Tracker: CVE-2026-68121
  • Linux Kernel / Stable References: перечислены в записи CVE

⚡ PPPoEject

CVE-2026-68121

Linux Kernel · PPPoE · Use-After-Free · Kernel Security · LPE


Research • Analyze • Reproduce • Harden


0xBlackash

Скачать инструмент
ПолеДетали
CVECVE-2026-68121
Кодовое имяPPPoEject
КомпонентLinux Kernel
ПодсистемаPPPoE / Networking
Затронутый файлdrivers/net/ppp/pppoe.c
Основная функцияpppoe_sendmsg()
Класс ошибкиUse-After-Free
ВоздействиеПовреждение памяти ядра
Потенциальное воздействиеЛокальное повышение привилегий
CVSS v3.17.8 — High
Вектор атакиЛокальный
Сложность атакиНизкая
Требуемые привилегииНизкие
Взаимодействие с пользователемОтсутствует
СтатусИсправлено
Свойство безопасностиУязвимаяИсправленная
Указатель на заголовок сохранён до callback✅—
head skb может перемещаться✅✅
Указатель обновляется после callback❌✅
Разыменование устаревшего указателяВозможноПредотвращено
Запись use-after-freeВозможноУстранено
Повреждение памяти ядраВозможноУстранено