stop extera
64 subscribers
8 photos
1 video
1 file
15 links
Download Telegram
RCE via MVEL (полный доступ к JVM)
ClassProxy.java
Строки: 632-657
executeMvelMethod(Object obj, Object obj2, String str, String[] strArr, Object[] objArr)
Выполняет произвольные выражения на языке MVEL 2.0
Любой Python-плагин или входящее выражение получает неограниченный доступ к классам и памяти процесса Telegram
Runtime-модификация методов через встроенный Xposed
PyMethodHook.java
Строки: 76-105
PyMethodReplacement.java
Строки: 60-75
PluginsController.java
Строки: 1050-1075
В клиент встроен XposedBridge. Плагины могут перехватывать или полностью заменять вызовы любых методов внутри рантайма Android без root.
Принудительное тихое обновление Python SDK (can_not_skip)
PythonPluginsEngine.java
Строки: 3056-3062
Поиск сообщений по тегу python_sdk в служебном канале @XS6GEcz5ZXMu82UvXQc
Строки: 3073-3088
Логика флага can_not_skip:
if (!ExteraConfig.getPluginsPySdkAutoUpdate() && !pythonSdkUpdateResponse.can_not_skip) {
// Показ диалога пользователю
}
if (!z) {
// Если can_not_skip == true, диалог ПРОПУСКАЕТСЯ!
companion.savePythonSdkArchive(pythonSdkUpdateResponse.getMessage(), pythonSdkUpdateResponse.document);
}

Полное отсутствие проверки цифровой подписи, а так же возможность принудительного обновления что открывает вектор добавления вредоносного кода в Python SDK
Приватный канал обновлений и удалённого конфига
RemoteUtils.java
Строки: 187, 229, 290, 360
Захардкоженный ID канала: -2227431611L
Строки: 204, 326 
Username канала: XS6GEcz5ZXMu82UvXQc
Строки: 67-97
Парсинг постов с префиксом remote_config для динамического переопределения любых настроек приложения из постов канала
При компрометации прав постинга в канале или аккаунта владельца/администратора в память приложения заливается любой Python/нативный код или изменяется конфиг по желанию злоумышленника
Захардкоженный Trusted ID плагинов (2562664432L)
BadgesController.java
Строки: 85-94,181-183
trustedPluginsCache = new CachedRemoteSet("trusted_plugins", SetsKt.setOf(2562664432L));

Пользователь/канал с ID 2562664432 захардкожен в множестве доверенных источников плагинов
👎1
Обход предупреждений безопасности при установке плагинов
InstallPluginBottomSheet.java
Строки: 637-660,283-294
Если pluginInstallParams.getTrusted() == true, предупреждение о неизвестном источнике (unknown_source_hint) отключается.
Возможная подмена кода плагина
❤2👎1
❤2👎1
👍7❤3👎3
❤15👍1👎1