Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2022-46395-qemu — QEMU 기반 실험 환경으로 Arm Mali r36p0 GPU 드라이버의 CVE-2022-46395 경합 조건을 재현합니다. PoC, 빌드 스크립트, initramfs 패키징을 포함하여 로컬 취약점 연구 및 회귀 테스트에 사용됩니다. | Kitploit
도구/GitHubGitHub/gao-zuin/cve-2022-46395-qemu
Vulnerability AnalysisExploitationFuzzingLearning & EducationBinary ExploitationLabs & Practice
GitHubgao-zuin/cve-2022-46395-qemu

cve-2022-46395-qemu

QEMU 기반 실험 환경으로 Arm Mali r36p0 GPU 드라이버의 CVE-2022-46395 경합 조건을 재현합니다. PoC, 빌드 스크립트, initramfs 패키징을 포함하여 로컬 취약점 연구 및 회귀 테스트에 사용됩니다.

저장소 보기
23개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2022-46395 QEMU r36p0 Lab

이 저장소는 Arm Mali r36p0 드라이버 계열에 대한 CVE-2022-46395의 휴대용 트리거 조건을 재현하기 위한 QEMU/no-Mali 실험 환경을 포함합니다.

이 실험 환경은 로컬 취약점 연구 및 회귀 테스트를 목적으로 합니다. 원본 익스플로잇의 Pixel 특화 권한 상승 페이로드는 포함하지 않습니다. LAB_QEMU 모드에서는 PoC가 소프트 이벤트/사용자 버퍼 레이스 윈도우에 도달했음을 입증한 후 중단됩니다.

저장소 구조

  • poc/: QEMU에 맞게 조정된 CVE-2022-46395 PoC. Android 로깅 및 속성 호출이 대체되었으며, LAB_QEMU 모드에서는 Pixel 커널 텍스트 패치가 비활성화되어 있습니다.
  • src/google-gpu-raviole-android13/: android.googlesource.com/kernel/google-modules/gpu의 Google Pixel GPU 모듈 소스, 브랜치 android-gs-raviole-5.10-android13. 포함된 mali_kbase/Kbuild는 드라이버를 r36p0-01eac0으로 식별합니다.
  • scripts/: 빌드, initramfs 패키징, QEMU 부팅, 단발 재현 도우미 스크립트.
  • docs/: 로컬 분석 노트 및 재현 보고서.
  • logs/: 성공적인 로컬 실행에서 얻은 선택된 증거 로그.
  • 생성된 바이너리, initramfs 아카이브, 오브젝트 파일 및 대부분의 런타임 로그는 Git에서 무시됩니다. 아래 스크립트를 사용하여 로컬에서 다시 빌드하세요.

    호스트 요구 사항

    스크립트는 다음이 설치된 Linux VM에서 사용되었습니다:

    • bash, make, gcc, file, cpio, gzip, modinfo
    • /bin/busybox에 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: QEMU에 전달되는 bzImage
    • QEMU_LOG: 출력 로그 경로
    • QEMU_MEM: QEMU 메모리 크기, 기본값 1536M
    • QEMU_SMP: QEMU CPU 개수, 기본값 3
    • MAX_ATTEMPTS: PoC 재시도 제한, 기본값 2000
    • UNMAP_OFFSET_NS: 레이스 타이밍 오프셋, 기본값 -800000
    • VERBOSE_ATTEMPTS=1: 시도별 세부 정보 출력
    • KASAN_UAF_MODE=1: scripts/reproduce_kasan_uaf.sh에서 사용하는 KASAN UAF 프로브 옵션으로 모듈 로드

    예상 증거

    성공적인 실행은 다음과 같은 줄을 출력합니다:

    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입니다. 이는 no-Mali QEMU에서 r36p0-01eac0에 대해 레이스 윈도우에 도달했음을 나타냅니다.

    참고 사항

    • 이는 완전한 장치 익스플로잇 체인이 아닌 QEMU 실험 환경 트리거입니다.
    • 원본 Pixel 최종 단계는 하드코딩된 ARM64 커널 텍스트 오프셋에 의존하며 의도적으로 사용되지 않습니다.
    • QEMU가 레이스를 재현하지 않고 종료되면 MAX_ATTEMPTS를 높이거나 UNMAP_OFFSET_NS를 조정하여 다시 실행하십시오.
    도구 다운로드