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

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

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

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

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

Категории

Все категории
Loading categories
cve-2022-46395-qemu — Лаборатория на основе QEMU для воспроизведения состояния гонки CVE-2022-46395 в драйвере GPU Arm Mali r36p0. Включает PoC, сборочные скрипты и упаковку initramfs для локального исследования уязвимостей и регрессионного тестирования. | Kitploit
Инструменты/GitHubGitHub/gao-zuin/cve-2022-46395-qemu
Анализ уязвимостейЭксплуатацияФаззингОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHubgao-zuin/cve-2022-46395-qemu

cve-2022-46395-qemu

Лаборатория на основе QEMU для воспроизведения состояния гонки CVE-2022-46395 в драйвере GPU Arm Mali r36p0. Включает PoC, сборочные скрипты и упаковку initramfs для локального исследования уязвимостей и регрессионного тестирования.

Репозиторий
103 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

Лаборатория CVE-2022-46395 QEMU r36p0

Этот репозиторий содержит лабораторию QEMU/no-Mali для воспроизведения переносимого условия срабатывания CVE-2022-46395 для линейки драйверов Arm Mali r36p0.

Лаборатория предназначена для локального исследования уязвимостей и регрессионного тестирования. Она не содержит загрузчика повышения привилегий, специфичного для Pixel, из оригинального эксплойта. В режиме LAB_QEMU PoC останавливается после демонстрации того, что окно гонки soft-event/user-buffer было достигнуто.

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

  • poc/: PoC CVE-2022-46395, адаптированный для QEMU. Вызовы логирования и свойств Android заменены, а патчинг текста ядра Pixel отключён в режиме LAB_QEMU.
  • src/google-gpu-raviole-android13/: Исходный код модуля GPU Google Pixel из android.googlesource.com/kernel/google-modules/gpu, ветка android-gs-raviole-5.10-android13. Включённый файл mali_kbase/Kbuild идентифицирует драйвер как r36p0-01eac0.
  • scripts/: сценарии сборки, упаковки initramfs, загрузки QEMU и вспомогательные сценарии однократного воспроизведения.
  • docs/: локальные заметки по анализу и отчёты о воспроизведении.
  • logs/: выбранные журналы доказательств успешных локальных запусков.

Сгенерированные бинарные файлы, архивы initramfs, объектные файлы и большинство журналов выполнения игнорируются Git. Пересоберите их локально с помощью приведённых ниже сценариев.

Требования к хост-системе

Сценарии использовались на виртуальной машине Linux с:

  • bash, make, gcc, file, cpio, gzip, modinfo
  • busybox по пути /bin/busybox
  • qemu-system-x86_64
  • подготовленным деревом ядра Linux 5.10 x86_64 KASAN, способным собирать внешние модули

По умолчанию сценарии ожидают дерево ядра и образ загрузки по пути:

../build/linux-5.10-kasan
../build/linux-5.10-kasan/arch/x86/boot/bzImage

Вы можете переопределить эти пути с помощью KDIR и KERNEL_IMAGE.

Воспроизведение

Клонируйте репозиторий и перейдите в него:

git clone https://github.com/Gao-Zuin/cve-2022-46395-qemu.git
cd cve-2022-46395-qemu

Запустите полный цикл сборки/упаковки/загрузки:

MAX_ATTEMPTS=2000 ./scripts/reproduce.sh

Если ваше ядро KASAN находится не в каталоге ../build по умолчанию:

KDIR=/path/to/linux-5.10-kasan \
KERNEL_IMAGE=/path/to/linux-5.10-kasan/arch/x86/boot/bzImage \
MAX_ATTEMPTS=2000 \
./scripts/reproduce.sh

Успешный локальный запуск использовал следующие параметры времени:

MAX_ATTEMPTS=2000 UNMAP_OFFSET_NS=-800000 ./scripts/reproduce.sh

Для более подробного логирования попыток:

MAX_ATTEMPTS=2000 VERBOSE_ATTEMPTS=1 UNMAP_OFFSET_NS=-800000 \
  ./scripts/reproduce.sh

Ручные шаги

Одноразовый сценарий эквивалентен:

./scripts/build_r36p0_no_mali.sh
./scripts/build_poc.sh
MAX_ATTEMPTS=2000 UNMAP_OFFSET_NS=-800000 ./scripts/package_initramfs.sh
./scripts/run_qemu.sh

Полезные переменные окружения:

  • KDIR: дерево сборки ядра, используемое для компиляции mali_kbase.ko
  • KERNEL_IMAGE: образ bzImage, передаваемый QEMU
  • QEMU_LOG: путь к выходному журналу
  • QEMU_MEM: размер памяти QEMU, по умолчанию 1536M
  • QEMU_SMP: количество ЦП QEMU, по умолчанию 3
  • MAX_ATTEMPTS: лимит повторных попыток PoC, по умолчанию 2000
  • UNMAP_OFFSET_NS: смещение времени гонки, по умолчанию -800000
  • VERBOSE_ATTEMPTS=1: выводить подробности каждой попытки
  • KASAN_UAF_MODE=1: загружать модуль с опцией зонда KASAN UAF, используемой в scripts/reproduce_kasan_uaf.sh

Ожидаемые доказательства

Успешный запуск выводит строки вида:

mali mali.0: Kernel DDK version r36p0-01eac0
r36p0-01eac0 (UK version 11.34)
/dev/mali0
finished reset: 703956220 fault: 682115150 68 err 0 read 3
qemu lab mode: CVE-2022-46395 soft-event/user-buffer race reproduced
qemu lab mode: reproduction completed after 17 attempts
[init] PoC status: 0

Справочный журнал доказательств:

logs/qemu-cve-2022-46395-r36p0-unmap-minus800us.log

Ключевое условие успеха: err=0, read=3 и fault < reset. Это указывает на то, что окно гонки было достигнуто для r36p0-01eac0 в QEMU без Mali.

Примечания

  • Это триггер лаборатории QEMU, а не полная цепочка эксплойтов для устройства.
  • Финальная стадия оригинального Pixel зависит от жёстко заданных смещений текста ядра ARM64 и намеренно не используется здесь.
  • Если QEMU завершит работу без воспроизведения гонки, запустите повторно с более высоким значением MAX_ATTEMPTS или измените UNMAP_OFFSET_NS.
Скачать инструмент