Дождались!

Уязвимость (пока единственную критическую в Android 11), получившую идентификатор CVE-2020-0267, которую мы с коллегой @jd7drw нашли в операционной системе Android, наконец-то пофиксили.

На мой взгляд, это очень интересная бага, о которой мы писали в том числе в Хакер и рассказывали на PHDays:

Суть в том, что используя вполне легитимные механизмы, предоставляемые Android, без root-доступа, без специальных разрешений, абсолютно прозрачно для пользователя, можно было подменить любое приложение.

Механизм идеальный, создаем приложение, которое может нести какую-то полезную нагрузку, например, показывать курс криптовалюты или сделать тиндер для котиков. Но помимо основного приложения в бэкграунде создается Activity с указанным параметром taskAffinity. В этом параметре необходимо указать имя пакета приложения, которое мы хотим подменить. Собственно всё, наш зловред готов.

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

А если подменить приложение настроек, то можно попробовать защититься и от удаления!

Эту уязвимость мы зарепортили еще в 2017 году, и какого было моё удивление, когда ее «переоткрыли» спустя два года, назвали звучным именем StrandHogg ( и дико распиарили. Суть абсолютно такая же, но CVE они не получили.

Чуть позже выложу код PoC, чтобы можно было потестить самим.

Это наша первая CVE и упоминание на странице благодарностей  Android.

Ссылки: