Comments 7
Веселина, ты огонь!🔥🔥🔥
Ничего не понял, кроме факта наличия уязвимости в какой-то библиотеке. А можно пожалуйста, простыми словами, по русски, для обывателей, пользователей Андроид смартфонов. Какие опасности таит эта уязвимость? В практическом плане.
К сожалению, «какая-то библиотека» написана и продвигается гуглом.
Сам по себе факт того, что одно приложение может открыть любой экран другого — довольно неприятно, но конкретные уязвимости нужно уже искать в каждом приложении по отдельности.
Приблизительный сценарий атаки: пользователь скачивает какое-нибудь хакерское приложение, например, три в ряд или ОчИсТиТеЛь ОпЕрАтИвНоЙ ПаМяТи, и запускает его. Оно сканирует телефон на предмет заранее известных уязвимых приложений, где есть Jetpack Navigation, конструирует нужный интент и запускает его. В итоге открывается приложение-жертва на нужном экране и там уже происходит, ну, например, открытие WebView с оплатой и использование JavaScriptInterface, который, возможно, отдаёт нам что-нибудь вкусненькое.
На самом деле, хоть гугл конечно и допустил уязвимость, очень смешно наблюдать как люди качают ТрИ в РяД с сайта ненаебкаточканет и потом обижаются на то что им сломали жопу. А может просто не стоит качать какую то рандомную дичь с каких то рандомных сайтов?
В этом плане apple поступает мудрее, потому что все опасное запрещено. Чтобы никакой дурак не залез куда не надо и не получил выкачку денег со сбербанка, и потом не пошел жаловаться мол эпплы плохие, как так можно
Как я описал в комментарии ниже, не всегда это могут быть рандомные сайты, а может и вполне себе легитимный стор.
В свое время, когда исследовали одну уязвимость в ОС Андроид, мы загружали в Google play приложение с именем пакета com.example.malware, с функционалом калькулятора и полезной нагрузкой в виде полной подмены приложения Google Photo. И ничего, никаких вопросов. Да и регулярные новости о том, что Google часто пропускает нелегитимные приложения никого уже не удивляет.
Эта статья нацелена скорее на технический обзор возможностей и разбор того, как работает данная техника атак на приложения. Ну и реакция Google, что это не баг, а фича, конечно, тоже не радует.
Касательно Apple скорее соглашусь, хотя и они не без греха. Но правила публикации сильно строже, это верно.
Все именно так, спасибо большое за пояснение. Но это не только проблема приложений, скаченных с неизвестного сайта. Это вполне может быть и легитимное приложение, загруженное из стора. В любой магазин приложений спокойно может попасть такого рода приложение и это не выявят на этапе ревью. Что уж там говорить, если даже из гугло-плея регулярно удаляют просочившуюся туда малварь и вирусы.
На самом деле все описанное это лишь технология, возможность для атаки на приложение. Уязвимость в целевом приложении и ее критичность напрямую зависят от логики работы и какой функционал выполняет открывшийся фрагмент.
Как один из примеров, это фрагмент, который принимает URL и открывает его в WebView. Конечно, так как он внутренний, никто и не думает валидировать приходящие в него параметры, его же «нельзя вызвать из вне». Дальше можно сделать, все, что пожелает фантазия. Как минимум внутри этого WebView отрисовать интерфейс в точности повторяющий интерфейс приложения и предложить пользователю ввести пин/пароль и т.д. Другой случай это работа с файлами и т.д.
С такими примерами мы сталкиваемся регулярно, с фразами «внутренний же компонент, что может случиться». Ну, а как показывает практика, случится может многое. От таких вот проблем в библиотеках, intent redirection и многого, чего мы еще пока не знаем. Это еще раз подчеркивает валидировать и проверять данные, где бы они не передавались, во внутренний ли фрагмент/активити или доступный снаружи.
Надеюсь, сто подобные проблемы научат более серьезно воспринимать слова специалистов по безопасности, хотя кого я обманываю :)
Разбираемся с новой уязвимостью Android-библиотеки Jetpack Navigation: как открыть любой фрагмент из вашего приложения?