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

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

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

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

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

Категории

Все категории
Loading categories
dirtyfrag-arm64 — arm64/aarch64 порт V4bel/dirtyfrag (CVE-2026-43284). Только ESP - kernel-oopses в пути rxrpc на arm64 из-за flush_dcache_page | Kitploit
Инструменты/GitHubGitHub/linnemanlabs/dirtyfrag-arm64
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеСтатьи и ИсследованияОбучение и ОбразованиеRed TeamingЭксплуатация Бинарных Файлов
GitHublinnemanlabs/dirtyfrag-arm64

dirtyfrag-arm64

arm64/aarch64 порт V4bel/dirtyfrag (CVE-2026-43284). Только ESP - kernel-oopses в пути rxrpc на arm64 из-за flush_dcache_page

Репозиторий
2883 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

dirtyfrag-arm64

arm64/aarch64 порт V4bel/dirtyfrag (CVE-2026-43284, CVE-2026-43500).

Протестировано на Ubuntu 24.04.4 LTS с linux-aws 6.17.0-1013-aws на AWS Graviton (самая новая доступная на момент написания).

Полный разбор с анализом обхода AppArmor, рекомендациями по усилению защиты и обнаружению: linnemanlabs.com/posts/porting-dirtyfrag-arm64

⚠️ Ограничения userns в AppArmor Ubuntu не предотвращают надежно эту эксплуатацию

Ubuntu имеет два sysctl AppArmor:

  • kernel.apparmor_restrict_unprivileged_userns
  • kernel.apparmor_restrict_unprivileged_unconfined

Оба можно обойти, цепляя aa-exec с самим собой, используя профили, присутствующие в стандартных облачных и установочных образах Ubuntu, которые я тестировал:

root@kitploit:~
aa-exec -p crun -- aa-exec -p crun -- ./dirtyfrag_arm64 --force-esp

Для получения дополнительной информации смотрите Two Hops and a Shell для полного анализа обхода AppArmor в Ubuntu.

Что отличается на arm64

Исходный PoC для x86_64 использует два пути эксплуатации: путь ESP/xfrm, который повреждает /usr/bin/su, и запасной путь rxrpc/rxkad, повреждающий /etc/passwd. На arm64 путь rxrpc вызывает kernel oops и не может быть использован. Путь ESP работает чисто.

Сбой rxrpc: flush_dcache_page

На x86_64 flush_dcache_page() является no-op. x86 имеет аппаратно-когерентные кэши данных/инструкций. На arm64 она выполняет реальное обслуживание dcache и разыменовывает метаданные struct page*. Когда путь шифрования rxrpc (rxkad_secure_packet -> crypto_pcbc_encrypt -> skcipher_walk_done) вызывает flush_dcache_page на странице, ссылка на которую была изменена через цепочку splice/vmsplice, x86_64 молча пропускает это, но arm64 получает ошибку трансляции и вызывает oops:

root@kitploit:~
pc : flush_dcache_page+0x18/0x58
lr : skcipher_walk_done+0xbc/0x260
     crypto_pcbc_encrypt+0xe8/0x1c8 [pcbc]
     crypto_skcipher_encrypt+0x48/0xb8
     rxkad_secure_packet+0x108/0x270 [rxrpc]
     rxrpc_send_data+0x264/0x550 [rxrpc]

На протестированных мной системах arm64 запрет записи uid_map удалял рабочий путь ESP. Пространство имен может быть создано, но процесс не может отобразить себя в root внутри него или получить необходимые для настройки XFRM возможности в пространстве имен. Запасной путь rxrpc не предоставил рабочего пути повышения привилегий без пространства имен на arm64, вместо этого он вызывал oops ядра.

Работа только через ESP

На arm64 в моем тестировании был работоспособен только путь ESP. Этот путь требует создания пользовательского и сетевого пространства имен, а затем успешного отображения вызывающего пользователя в root внутри этого пространства имен. Усиление защиты дистрибутива может нарушить этот путь разными способами: Ubuntu может запретить запись uid_map через ограничения userns в AppArmor, я не тестировал на Debian/RHEL.

AppArmor: заблокирован по умолчанию, но обходится на Ubuntu

На протестированном мной образе Ubuntu 24.04 AWS apparmor_restrict_unprivileged_userns=1 блокировал прямую эксплуатацию из моей обычной SSH-сессии, запрещая запись uid_map внутри нового пространства имен.

Однако, при значении по умолчанию apparmor_restrict_unprivileged_unconfined=0, неограниченный пользователь может перейти в существующий профиль в режиме жалоб (например, runc) через aa-exec и обойти ограничение:

root@kitploit:~
aa-exec -p runc -- ./dirtyfrag_arm64 --force-esp

Установка kernel.apparmor_restrict_unprivileged_unconfined=1 блокирует этот путь и в настоящее время широко рекомендуется как решение для блокировки всех путей. Однако добавление еще одного aa-exec также обходит это:

root@kitploit:~
aa-exec -p crun -- aa-exec -p crun -- ./dirtyfrag_arm64 --force-esp

Смотрите ранее связанные посты для подробностей.

Специфичная для архитектуры нагрузка

Эксплойт перезаписывает /usr/bin/su в кэше страниц минимальным статическим ELF. Исходный PoC содержит x86_64 ELF с шеллкодом x86_64. Этот порт заменяет его эквивалентным aarch64 ELF:

  • ELF e_machine: EM_AARCH64 (183) вместо EM_X86_64 (62)
  • Шеллкод: инструкции aarch64 с использованием svc #0 вместо syscall
  • Номера системных вызовов: setgid=144, setuid=146, setgroups=159, execve=221 (против 106, 105, 116, 59 на x86_64)
  • Фиксированная ширина инструкций в 4 байта (против переменной длины x86_64), что приводит к немного большей нагрузке (~216 байт против 192)

Сборка и запуск

root@kitploit:~
# Clone
git clone https://github.com/linnemanlabs/dirtyfrag-arm64.git

# Build
cd dirtyfrag-arm64
gcc -O0 -Wall -o dirtyfrag_arm64 dirtyfrag_arm64.c -lutil

# Run
./dirtyfrag_arm64 --force-esp

Флаг --force-esp полностью пропускает путь rxrpc, чтобы избежать ошибки ядра arm64.

Протестированное окружение

По состоянию на 2026-05-09 последнее доступное ядро Ubuntu 24.04 aws (6.17.0-1013-aws, собранное 24 апреля) поставляется без исправлений ни для Copy Fail (CVE-2026-31431, раскрыто 29 апреля), ни для Dirty Frag (CVE-2026-43284/43500, раскрыто 7 мая).

Немедленное смягчение

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

Занесите уязвимые модули в черный список

Безопасно на любой системе, не использующей активно транспортный режим IPsec или AFS. Чтобы предотвратить загрузку модулей, поместите следующее в /etc/modprobe.d/dirtyfrag.conf:

root@kitploit:~
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false

Обновите initramfs

Ubuntu также рекомендует перегенерировать initramfs, чтобы черный список присутствовал во время ранней загрузки:

root@kitploit:~
update-initramfs -u -k all
``

### Удалите права на чтение у SUID-бинарников

Блокирует этот класс атак на основе splice на кэш страниц против этих SUID-целей. Эксплойту требуются права на чтение целевого файла для `splice()`. Пользователи по-прежнему могут выполнять бинарники.

**Не внедряйте это без тестирования в вашей среде и во всех ваших инструментах.**

```bash
chmod o-r /usr/bin/su

Это не исправление, а только смягчение. Существует еще много путей повышения привилегий.

Выгрузите модули

Чтобы выгрузить модули из работающей системы:

root@kitploit:~
rmmod esp4 esp6 ipcomp4 ipcomp6 rxrpc 2>/dev/null

Убедитесь, что они выгружены:

root@kitploit:~
grep -qE '^(esp4|esp6|rxrpc) ' /proc/modules \
  && echo "Affected modules are loaded" \
  || echo "Affected modules are NOT loaded"

Сбросьте кэш страниц

Сброс кэша страниц должен удалить вредоносное содержимое и заставить файлы снова читаться с диска.

root@kitploit:~
echo 3 > /proc/sys/vm/drop_caches

Примечание: у меня были некоторые непостоянные результаты с этим, но чем больше я пытаюсь воспроизвести, тем больше это работает как ожидалось. Для этого PoC вы можете проверить md5sum на /usr/bin/su, и если он не совпадает, перезагрузитесь.

Очистка после тестирования

Выполните шаг сброса кэша страниц, затем проверьте с помощью:

root@kitploit:~
sha256sum /usr/bin/su

# Or from package manager:

dpkg -V util-linux    # Debian/Ubuntu
rpm -V util-linux     # RHEL/Amazon Linux

Превентивные меры

Для более проактивного подхода, который затрагивает весь класс уязвимостей (а не только конкретные CVE), смотрите полный разбор ограничений userns AppArmor, предотвращения предварительной загрузки модулей, обнаружения на основе Tetragon, а также правила YARA.

Благодарности

  • Hyunwoo Kim (@v4bel) - оригинальное исследование уязвимости, раскрытие и PoC для x86_64
  • SiCk - исследование обхода AppArmor в Ubuntu
  • Keith Linneman / LinnemanLabs - порт для arm64, анализ сбоя flush_dcache_page, исследование AppArmor, заметки по обнаружению

Правовая информация

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

Несанкционированное использование против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, незаконно и неэтично.

Лицензия

MIT. Копируйте, воруйте, изменяйте, учитесь на нем, делитесь своими улучшениями со мной. Или нет. Это код, делайте с ним что хотите.

Скачать инструмент
СвойствоЗначение
ЭкземплярAWS t4g.micro (Graviton2)
ОСUbuntu 24.04.4 LTS
Ядро6.17.0-1013-aws #13~24.04.1-Ubuntu (собрано 2026-04-24)
Архитектураaarch64
unprivileged_userns_clone1 (включено)
Модуль esp4доступен, загружаемый
Модуль rxrpcдоступен, загружаемый (но вызывает сбой на arm64)
Конфигурациястандартный облачный образ Ubuntu 24.04, модули ядра по умолчанию