Дождались!
Уязвимость (пока единственную критическую в Android 11), получившую идентификатор CVE-2020-0267, которую мы с коллегой @jd7drw нашли в операционной системе Android, наконец-то пофиксили.
На мой взгляд, это очень интересная бага, о которой мы писали в том числе в Хакер и рассказывали на PHDays:
Суть в том, что используя вполне легитимные механизмы, предоставляемые Android, без root-доступа, без специальных разрешений, абсолютно прозрачно для пользователя, можно было подменить любое приложение.
Механизм идеальный, создаем приложение, которое может нести какую-то полезную нагрузку, например, показывать курс криптовалюты или сделать тиндер для котиков. Но помимо основного приложения в бэкграунде создается Activity с указанным параметром taskAffinity. В этом параметре необходимо указать имя пакета приложения, которое мы хотим подменить. Собственно всё, наш зловред готов.
После этих нехитрых манипуляций при нажатии на иконку приложения, имя которого мы указали в taskAffinity, вместо запуска нормального приложения будет выведена на передний план Activity злоумышленника. Эта Activity может полностью копировать интерфейс подменяемого приложения и отправлять вводимые учетные данные на сторонний сервер. При этом, если есть двух-факторная аутентификация, никто не мешает по аналогичной схеме отправить смс-код на сервер. После кражи учетных данных можно свернуть свою активность и запустить/показать пользователю реальное приложение, которое он хотел запустить.
А если подменить приложение настроек, то можно попробовать защититься и от удаления!
Эту уязвимость мы зарепортили еще в 2017 году, и какого было моё удивление, когда ее «переоткрыли» спустя два года, назвали звучным именем StrandHogg ( и дико распиарили. Суть абсолютно такая же, но CVE они не получили.
Чуть позже выложу код PoC, чтобы можно было потестить самим.
Это наша первая CVE и упоминание на странице благодарностей Android.
Ссылки:
- Статья в хурнале «Хакер»
- Примечания о безопасности к выпуску Android 11
- Пресс-релиз Фонда «Сколково»