
Отчёт о валидации в лабораторных условиях и артефакты обнаружения для CVE-2026-43284 (DirtyFrag) Linux LPE. Предоставляет телеметрию auditd, правила корреляции событий и логику обнаружения, ориентированную на SOC, для пути записи в кэш страниц XFRM/ESP.
Область применения: Проверка локального повышения привилегий (LPE) в Linux, ориентированная на путь XFRM/ESP, связанный с CVE-2026-43284.
Этот репозиторий содержит отчёт на английском языке и артефакты исследования, полученные в ходе контролируемой лабораторной проверки публичного PoC DirtyFrag. Основное внимание уделяется не руководству по эксплуатации, а документированию того, что было видно в журналах аудита Linux и как эти события можно преобразовать в практическую логику обнаружения для SOC.
Полный отчёт в формате PDF:
EN: reports/DirtyFrag_CVE-2026-43284_EN.pdf
PL: reports/DirtyFrag_CVE-2026-43284_PL.pdf
Тест был выполнен для проверки, может ли обычный локальный пользователь получить root-оболочку на уязвимой лабораторной виртуальной машине, и для определения того, какие события можно зафиксировать с помощью auditd.
CVE-2026-43284 связана с неправильной обработкой общих фрагментов страниц при операциях ESP/IPsec. При определённых условиях локальный злоумышленник может повлиять на данные в кэше страниц и повысить привилегии. Ubuntu Security оценивает эту уязвимость как CVSS 3.1: 7.8 High.
| Уязвимость | Область применения | Компонент | CVSS |
|---|---|---|---|
| CVE-2026-43284 | XFRM/ESP Page-Cache Write | XFRM / ESP, esp4/esp6 | 7.8 High |
Технические ссылки:
Полная базовая информация о системе: evidence/logs/system-info-table.md
До выполнения PoC контекст теста представлял собой обычную учётную запись пользователя. После запуска ./exp была получена root-оболочка, что подтверждено командами whoami и id.

После теста журналы auditd и сводные выходные данные были экспортированы в локальный каталог доказательств и скопированы в этот репозиторий.






Наиболее полезное обнаружение — это не единичное событие. Самый сильный сигнал — полная цепочка, наблюдаемая в коротком временном окне:
user namespace -> vmsplice/splice -> ESP/XFRM -> su -> root shell with AUID of a normal user
IF
dirty_frag_unshare by auid>=1000
AND count(dirty_frag_vmsplice + dirty_frag_splice by same exe or pid) >= 3 within 600s
AND MAC_IPSEC_EVENT / XFRM activity within 1200s
AND (dirty_frag_su_exec OR execve with euid=0 and auid>=1000) within 1200s
THEN
alert = "Possible DirtyFrag CVE-2026-43284 Linux LPE"
severity = high/critical
euid=0; это также фиксирует легитимное использование sudo.unshare, vmsplice, splice, активность XFRM/ESP, su и создание root-процессов из обычного сеанса пользователя.kernel.unprivileged_userns_clone там, где это допускает совместимость приложений.lost должен оставаться 0 во время тестирования и производственного мониторинга.Собранный статус auditd показал lost=2555, что означает, что некоторые события аудита могли быть потеряны. Ключевая цепочка по-прежнему видна, но в будущих тестах следует увеличить резерв аудита и подтвердить lost=0 перед запуском PoC.
Отчёт намеренно сосредоточен на CVE-2026-43284 / XFRM/ESP, чтобы не смешивать область обнаружения SOC с другими путями, связанными с DirtyFrag.
| Параметр | Значение |
|---|
| Дистрибутив | Ubuntu 24.04.4 LTS / noble |
| Тестовое ядро | 6.17.0-23-generic |
| Архитектура | x86_64 |
| Виртуализация | Oracle VirtualBox |
| CPU | 12th Gen Intel(R) Core(TM) i5-12450H, 1 vCPU |
| ОЗУ | 12 GiB |
| Корневая файловая система | ext4 |
| Тестовый пользователь | uid=1000(user), gid=1000(user), groups include sudo, adm, lpadmin |
| unprivileged_userns_clone | 1 |
| auditd | активен, загружены правила аудита DirtyFrag/LPE |
| AppArmor | активен; профиль unprivileged_userns виден в журналах |
| Путь | Описание |
|---|
docs/DirtyFrag_CVE-2026-43284_auditd_detection_report.docx | Отчёт в формате DOCX на английском языке. |
evidence/logs/audit.log | Полный журнал auditd, содержащий необработанные события. |
evidence/logs/dirtyfrag-filtered.log | Отфильтрованный журнал, содержащий события, связанные с DirtyFrag/LPE. |
evidence/logs/dirty_frag_vmsplice.log | События vmsplice от процесса PoC. |
evidence/logs/dirty_frag_splice.log | События splice от процесса PoC. |
evidence/logs/dirty_frag_execve_su.log | Выполнение /usr/bin/su после активности PoC. |
evidence/logs/lpe_root_exec_from_user_session.log | Процессы, выполняемые как root из исходного сеанса пользователя. |
evidence/logs/audit-key-summary.txt | Сводка количества событий по ключам auditd. |
evidence/logs/audit-exec-summary.txt | Сводка исполняемых файлов из aureport. |
evidence/logs/audit-rules-loaded.txt | Активные правила обнаружения auditd. |
evidence/logs/system-info-table.md | Таблица базовой информации о системе. |
evidence/screenshots/01-dirtyfrag-root-shell.png | Снимок экрана, подтверждающий переход user -> root shell. |
tools/generate-system-info-table.sh | Вспомогательный скрипт для генерации таблицы информации о системе. |
| Ключ | Значение |
|---|
dirty_frag_unshare | unshare, выполненный непривилегированным пользователем; указывает на подготовку пространства имён пользователя. |
dirty_frag_vmsplice | Активность vmsplice от пользовательского процесса; основной сигнал кэша страниц. |
dirty_frag_splice | Активность splice от пользовательского процесса; коррелирует с vmsplice. |
dirty_frag_su_exec / dirty_frag_execve_su | Выполнение /usr/bin/su после фазы кэша страниц. |
lpe_root_exec_from_user_session | execve с euid=0 в сеансе, принадлежащем auid>=1000; сильное доказательство LPE при корреляции. |
| Время | Событие | Артефакт | Значение |
|---|
| 21:10:48 | Загружены правила auditd | audit-rules-loaded.txt, audit.log | Мониторинг был активен до выполнения PoC. |
| 21:11:32 | unshare от ./exp | dirtyfrag-filtered.log | Пользовательский процесс вошёл в unprivileged_userns. |
| 21:11:32-21:11:39 | vmsplice / splice от ./exp | dirty_frag_vmsplice.log, dirty_frag_splice.log | Поведение кэша страниц, видимое через телеметрию системных вызовов. |
| 21:11:32-21:11:39 | MAC_IPSEC_EVENT / XFRM ESP | audit.log | События SAD-add и SA-icv-failure на 127.0.0.1 с SPI 0xdeadbeXX. |
| 21:11:39 | su - | dirty_frag_execve_su.log | Попытка войти в root-оболочку после выполнения PoC. |
| 21:11:39 | sh / dash как root | lpe_root_exec_from_user_session.log | UID=root и EUID=root при AUID=user. |
| 21:11:48 | whoami как root | lpe_root_exec_from_user_session.log, снимок экрана | Ручное подтверждение успешного повышения. |
| 21:11:49 | id как root | lpe_root_exec_from_user_session.log, снимок экрана | Ручное подтверждение uid=0(root). |