В этом материале мы разберем типичные проблемы безопасности мобильного ПО, основные векторы атак и методы защиты от них, сравним уровни защищенности операционных систем Android и iOS, а также расскажем, как защититься от вредоносного ПО, направленного на компрометацию ваших устройств.
Опасный мессенджер и Bluetooth
Файлы, отправляемые в мессенджерах в вашем любимом iPhone (или другом смартфоне), могут стать причиной больших проблем. Недавно небольшой GIF-файл, отправляемый в сообщении iMessage (мессенджер в iOS), наделал много шума. Шпионское ПО (Pegasus) использовалось для слежки за сотнями людей по всему миру с 2016 года. Специалисты Citizen Lab выяснили, что хотя Pegasus может скрывать следы своего присутствия на iPhone, из-за бага шпионское ПО оставило на телефоне одной из пострадавших единственный вредоносный файл, непосредственно доказывающий, что его создателем является NSO Group. Использовав файл как шаблон, Apple смогла уведомить о взломах тысячи потенциальных жертв, а сентябре закрыла уязвимость в очередном обновлении iOS. В этом году в создании аналогичного эксплойта заподозрили и другую компанию, QuaDream.
Еще одна беда из серии «откуда не ждали» пришла со стороны привычного всем протокола Bluetooth. В сентябре 2021 года обнаружилась группа уязвимостей BrakTooth, которые подвергают риску миллиарды устройств. Среди угроз — сбои в работе, в некоторых случаях — выполнение произвольного кода. В числе уязвимых устройств специалисты указывают лэптопы Microsoft Surface, настольные компьютеры Dell, а также несколько моделей смартфонов на базе чипов Qualcomm (например, Pocophone F1, Oppo Reno 5G). В августе проблема затрагивала 1,4 тыс. продуктов устройств. В ноябре Агентство кибербезопасности и безопасности инфраструктуры США (Cybersecurity and Infrastructure Security Agency, CISA) предупредило о том, что PoC-код (эксплойт для демонстрации уязвимости) для BrakTooth в Bluetooth уже доступен в сети.
Android и iOS: движение навстречу
Android-приложения были известны своей обширной поверхностью атаки. В случае с iOS всегда было наоборот: у разработчиков имелось не так много возможностей сделать ошибку и не прикрыть ненужные «двери». Но в последнее время мы наблюдаем смену этого тренда. Google потихоньку начинает ограничивать возможности приложений, заставляя разработчиков более явно указывать необходимую функциональность. В iOS, наоборот, приложениям становятся доступны новые способы взаимодействия с ОС и друг с другом. Таким образом, для Android-приложений уменьшается поверхность атаки (достаточно ознакомиться с нововведениями в последней версии Android 12), в то время как в iOS (а также в macOS, и, по всей видимости, во всей экосистеме Apple) приложениям добавляют новые возможности, что способствует расширению поверхности атаки. Одним из примеров является приложение «Команды», которое есть уже и на macOS, и в браузерных расширениях для мобильного Safari.
Смартфоны часто хранят важные данные в открытом виде
Самая часто встречаемая уязвимость мобильных приложений — это хранение пользовательских данных в открытом (или легко обратимом) виде (что подтверждают и результаты проводимых нами проектов по анализу защищенности). Немного реже мы наблюдали сохранение важных данных в общедоступных папках. Общая доля уязвимостей, связанных с небезопасным хранением данных, составила чуть больше трети всех найденных уязвимостей.
Многие знают, что мобильные приложения неплохо изолированы друг от друга средствами ОС, и получить доступ к хранимым данным не так-то просто. Однако эти данные могут быть похищены с использованием других уязвимостей: например, в 2021 году чаще, чем в 2020-м, встречалась возможность чтения файлов в Android-приложениях, что могло давать атакующему возможность доступа к пользовательским данным.
По нашим экспертным оценкам, каждое исследованное нами в 2021 году приложение (всего 20 пар «Android — iOS»), имело ту или иную проблему с хранением данных, причем подобные уязвимости могут быть весьма полезны для атакующих. На наш взгляд, распространенность недостатков такого типа связана с тем, что разработчики все еще чрезмерно полагаются на системные механизмы изоляции вместо построения многоуровневой защиты на случай возникновения уязвимостей в самом приложении, благодаря которым атакующий сможет действовать как бы в обход механизмов безопасности ОС.
Исследуй меня полностью
Разработчики в большинстве своем по-прежнему проявляют малый интерес к защите своих приложений от несанкционированных исследований.
Каждое приложение имеет хотя бы один из следующих недочетов, облегчающих задачу потенциальному злоумышленнику:
- отсутствие обнаружения root/jailbreak;
- отсутствие контроля целостности исполняемых файлов;
- отсутствие обфускации.
Эти проблемы иногда пытаются решить фреймворки. Например, приложения, написанные на модном языке Flutter4, гораздо сложнее для анализа, чем традиционные приложения на Java, Kotlin, Objective-C, Swift.
В последнее время мы отмечали повышение интереса к безопасности мобильных приложений со стороны компаний-разработчиков. Число проектов по анализу защищенности мобильных приложений в 2021 году выросло в два раза.
И вновь о небезопасном Wi-Fi
При подключении смартфона к недоверенной беспроводной сети есть определенный риск стать жертвой атаки, направленной на перехват передаваемых данных. Не стоит думать, что атака возможна, если только где-то рядом сидит злоумышленник и хочет взломать именно вас (а значит ее вероятность невелика). Типовые атаки, направленные на пассивный сбор данных от приложений, могут выполняться автоматизированно, без участия человека. При этом приложения могут иметь уязвимости, которые позволяют это сделать. Так, по результатам наших исследований, 15% банковских приложений имеют уязвимости, связанные с небезопасной передачей данных.
Способы защиты
Чтобы защититься от взлома, используйте сложный пароль и двухфакторную аутентификацию.
Как мы знаем, для разблокировки устройства достаточно иметь два вида паролей: биометрия (палец или лицо) плюс пин-код, пароль или графический код на выбор.
Самым надежным является стойкий пароль — тот, который состоит минимум из восьми букв верхнего и нижнего регистра, не менее одной цифры и спецсимвола (пробел ! " # $ % & ‘ ( ) * + , — . / : ; ? @ [ ] ^ _`). Желательно, чтобы пароль по значению походил на случайный.
На втором месте — графический код и пин-код. Они короче, но с учетом ограничений на их подбор это хороший компромисс. Главное, не используйте в качестве пароля дату рождения и простые графические знаки.
Плюс таких методов— это возможность их сменить (в отличие от биометрии). Но при этом не стоит забывать, что небезопасно вводить пин или графический пароль под камерами или в местах, где его можно подсмотреть.
На третьем месте по безопасности — вход по биометрии. Здесь есть ряд недостатков: невозможность сменить данные, а также риск, что ваши пальцы смогут использовать для разблокировки гаджета. Поэтому обязательно запомните комбинацию, которая принудительно включает вход в смартфон не только по биометрии, но и по пин-коду, паролю или графическому коду.