
Un PoC pour une vulnérabilité dans ZTE File Manager (zte.com.cn.filer) qui permet de lire des fichiers arbitraires d'autres applications avec les privilèges de ce gestionnaire de fichiers.
Un poc pour CVE-2026-40000, une vulnérabilité dans ZTE File Manager (zte.com.cn.filer) qui permet de lire des fichiers arbitraires d'autres applications avec les privilèges de ce gestionnaire de fichiers
Comment faire : compilez le projet (ou récupérez l'application depuis les releases), installez et ouvrez le poc, puis saisissez un fichier à ouvrir et appuyez sur le bouton Open as zte.com.cn.filer pour tenter de l'ouvrir. Dans ZTE File Manager, sélectionnez extract all, puis confirmez la décompression ; elle échouera et vous proposera de choisir une application externe pour l'ouvrir (vous pourrez choisir via le sélecteur natif d'Android). ZTE File Manager copiera le fichier vers /sdcard/Android/data/zte.com.cn.filer/cache et le décompressera dans un sous-répertoire temporaire. Lorsque vous tenterez d'ouvrir un fichier portant le nom d'un fichier présent dans le PATH système (ou directement un fichier du PATH système), il sera copié directement vers /sdcard/Android/data/zte.com.cn.filer/cache et l'application vous demandera si vous voulez l'écraser. Il existe également un moyen de reconnaître immédiatement si le fichier à ouvrir peut ou non être accédé par ZTE File Manager (en supposant que l'application n'ait pas les permissions pour le lire) : dans FilePreViewActivity, en haut à gauche et également en haut là où se trouve la flèche de retour, lorsqu'il est possible d'ouvrir le fichier, le nom du fichier est affiché ; en revanche, lorsque l'ouverture échoue, aucun nom n'apparaît.
Comment fonctionne le poc : il exécute quelque chose comme adb shell am start -d content://zte.com.cn.filer.fileprovider/root_path/filetoopen zte.com.cn.filer/zte.com.cn.filer.FilePreViewActivity
L'application possède ce 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>
Même s'il n'est pas exporté, il peut être appelé par cette activité
android:name="zte.com.cn.filer.FilePreViewActivity"
android:exported="true"
Puisque nous appelons le provider depuis l'une des activités de sa propre application, l'attribut exported devient inutile. L'activité est exportée à true et peut donc être appelée depuis d'autres composants.
Évidemment, cela ne suffit pas : l'application doit autoriser l'accès à / ou du moins à des chemins sensibles. Il s'avère qu'elle le fait (d'après android:resource="@xml/provider_paths), même si elle utilise un ., celui-ci pointe vers /, permettant d'ouvrir des fichiers depuis n'importe où là où l'application de fichiers a accès
<?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>
Appareils affectés : ZTE Blade A75 5G et probablement les nouveaux modèles, sauf mise à jour (je ne les ai pas, donc je suppose). Sur Android 9 jusqu'à 12 (probablement sur les versions antérieures d'Android la situation est la même), l'application ne possède pas zte.com.cn.filer.FilePreViewActivity, elle ne semble donc pas vulnérable, ou bien il se peut que l'application soit complètement absente (le gestionnaire de fichiers Google d'origine est utilisé, du moins là où j'ai essayé).
Je ne suis pas responsable d'un mauvais usage de ceci ; la vulnérabilité est locale, a obtenu un CVE et est donc corrigée. Effectuez les mises à jour système ou passez à un appareil plus récent si vous êtes inquiet.