Второй год подряд мы проводим независимый анализ безопасности приложений для мобильного банкинга (МБ) российских банков. За это время накопилось много наблюдений, мыслей, идей, которыми и хотелось бы поделиться. Особое внимание уделим МБ, но общие замечания актуальны и для других приложений, работающих с критичной информацией пользователя.
Наши исследования
В 2013 мы выпустили исследование “Анализ безопасности мобильных банковских приложений 2012”. Чуть позже похожую работу опубликовал исследователь из компании IOActive. О его результатах можно прочитать в его блог-посте здесь. В 2014 мы выпустили исследование “Безопасность мобильного банкинга: возможность реализации атаки MitM”.
А кому это надо?
Среди некоторых специалистов по банковской безопасности в России распространено мнение, что мобильный банкинг еще не заслужил к себе такого внимания, как, например, системы ДБО (дистанционно банковского обслуживания). Их основным аргументом является тот факт, что сейчас через системы мобильного банкинга проходит очень мало финансовых средств. И поэтому, дескать, злоумышленникам МБ не интересен.
Нам же данный сегмент кажется очень привлекательным для рассмотрения, и тому есть несколько причин. Так, хотелось бы сразу обратить внимание читателей на то, что ЦБ РФ не делает различий между ДБО и МБ. В настоящее время Банк России активно разрабатывает рекомендации по безопасному циклу разработки автоматизированных банковских систем. К сожалению, он пока еще не доступен в открытом доступе, но при первой возможности с ним стоит ознакомиться.
Кроме того, злоумышленникам неважно, сколько именно и каких транзакций совершается ежедневно в приложениях для мобильного банкинга. Пусть даже пользователи всего лишь кладут деньги на свой счет для оплаты услуг оператора связи. Важно то, что злоумышленник через уязвимости в приложении может получить доступ к счету, где хранятся деньги клиента. Не будем забывать о том, что достаточно одного взлома ключевого клиента банка, чтобы оказать существенное влияние на деятельность финансовой организации.
Тем, кто считает, что нужно уделять особое внимание ДБО и не тратить время на МБ, стоит знать, что эти системы взаимосвязаны. Не раз мы убеждались в этом на практике в ходе тестирования на проникновение и аудита. Нам удавалось обнаруживать уязвимости и вспомогательную информацию в системах МБ, которую в дальнейшем можно использовать для атак на ДБО.
И, наконец, попросту глупо отрицать мировую практику и говорить, что мобильный банкинг может не стать популярным в России. Число мобильных устройств у пользователей только увеличивается, и мобильный банкинг сегодня — это просто удобно.
Специфичные проблемы мобильного банкинга
1) Организационные проблемы
За последнее время удалось достаточно много пообщаться как с заказчиками (банками) мобильного банка, так и с их исполнителями (разработчиками). Всегда полезно взглянуть на ситуацию с разных сторон.
Что касается заказчиков, доводилось видеть несколько ТЗ на МБ и с трудом находить описание пункта про безопасность. Там чаще всего присутствуют очень общие пожелания, в которых мобильной специфики не учитывается вовсе. Это и понятно: в банках нет отдельных специалистов по мобильной безопасности со знаниями платформ iOS, Android или WindowsPhone. А как известно, механизмы безопасности надо закладывать сразу в архитектуру, думать о защите необходимо на всех стадиях разработки, чтобы экономить деньги в будущем.
В разговорах с разработчиками узнаешь много всего интересного, начиная понимать, откуда появляются такие глупые ошибки в таком критичном приложении, как МБ. Часто при создании продукта клиентскую часть пишет одна компания, а серверную – другая, а то и вовсе она написана кем-то достаточно давно. Наладить хорошей процесс взаимодействия между ними — задача не из простых, и тут появляется ряд ошибок. Далее, банки часто не могут предоставить хорошей тестовой среды для разработки клиентской части, что приводит к выдумыванию различных «костылей» разработчиком. И потом только от него зависит – не забудет ли он убрать их перед выходом релиза… И опять же, проблема наличия специалистов по ИБ у разработчиков не теряет актуальности.
2) Проблема избыточности приложений
Казалось бы: есть приложение для МБ, которое должно помогать удобно и безопасно работать с персональными счетами, деньгами. Откуда вдруг в нем код, отвечающий за работу с различными соц. сетями, сервисами файлов, сервисами заметок и т.д.?! Мне, например, как человеку, параноидально относящемуся к безопасности, это видеть очень странно… Объясняют производители просто: таким образом они рассчитывают лучше продавать такое приложение, наделенное уникальными чертами.
Естественно, никто особо не думает, что с увеличением функционала растет и сложность приложения, и вероятность допустить ошибку становится выше. Да и банально из-за всех этих сторонних сервисов растет attack surface.
3) Проблема хранения данных
Мобильные устройства всегда с нами и невелики по объему. Их легко потерять или просто упустить из виду на некоторое время. При этом, сейчас мобильные устройства о нас могут сказать куда больше, чем их настольные «братья». Поэтому проблема хранения данных остается одной из самых важных.
При анализе безопасности приложения для МБ мы часто видим критичную информацию в открытом виде, которая либо просто хранится в приложении, либо неосознанно валится в кеш сетевых запросов, логи, крешдампы, скриншоты. Злоумышленник при получении физического доступа к устройству может скачать эти критичные файлы.
4) Проблема работы в недоверенной среде
Часто пользователи сами ставят свои устройства под угрозу, получая root-доступ на своем Android-устройстве или устанавливая jailbreak на iOS-устройстве. При этом, они чаще всего не понимают, что при получении различной халявы и рюшечек, встроенные механизмы безопасности ОС частично или полностью отключаются. Тем самым, увеличивается вероятность заражения устройства вредоносным кодом и растет вероятность успешной атаки. Продвинутое вредоносное ПО для мобильных устройств сейчас уже может это сделать само – главное так или иначе попасть на мобильное устройство.
Просмотрев почти все МБ на российском рынке, можно сказать, то что лишь некоторые из них (точнее всего 2-3) проверяют, в каком состоянии находится мобильное устройство – есть ли там jailbreak или root-доступ. Далее, они выводят сообщение и информируют пользователя об этом. Еще в прошлом году одно из таких приложений отказывалось работать на «дискредитированном» устройстве, но уже в этом году ПО просто вносит определенный лимит на проводимые операции. А в большинстве случаев приложения для МБ работают как ни в чем не бывало.
5) Проблема многофакторной аутентификации
В классической системе ДБО второй фактор часто приходит в виде SMS на телефон, и пользователь подтверждает проведение транзакции. В случае мобильного банкинга, при этом подходе оба фактора приходят/вводятся на одно устройство. Если на устройстве есть вирус (что особенно актуально для ОС Android), то это вредоносное ПО непременно перехватит секретную информацию.
В среде мобильного банкинга распространены следующие подходы многофакторной аутентификации: SMS-сообщения с OTP, таблицы одноразовых кодов, специальные мобильные приложения для генерации OTP прямо на устройстве, биометрическая аутентификация. К сожалению, у них у всех есть один большой общий недостаток: они приходят/вводятся на тоже устройство и передаются по тому же каналу передачи данных, что может контролировать злоумышленник при атаке MiTM или какое-то вредоносное ПО на устройстве. Так что для мобильных приложений актуально, скорее, не наличие второго фактора, а существование второго канала передачи данных.
6) Проблема распространения приложений
Данная проблема касается только мобильные ОС со множеством магазинов приложений. В первую очередь, речь идет об ОС Android. Для Android существует огромное количество магазинов (Google Play, Samsung Apps, Yandex market, Amazon mobile app distribution, SlideMe и т.д.). Некоторые из них сразу «залиты» в устройство по умолчанию, и у пользователя нет выбора, тем более у обычного. В итоге, в одном магазине может лежать легитимное приложение, а в другом его модифицированная версия с вредоносным функционалом.
В последнее время участились просьбы посмотреть, что делает приложение для МБ в магазине, к которому не должно, по идее, иметь отношения. Также встречаются просто неофициальные приложения для банков, представляющие собой «обертки» над Интернет-сайтом. Просмотрев ряд таких приложений, мы пока не обнаружили вредоносный функционал, но это не означает, что со следующим обновлением он не появится и ваши данные улетят на сторонний сервер. Необходимо пользоваться только официальными приложениями, а банкам стоит мониторить магазины приложений на наличие подделок.
7) Проблема защиты кода
Кажется, что такие приложения, как МБ, должны всячески пытаться усложнить жизнь любителям поковыряться в их внутренностях, но это не совсем так. Деобфускация кода встречается в Android приложениях, пусть и нечасто. В iOS она абсолютно отсутствует. Так что для анализа этой проблемы полезно сравнивать эти системы. Aналогичная ситуация и с антиотладочными техниками. Также стоит четко понимать, что деобфускация кода и антиотладочные способы — это не механизмы безопасности, а способы усложнения анализа. Без всего этого упрощается поиск уязвимостей в коде.
8) Проблема защиты канала передачи данных
Мобильные устройства прекрасны тем, что они всегда с нами и дают нам возможность получить доступ к информации из любого места. Придя в кафе, ресторан, торговый центр или кинотеатр, мы ищем доступные бесплатные Wi-Fi точки доступа и без раздумья присоединяемся к ним… или садимся на крючок?
Во второй части статьи мы рассмотрим эту ситуацию и покажем, когда и как именно злоумышленник может украсть деньги из приложения для мобильного банкинга.
Автор: d1g1