
Исследовательский репозиторий для CVE-2026-80844 (DirtyAH6) — локальное повышение привилегий в ядре Linux через IPv6 AH6/XFRM, с PoC, анализом первопричины и патча.
DirtyAH6
CVE-2026-80844 — уязвимость ядра Linux, затрагивающая подсистему IPv6 Authentication Header (AH6) / XFRM.
Уязвимость вызвана недостаточной проверкой поля segments_left заголовка
маршрутизации IPv6, что может привести к операции с памятью за пределами
допустимого диапазона и повреждению памяти ядра.
Данный репозиторий предназначен исключительно для авторизованных исследований в области безопасности, анализа уязвимостей, CTF и защитного тестирования.
Не используйте это исследование против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
| Поле | Сведения |
|---|---|
| CVE | CVE-2026-80844 |
| Кодовое имя | DirtyAH6 |
| Компонент | Ядро Linux |
| Подсистема | IPv6 / XFRM / AH6 |
| Тип уязвимости | Локальное повышение привилегий |
| Вектор атаки | Локальный |
| Сложность атаки | Низкая |
| Требуемые привилегии | Низкие |
| Взаимодействие с пользователем | Отсутствует |
| CVSS v3.1 | 7.8 — Высокий |
| Уязвимый код | net/ipv6/ah6.c |
| Статус | Исправлено |
Уязвимость присутствует в пути обработки IPv6 AH6.
Уязвимый код выполняет манипуляции с заголовком маршрутизации посредством:
net/ipv6/ah6.c
Конкретно, уязвимая логика включает:
ipv6_rearrange_rthdr()
Функция не смогла должным образом проверить связь между:
hdrlen
и:
segments_left
Злоумышленник, способный отправить специально сформированный IPv6-пакет, может тем самым заставить ядро работать с памятью за пределами ожидаемых границ заголовка маршрутизации.
Это может привести к:
Malformed IPv6 packet
│
▼
AH6 / XFRM processing
│
▼
Invalid routing-header state
│
▼
Out-of-bounds memory operation
│
▼
Kernel memory corruption
│
▼
Potential privilege escalation
Фундаментальная проблема заключается в недостаточной проверке значения
segments_left в заголовке маршрутизации IPv6.
Концептуально уязвимое условие можно представить следующим образом:
segments_left > available routing-header addresses
Ядро должно проверять, что число сегментов, запрошенное в заголовке маршрутизации, соответствует фактической длине заголовка, прежде чем манипулировать связанными данными адреса.
Без такой проверки последующие операции с памятью могут выходить за допустимые границы буфера.
Успешная эксплуатация может позволить злоумышленнику, обладающему необходимыми локальными возможностями/окружением, повредить память ядра.
Возможные последствия включают:
Точная эксплуатируемость зависит от конфигурации ядра, доступных пространств имён/возможностей и других условий окружения.
net/ipv6/ah6.c
Соответствующая обработка:
AH6
└── IPv6 Routing Header
└── ipv6_rearrange_rthdr()
Проблемный сценарий связан с несогласованными метаданными заголовков маршрутизации.
Например, концептуально:
hdrlen → describes a limited number of addresses
segments_left → claims more addresses than are available
Это несоответствие должно быть отклонено до того, как ядро выполнит перестановку адресов.
Исправление в upstream добавляет проверку значения segments_left в заголовке маршрутизации до того, как ядро выполнит уязвимую операцию.
Соответствующий коммит в upstream:
7bad4bda74dc4713f398d3b7624ff05478e3a568
xfrm: ah6: validate routing header segments_left
Исправление безопасности можно кратко описать так:
Before:
Trust segments_left
↓
Rearrange addresses
↓
Potential OOB access
After:
Validate segments_left
↓
Reject malformed header
↓
Safe AH6 processing
Уязвимые версии зависят от истории бэкпортов в upstream и у поставщиков.
Пользователям следует проверять рекомендации по безопасности своего дистрибутива, а не полагаться только на номер версии upstream.
Примеры исправленных стабильных релизов upstream включают:
| Ветка ядра | Исправленный релиз |
|---|---|
| 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 |
Проверьте работающее ядро:
uname -a
или:
uname -r
Проверьте подробную информацию о ядре:
cat /proc/version
Для систем на базе Debian/Kali:
apt-cache policy linux-image-amd64
Для систем на основе RPM:
rpm -q kernel
Дистрибутивные ядра часто переносят исправления безопасности обратно, не меняя версию upstream очевидным образом. Всегда проверяйте рекомендации/журнал изменений поставщика.
Основная мера защиты — обновление до ядра, содержащего исправление безопасности.
Debian/Kali:
sudo apt update
sudo apt full-upgrade
Затем перезагрузите систему:
sudo reboot
Проверка:
uname -r
Для производственных систем перед применением обновлений ядра обратитесь к официальному рекомендации по безопасности дистрибутива Linux.
Рекомендуемая изолированная среда:
Host
│
├── Kali Linux
│
└── Vulnerable Linux VM
│
├── Debug kernel
├── IPv6 enabled
├── AH6/XFRM support
└── Kernel symbols
Полезные инструменты отладки:
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 следует запускать только в изолированной лабораторной среде.