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

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

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 для локального исследования уязвимостей и регрессионного тестирования.

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

Популярное

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

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

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

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

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

Лаборатория 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, способным собирать внешние модули

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

    root@kitploit:~
    ../build/linux-5.10-kasan
    ../build/linux-5.10-kasan/arch/x86/boot/bzImage
    

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

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

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

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

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

    root@kitploit:~
    MAX_ATTEMPTS=2000 ./scripts/reproduce.sh
    

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

    root@kitploit:~
    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
    

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

    root@kitploit:~
    MAX_ATTEMPTS=2000 UNMAP_OFFSET_NS=-800000 ./scripts/reproduce.sh
    

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

    root@kitploit:~
    MAX_ATTEMPTS=2000 VERBOSE_ATTEMPTS=1 UNMAP_OFFSET_NS=-800000 \
      ./scripts/reproduce.sh
    

    Ручные шаги

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

    root@kitploit:~
    ./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

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

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

    root@kitploit:~
    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
    

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

    root@kitploit:~
    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.
    Скачать инструмент