Анализ безопасности мобильных банковских приложений 2012
В прошлом году исследовательский центр Digital Security выпустил отчет «Результаты исследования безопасности банк-клиентов российских производителей за период 2009-2011 гг.», где мы поделились своим опытом анализа систем ДБО и неутешительными результатами оценки их безопасности.
Мы не стоим на месте и стараемся делать сегодня то, что будет востребовано завтра. В этом исследовании описаны угрозы, уязвимости и векторы атак для банк-клиентов, разработанных для мобильных платформ (Android и iOS).
Идет активное развитие мобильных технологий, современные требования бизнеса таковы, что доступ к информации должен осуществляться быстро, надежно и из любой точки мира. Платежные приложения не являются исключением, и они постепенно появляются на наших мобильных устройствах (смартфонах, планшетах и т.д.). Мобильные устройства пока еще недостаточно изучены, и каждая мобильная ОС (Android, iOS, Windows Phone, Symbian, BlackBerry и т.п.) имеет свою специфику, поэтому в каждой из них можно обнаружить большое количество как новых уязвимостей, так и хорошо известных.
Были изучены мобильные банковские приложения для таких банков, как:
Банк «Санкт-Петербург» Банк «Балтика», Банк24.ру,
ВТБ, ВТБ 24, Газпромбанк, Инвестбанк, Крайинвестбанк,
Московский Индустриальный Банк,
Московский Кредитный Банк, Мордовпромстройбанк,
Тинькофф Кредитные Системы, УБРиР,
Финансовая группа Лайф,
Ханты-Мансийский Банк, ЮниКредитБанк
Мобильные банковские приложения для iOS
Записывают критичную информацию в лог-файл
Не скрывают критичную информацию
Уязвимы к обходу директорий
Потенциально уязвимы к XSS
Потенциально уязвимы к XXE-атакам
Уязвимости, связанные с некорректной работой SSL
Потенциально уязвимы к SQLi
Лишь небольшое количество мобильных банков реализуют механизмы защиты. Все рассмотренные приложения содержат хотя бы одну уязвимость.
Большая часть приложений для iOS не используют параметры компиляции, предназначенные для защиты от эксплуатации ошибок, связанных с некорректной работой с памятью.
Мобильные банковские приложения для Android
Используют IMEI и IMSI в своей работе
Неправильно используют механизмы межпроцессного взаимодействия
Потенциально уязвимы к SQLi
Потенциально уязвимы к XSS
Уязвимости, связанные с некорректной работой SSL
На основе полученных результатов мы составили топ-10 мобильных банков для iOS и Android с наименьшим числом угроз. При составлении рейтинга программе присваивался 1 балл при наличии защитного механизма или отсутствии небезопасного API определенного класса, и 1 балл вычитался в противоположном случае. Стоит заметить, что 4 банка попали в оба рейтинга.
Топ-10 для Android
Финансовая группа Лайф
Московский Кредитный Банк
Банк «Народный кредит»
Банк «Русский Стандарт»
OC Android и iOS наиболее распространены на сегодняшний день и имеют наибольшее количество мобильных банковских приложений в своих магазинах (Google Play и App Store соответственно).
ОС Windows Phone достаточно молода и еще не так распространена среди пользователей, но уже сейчас имеет в своем магазине (Windows Store) небольшое количество мобильных банковских приложений. В данное исследование банковские приложения для ОС Windows Phone не включены из-за их малого количества на данный момент (в Windows Store их всего 9). Но с учетом появления Windows Phone 8, содержащей новую модель разработки, позволяющую (благодаря легкому портированию) одновременно разрабатывать приложения для обычной ОС Windows 8 и мобильной, можно ожидать рост популярности разработки под Windows Phone 8.
Приложения для мобильных устройств можно классифицировать по множеству критериев, но в контексте безопасности приложений нас интересуют следующие: по месту расположения приложения и по типу используемой технологии передачи данных.
По месту расположения приложения:
• SIM-приложения — приложение на SIM-карте, написанное в соответствии со стандартом SIM Application Toolkit (STK);
• Web-приложения — специальная версия web-сайта;
• Мобильные приложения — приложение, разработанное для определенной мобильной ОС с использованием специализированного API, устанавливаемое в смартфон.
По типу используемой технологии взаимодействия с сервером:
• Сетевые приложения — используют собственный протокол общения поверх TCP/IP, например HTTP;
• SMS-приложения — приложение на основе SMS (Short Messaging Service). Приложение обменивается с сервером информацией с помощью коротких текстовых сообщений;
• USSD-приложения — приложение на основе USSD (Unstructured Supplementary Service Data). Сервис основывается на передаче коротких сообщений, схожих с SMS, но имеет ряд отличий;
• IVR-приложения — приложение, базирующееся на технологии IVR (Interactive Voice Response). Система основана на заранее записанных голосовых сообщениях и тональном наборе.
Именно приложения, разработанные для определенной мобильной ОС с использованием специализированного API, устанавливаемые в смартфон для взаимодействия с соответствующим банковским сервисом, сейчас наиболее распространены, так как полностью используют возможности мобильного аппарата и имеют наиболее дружественный пользовательский интерфейс. Их мы и рассматриваем в данном исследовании.
Типы приложений для мобильного банкинга
К категории «без доступа к счету» относятся такие программы, которые выполняют лишь вспомогательную работу. Эти функции могут присутствовать и в приложениях, у которых есть возможность работать со счетом. Часто мобильное приложение эволюционирует из простого навигационного приложения в приложение с возможностью работы со счетом. Некоторые банки, наоборот, предпочитают разносить эти функции на несколько приложений, что, с нашей точки зрения, правильно: если критичное приложение (производящее платежные операции) не перегружается лишним функционалом, количество векторов атаки, доступных злоумышленнику, уменьшается.
В данном исследовании изучались приложения с доступом к счету.
Во время анализа защищенности мобильного приложения производится оценка защищенности трех основных компонентов: серверной части, клиентской части и канала связи.
Методы оценки безопасности клиентского приложения:
1. Динамический анализ:
· Отладка запущенного приложения (на эмуляторе или устройстве);
- Фаззинг;
- Анализ сетевого трафика;
· Анализ взаимодействия с файловой системой;
- Анализ памяти приложения.
2. Статический анализ:
· Анализ исходного кода (если доступен); Обратное проектирование (Reverse Engineering):
· Анализ полученного представления на слабые участки кода.
1. Злоумышленник, имеющий физический доступ к устройству клиента. При этом на устройстве не включена блокировка экрана и не используется шифрование.
2. Злоумышленник, не имеющий доступ к устройству, находящийся рядом с жертвой и способный провести атаку типа «человек посередине».
3. Злоумышленник, который загрузил на устройство клиента свое вредоносное приложение, используя официальные магазины приложений или иные способы.
Атаки на серверную часть ничем не отличаются от атак на обычные системы ДБО, рассмотренных в отчете Digital Security «Результаты исследования безопасности банк-клиентов российских производителей за период 2009-2011 гг.»
• физического доступа к устройству;
• вредоносного приложения на устройстве;
• или возможности контролировать канал, например, в результате атаки «человек посередине».
При физическом доступе злоумышленник может получить доступ к файловой системе. Если приложение хранит аутентификационные данные или другие критичные данные в открытом виде либо критичные данные «утекают» в открытом виде, то для злоумышленника несложно получить эти данные и украсть деньги.
Защита: использовать криптографические возможности устройства, шифрование критичных данных и при необходимости возможность удаленной очистки данных, а также проводить анализ защищенности приложения, который поможет выявить возможные утечки критичных данных и некорректное использование шифрования.
Для атаки через вредоносное приложение необходимо установить вредоносное приложение, используя методы социальной инженерии или через атаку Drive-by-Download.
После установки вредоносного приложения злоумышленник может поднять свои привилегии в системе, используя эксплойт для уязвимости в ОС смартфона, и получить удаленный доступ к устройству с полными правами доступа, что приведет к полной компрометации устройства: злоумышленник сможет украсть критичные данные пользователя мобильного банкинга или подменять данные платежных операций.
Защита: обновлять программное обеспечение на устройстве, использовать программные средства защиты и повышать осведомленность пользователей в вопросах информационной безопасности.
Атаки на канал связи: в ходе классической атаки «человек посередине» перехватываются данные между устройством клиента и сервером. Для этого необходимо находиться в одной сети с жертвой, например в публичной сети Wi-Fi, или использовать поддельные беспроводные точки доступа и поддельные базовые станции. Необходима уязвимость в мобильном приложении — некорректная работа с шифрованием передаваемых данных или полное отсутствие шифрования данных. Самый распространенный пример — неправильная работа с SSL. В результате злоумышленник может прослушивать и подменять передаваемые данные, что может в итоге привести к краже денежных средств со счета клиента.
Защита: правильная реализация работы с SSL. Также рекомендуется в мобильном приложении при подключении к серверу доверять только SSL-сертификату банка. Это поможет в случае компрометации корневого центра сертификации.
Стоит также отметить, что jailbreak устройства (iOS) или наличие root-доступа на устройстве (Android) пользователя значительно снижает уровень защищенности устройства и упрощает атаку для злоумышленника.
Дерево атак на мобильный банкинг
Методология данного исследования
В рамках данного исследования проводился статический анализ кода клиентской части (мобильного приложения) методом черного ящика.
Анализ кода проводился с помощью внутреннего инструмента, разработанного Digital Security.
Все данные для проведения анализа брались из свободных источников или внутренних исследований. Данные актуальны на 01.01.2013.
В процессе данного исследования производился поиск уязвимостей и недостатков, связанных с параметрами компиляции приложения, использованием небезопасного API, отсутствием механизмов безопасности.
В исследовании рассматриваются приложения для российских банков с возможностью работы со своим счетом, как наиболее критичные и интересные с точки зрения безопасности, так как недостатки в этих приложениях могут привести к краже денежных средств.
Критерии отбора приложений для анализа:
• Приложение российского банка;
• Возможность работы со счетом;
• Использует интернет-соединение для передачи данных.
На схеме изображена упрощенная модель угроз мобильного банкинга. Схема отображает наиболее частые сценарии действий злоумышленника при взломе. Злоумышленник может комбинировать данные приемы (для простоты схемы такие комбинации не отображены). Например, возможен такой сценарий, при котором уязвимость в серверной части позволит реализовать уязвимость в мобильном приложении.
iOS — это мобильная операционная система от компании Apple. Данная операционная система предназначена только для устройств от компании Apple: iPod, iPhone, iPad и Apple TV. iOS базируется на Mac OS X. Для распространения приложений для данной платформы используется специальный магазин — App Store.
Для разработки используется язык Objective-C, который является компилируемым объектно-ориентированным языком программирования. Objective-C построен на основе языка программирования Си и парадигм языка программирования Smalltalk.
Статистика по разработчикам приложений для мобильного банкинга российских банков с доступом к счету для iOS