Как стать автором
Обновить

Какие баги мы заложили в мобильный банк на PHDays 12: разбор конкурса $NATCH

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров2.7K
Всего голосов 12: ↑12 и ↓0+12
Комментарии7

Комментарии 7

Я не очень большой спец по андроиду, но в случае с receiver у вас в коде написано android:exported="false"
Разве неэкспортируемые receiver'ы тоже уязвимы?

Все верно, receiver действительно не экспортирован и отправлять ему широковещательные сообщения нельзя. Но смысл эксплуатации этой уязвимости не в том, чтобы атаковать непосредственно receiver через механизм IPC (для чего как раз нужно иметь android:exported="true"), а в том, что приложение не осуществляет должного контроля аутентификации при взаимодействии с виджетом.

И, получается, даже неэкспортируемый виджет можно добавить на рабочий стол?

Да. И официальная документация это подтверждает. Да и в целом receiver нужен фактически для внутреннего пользования, чтобы получать сообщения от виджета. Экспортировать этот receiver для всех остальных не требуется. О чем также говорит официльная документация:

The <receiver> element requires the android:name attribute, which
specifies the AppWidgetProvider used by the widget. The component should not
be exported unless a separate process needs to broadcast to your
AppWidgetProvider, which is usually not the case.

Очень интересно, спасибо :-)

А как задетектить такую ошибку "Отправка запросов до ввода PIN-кода"?
Можно без анпининга просто весь трафих через прокси посылать и просматривать?

Если есть пиннинг, то его нужно снимать чтобы отловить эту ошибку. Впрочем, если речь идет о тестировании QA командой, то это легко ловится на QA сборках с отключенным пиннингом. Просто запускаем приложение и смотрим улетают ли какие-то запросы на сервер до фактической аутентификации по пин-коду/биометрии.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий