
Ein PoC für eine Schwachstelle im ZTE File Manager (zte.com.cn.filer), die das Lesen beliebiger Dateien aus anderen Apps mit den Rechten dieses Dateimanagers ermöglicht.
Ein PoC für CVE-2026-40000, eine Schwachstelle im ZTE File Manager (zte.com.cn.filer), die es ermöglicht, beliebige Dateien aus anderen Apps mit den Berechtigungen dieses Dateimanagers zu lesen
Vorgehensweise: Baue das Projekt (oder hole dir die App aus den Releases), installiere und öffne den PoC, gib dann eine zu öffnende Datei ein und drücke die Schaltfläche Open as zte.com.cn.filer, um zu versuchen, sie zu öffnen. Wähle im ZTE File Manager extract all, bestätige dann die Dekomprimierung; sie wird fehlschlagen und dich auffordern, eine externe App zum Öffnen auszuwählen (du kannst aus dem Android Open Picker wählen). Der ZTE File Manager kopiert die Datei nach /sdcard/Android/data/zte.com.cn.filer/cache und entpackt sie in ein temporäres Unterverzeichnis. Wenn du versuchst, eine Datei mit dem Namen einer Datei im System-PATH zu öffnen (oder direkt eine Datei im System-PATH), wird sie direkt nach /sdcard/Android/data/zte.com.cn.filer/cache kopiert und die App fragt, ob du sie überschreiben möchtest. Es gibt außerdem eine Möglichkeit, sofort zu erkennen, ob die zu öffnende Datei vom ZTE File Manager aufgerufen werden kann oder nicht (vorausgesetzt, die App hat keine Berechtigung, sie zu lesen): In der FilePreViewActivity wird oben links und auch oben beim Zurück-Pfeil, wenn es möglich ist, die Datei zu öffnen, der Dateiname angezeigt; schlägt das Öffnen hingegen fehl, wird kein Name angezeigt.
Wie der PoC funktioniert: Er führt etwas wie adb shell am start -d content://zte.com.cn.filer.fileprovider/root_path/filetoopen zte.com.cn.filer/zte.com.cn.filer.FilePreViewActivity aus
Die App hat diesen Provider
<provider
android:name="androidx.core.content.FileProvider"
android:exported="false"
android:authorities="zte.com.cn.filer.fileprovider"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
Auch wenn er nicht exportiert ist, kann er von dieser Activity aufgerufen werden
android:name="zte.com.cn.filer.FilePreViewActivity"
android:exported="true"
Da wir den Provider aus einer der eigenen App-Activities heraus aufrufen, wird das Exportiert-Flag irrelevant. Die Activity ist auf true exportiert und kann daher von anderen Komponenten aufgerufen werden.
Offensichtlich reicht das nicht aus; die App muss den Zugriff auf / oder zumindest auf sensible Pfade erlauben. Es stellt sich heraus, dass sie das tut (aus android:resource="@xml/provider_paths), auch wenn sie einen . verwendet, zeigt er auf / und ermöglicht das Öffnen von Dateien von überall dort, wo die Dateien-App Zugriff hat
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path
name="files-path"
path="."/>
<external-path
name="external_files"
path="."/>
<root-path
name="root_path"
path="."/>
<external-cache-path
name="external_cache_path"
path="."/>
</paths>
Betroffene Geräte: ZTE Blade A75 5G und wahrscheinlich neuere Modelle, sofern sie nicht aktualisiert wurden (ich habe sie nicht, daher ist das eine Vermutung). Unter Android 9 bis 12 (wahrscheinlich ist die Situation bei früheren Android-Versionen dieselbe) fehlt der App die zte.com.cn.filer.FilePreViewActivity, sodass sie nicht verwundbar zu sein scheint, oder es kann vorkommen, dass die App vollständig fehlt (zumindest dort, wo ich es versucht habe, wird der Standard-Google-Dateimanager verwendet).
Ich bin nicht für den Missbrauch hiervon verantwortlich; die Schwachstelle ist lokal, hat eine CVE erhalten und ist daher gepatcht. Führe Systemupdates durch oder aktualisiere dein Gerät auf ein neueres, falls du besorgt bist.