
Un PoC per una vulnerabilità in ZTE File Manager (zte.com.cn.filer) che consente di leggere file arbitrari da altre app con i privilegi di questo file manager
Una poc per CVE-2026-40000, una vulnerabilità in ZTE File Manager (zte.com.cn.filer) che consente di leggere file arbitrari da altre app con i privilegi di questo file manager
Come fare: compilate il progetto (o scaricate l'app dalle releases), installate e aprite la poc, quindi inserite un file da aprire e premete il pulsante Open as zte.com.cn.filer per provare ad aprirlo. Nell'app ZTE File Manager selezionate extract all, poi confermate la decompressione: fallirà e vi chiederà di scegliere un'app esterna per aprirlo (potrete scegliere dal selettore Android). L'app ZTE File Manager copierà il file in /sdcard/Android/data/zte.com.cn.filer/cache e lo decomprimerà in una sottodirectory temporanea. Quando proverete ad aprire un file con il nome di uno presente nel PATH di sistema (o direttamente uno nel PATH di sistema), verrà copiato direttamente in /sdcard/Android/data/zte.com.cn.filer/cache e l'app chiederà se si desidera sovrascriverlo.
Come funziona la poc: fa qualcosa come adb shell am start -d content://zte.com.cn.filer.fileprovider/root_path/filetoopen zte.com.cn.filer/zte.com.cn.filer.FilePreViewActivity
L'app ha questo 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>
Anche se non è esportato, può essere chiamato da questa activity
android:name="zte.com.cn.filer.FilePreViewActivity"
android:exported="true"
Poiché chiamiamo il provider da una delle activity della stessa app, il parametro exported diventa inutile. L'activity ha exported=true, quindi può essere chiamata da altri componenti.
Ovviamente questo non basta: l'app deve consentire l'accesso a / o almeno a percorsi sensibili. A quanto pare lo fa (from android:resource="@xml/provider_paths); anche se usa un . punta a /, consentendo di aprire file da qualsiasi punto a cui l'app file ha accesso
<?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>
Dispositivi interessati: ZTE Blade A75 5G e probabilmente i modelli più nuovi, a meno che non vengano aggiornati (non li possiedo, quindi è una supposizione). Su Android dalla 9 alla 12 (probabilmente anche sulle versioni Android precedenti la situazione è la stessa) nell'app manca zte.com.cn.filer.FilePreViewActivity, quindi non sembra vulnerabile, oppure potrebbe mancare completamente l'app (almeno dove ho provato io viene usato il file manager stock di Google).
Non sono responsabile per un uso improprio di questo contenuto; la vulnerabilità è locale, ha ricevuto un CVE ed è quindi stata corretta. Fate gli aggiornamenti di sistema o passate a un dispositivo più recente se siete preoccupati.