
PoC لثغرة أمنية في مدير ملفات ZTE (zte.com.cn.filer) تسمح بقراءة ملفات عشوائية من التطبيقات الأخرى بصلاحيات مدير الملفات هذا
إثبات مفهوم (poc) لـ CVE-2026-40000، وهي ثغرة في ZTE File Manager (zte.com.cn.filer) تسمح بقراءة ملفات عشوائية من تطبيقات أخرى بصلاحيات مدير الملفات هذا
كيفية الاستخدام: قم ببناء المشروع (أو احصل على التطبيق من releases)، ثم ثبّت وافتح الـ poc، ثم أدخل ملفًا لفتحه واضغط على الزر Open as zte.com.cn.filer لمحاولة فتحه. في ZTE File Manager اختر extract all، ثم أكّد فك الضغط، سيفشل وسيطلب منك اختيار تطبيق خارجي لفتحه (سيُسمح لك بالاختيار من منتقي الفتح في أندرويد). سيقوم ZTE File Manager بنسخ الملف إلى /sdcard/Android/data/zte.com.cn.filer/cache وفك ضغطه في مجلد فرعي مؤقت. عندما تحاول فتح ملف باسم أحد الملفات في مسار النظام (PATH) (أو ملف موجود مباشرة في مسار النظام) فسيتم نسخه مباشرة إلى /sdcard/Android/data/zte.com.cn.filer/cache وسيسألك التطبيق إن كنت تريد استبداله. هناك أيضًا طريقة للتعرّف فورًا على ما إذا كان الملف المراد فتحه يمكن الوصول إليه من قِبل ZTE File Manager أم لا (بافتراض أن التطبيق لا يملك صلاحيات قراءته): في FilePreViewActivity في الزاوية العلوية اليسرى وأيضًا في الأعلى حيث يوجد سهم الرجوع، عندما يكون فتح الملف ممكنًا يظهر اسم الملف، أما عندما يفشل الفتح فلا يظهر أي اسم.
كيف يعمل الـ poc: يقوم بشيء مثل adb shell am start -d content://zte.com.cn.filer.fileprovider/root_path/filetoopen zte.com.cn.filer/zte.com.cn.filer.FilePreViewActivity
يمتلك التطبيق هذا المزوّد (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>
حتى وإن لم يكن مُصدَّرًا (exported) فيمكن استدعاؤه بواسطة هذا النشاط (activity)
android:name="zte.com.cn.filer.FilePreViewActivity"
android:exported="true"
بما أننا نستدعي المزوّد من أحد أنشطة تطبيقه نفسه، فإن خاصية التصدير تصبح بلا فائدة. النشاط مُصدَّر بقيمة true لذا يمكن استدعاؤه من مكوّنات أخرى.
من الواضح أن هذا ليس كافيًا، فالتطبيق يحتاج إلى السماح بالوصول إلى / أو على الأقل إلى مسارات حساسة. اتضح أنه يفعل ذلك (from android:resource="@xml/provider_paths)، فرغم أنه يستخدم . إلا أنه يشير إلى / مما يسمح بفتح الملفات من أي مكان يملك فيه تطبيق الملفات صلاحية الوصول
<?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>
الأجهزة المتأثرة: ZTE Blade A75 5G والطرازات الجديدة على الأرجح ما لم يتم تحديثها (لا أملكها لذا هذا تخمين). على أندرويد 9 حتى 12 (على الأرجح الوضع نفسه في إصدارات أندرويد الأقدم) يفتقد التطبيق إلى zte.com.cn.filer.FilePreViewActivity لذا يبدو غير معرّض للثغرة، أو قد يكون التطبيق غائبًا تمامًا (يُستخدم تطبيق الملفات الافتراضي من جوجل على الأقل في المكان الذي جرّبت فيه).
لست مسؤولًا عن إساءة استخدام هذا، فالثغرة محلية، وحصلت على CVE وبالتالي تم ترقيعها. قم بتحديثات النظام أو قم بترقية جهازك إلى جهاز أحدث في حال كنت قلقًا.