
Исследовательский репозиторий для CVE-2026-80844 (DirtyAH6) — локальное повышение привилегий в ядре Linux через IPv6 AH6/XFRM, с PoC, анализом первопричины и патча.
DirtyAH6
CVE-2026-80844 — это уязвимость ядра Linux, затрагивающая подсистему IPv6 Authentication Header (AH6) / XFRM.
Уязвимость вызвана недостаточной проверкой поля segments_left заголовка
маршрутизации IPv6, что может привести к операции с памятью за пределами
допустимых границ и повреждению памяти ядра.
Этот репозиторий предназначен исключительно для авторизованных исследований в области безопасности, анализа уязвимостей, CTF и защитного тестирования.
Не используйте это исследование против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
Уязвимость существует в пути обработки IPv6 AH6.
Уязвимый код выполняет манипуляции с заголовком маршрутизации через:
net/ipv6/ah6.c
В частности, уязвимая логика включает:
ipv6_rearrange_rthdr()
Функция не смогла должным образом проверить соотношение между:
hdrlen
и:
segments_left
Таким образом, злоумышленник, способный отправить специально сформированный пакет IPv6, может заставить ядро работать с памятью за пределами ожидаемых границ заголовка маршрутизации.
Это может привести к:
Некорректный пакет IPv6
│
▼
Обработка AH6 / XFRM
│
▼
Некорректное состояние заголовка маршрутизации
│
▼
Операция с памятью за пределами границ
│
▼
Повреждение памяти ядра
│
▼
Потенциальное повышение привилегий
Основная проблема заключается в недостаточной проверке значения
segments_left заголовка маршрутизации IPv6.
Концептуально уязвимое условие можно представить как:
segments_left > доступное количество адресов в заголовке маршрутизации
Ядро должно убедиться, что количество сегментов, запрошенных заголовком маршрутизации, соответствует фактической длине заголовка, прежде чем манипулировать связанными данными адресов.
Без такой проверки последующие операции с памятью могут выходить за допустимые границы буфера.
Успешная эксплуатация может позволить злоумышленнику с необходимыми локальными возможностями/окружением повредить память ядра.
Потенциальные последствия включают:
Точная эксплуатируемость зависит от конфигурации ядра, доступных пространств имён/возможностей и других условий окружения.
net/ipv6/ah6.c
Соответствующая обработка:
AH6
└── Заголовок маршрутизации IPv6
└── ipv6_rearrange_rthdr()
Проблемный сценарий связан с несогласованными метаданными заголовка маршрутизации.
Например, концептуально:
hdrlen → описывает ограниченное количество адресов
segments_left → заявляет больше адресов, чем доступно
Это несоответствие должно быть отклонено до того, как ядро выполнит перестановку адресов.
Исправление в upstream вводит проверку значения segments_left заголовка
маршрутизации до того, как ядро выполнит уязвимую операцию.
Соответствующий upstream-коммит:
7bad4bda74dc4713f398d3b7624ff05478e3a568
xfrm: ah6: validate routing header segments_left
Исправление безопасности можно обобщить так:
До:
Доверять segments_left
↓
Переставить адреса
↓
Потенциальный доступ за пределами границ
После:
Проверить segments_left
↓
Отклонить некорректный заголовок
↓
Безопасная обработка AH6
Уязвимые версии зависят от истории backport'ов в upstream и у вендоров.
Пользователям следует проверять рекомендации по безопасности своего дистрибутива, а не полагаться только на номер upstream-версии.
Примеры исправленных стабильных upstream-релизов:
Проверьте работающее ядро:
uname -a
или:
uname -r
Проверьте подробную информацию о ядре:
cat /proc/version
Для систем на базе Debian/Kali:
apt-cache policy linux-image-amd64
Для систем на базе RPM:
rpm -q kernel
Ядра дистрибутивов часто включают исправления безопасности через backport, не изменяя очевидным образом upstream-версию. Всегда проверяйте рекомендации/журнал изменений вендора.
Основная мера защиты — обновление до ядра, содержащего исправление безопасности.
Debian/Kali:
sudo apt update
sudo apt full-upgrade
Затем перезагрузитесь:
sudo reboot
Проверьте:
uname -r
Для производственных систем перед применением обновлений ядра ознакомьтесь с официальными рекомендациями по безопасности вашего дистрибутива Linux.
Рекомендуемое изолированное окружение:
Хост
│
├── Kali Linux
│
└── Уязвимая ВМ Linux
│
├── Отладочное ядро
├── IPv6 включён
├── Поддержка AH6/XFRM
└── Символы ядра
Полезные инструменты отладки:
gdb
gef
pwndbg
crash
dmesg
pahole
objdump
readelf
Отладка ядра:
sudo dmesg -w
Просмотр символов ядра:
cat /proc/kallsyms
CVE-2026-80844-DirtyAH6/
│
├── README.md
│
├── exploit/
│ ├── poc.c
│ └── Makefile
│
├── analysis/
│ ├── vulnerability.md
│ ├── root-cause.md
│ └── patch-analysis.md
│
├── kernel/
│ ├── vulnerable.patch
│ └── fixed.patch
│
├── docs/
│ └── research-notes.md
│
├── screenshots/
│
└── LICENSE
Материалы PoC следует запускать только в изолированной лабораторной среде.
Исследовательская реализация сосредоточена на демонстрации состояния некорректного заголовка маршрутизации IPv6 и наблюдении за результирующим поведением ядра.
Ожидаемый рабочий процесс исследования:
Сформировать некорректный заголовок IPv6
↓
Отправить внутри изолированной лаборатории
↓
Обработка AH6/XFRM
↓
Наблюдать поведение ядра
↓
Зафиксировать dmesg / информацию о падении
↓
Сравнить уязвимое и исправленное ядро
Пример мониторинга:
sudo dmesg -w
Исправленное ядро должно отклонить некорректный ввод, не доходя до уязвимой операции с памятью.
Эта уязвимость демонстрирует, почему сетевые парсеры ядра никогда не должны доверять полям длины или счётчиков, предоставленным злоумышленником.
Критичный для безопасности парсинг должен следовать:
Ввод
↓
Проверка границ
↓
Проверка соотношений
↓
Проверка состояния
↓
Операция с памятью
а не:
Ввод
↓
Операция с памятью
↓
Проверка
Даже небольшое несоответствие между двумя полями метаданных пакета может стать уязвимостью безопасности памяти на уровне ядра.
7bad4bda74dc4713f398d3b7624ff05478e3a568xfrm: ah6: validate routing header segments_leftИсследование безопасности ядра Linux
CVE-2026-80844 · IPv6 · AH6 · XFRM · LPE
Исследуй • Анализируй • Понимай • Защищай
| Поле | Детали |
|---|
| CVE | CVE-2026-80844 |
| Кодовое имя | DirtyAH6 |
| Компонент | Ядро Linux |
| Подсистема | IPv6 / XFRM / AH6 |
| Тип уязвимости | Локальное повышение привилегий |
| Вектор атаки | Локальный |
| Сложность атаки | Низкая |
| Требуемые привилегии | Низкие |
| Взаимодействие с пользователем | Отсутствует |
| CVSS v3.1 | 7.8 — Высокий |
| Уязвимый код | net/ipv6/ah6.c |
| Статус | Исправлено |
| Ветка ядра | Исправленный релиз |
|---|
| 5.10 | 5.10.270 |
| 5.15 | 5.15.221 |
| 6.1 | 6.1.188 |
| 6.6 | 6.6.157 |
| 6.12 | 6.12.109 |
| 6.18 | 6.18.50 |
| 7.2 | 7.2.4 |
| Поведение | Уязвимое ядро | Исправленное ядро |
|---|
Некорректный segments_left | Недостаточная проверка | Проверяется |
| Обработка заголовка маршрутизации | Может продолжиться | Отклоняется при некорректности |
| Операция с памятью за пределами границ | Потенциально достижима | Предотвращена |
| Повреждение ядра | Возможно | Устранено |
| Повышение привилегий | Потенциально | Устранено |