Уязвимости высокого уровня риска в исходном коде, а также серьезные недостатки механизмов аутентификации и авторизации во многих системах дистанционного банковского обслуживания позволяют проводить несанкционированные транзакции или даже получить полный контроль над системой со стороны внешнего злоумышленника, что может привести к существенным финансовым и репутационным потерям. Такие выводы содержатся в исследовании уязвимостей ДБО, обнаруженных экспертами Positive Technologies в 2013 и 2014 годах в ходе работ по анализу защищенности для ряда крупнейших российских банков. В данной статье представлены некоторые результаты этого исследования.
В рамках исследования было рассмотрено 28 систем дистанционного банковского обслуживания физических (77%) и юридических лиц (23%). Среди них были и мобильные системы ДБО, представленные серверной и клиентской частью (54%). Две трети систем (67%) являлись собственными разработками банков (использовались Java, C# и PHP), остальные были развернуты на базе платформ известных вендоров. Большинство систем ДБО (74%) находились в промышленной эксплуатации и были доступны для клиентов, а четверть ресурсов составляли тестовые стенды, готовые к переводу в эксплуатацию.
Общие результаты
Почти половина обнаруженных уязвимостей систем ДБО (44%) имеет высокий уровень риска. Примерно одинаковое количество уязвимостей имеют среднюю и низкую степень риска (26% и 30%). В целом, уязвимости высокого уровня риска были выявлены в 78% исследованных систем.
Большая часть уязвимостей (42%) связана с ошибками реализации механизмов защиты систем ДБО, заложенных разработчиками. В частности, к данной категории уязвимостей относятся недостатки механизмов идентификации, аутентификации и авторизации. На втором месте — уязвимости, связанные с ошибками в коде приложений (36%). Остальные уязвимости в основном связаны с недостатками конфигурации (22%).
Наиболее часто в системах ДБО встречались уязвимости, связанные с возможностью идентификации используемого ПО и с предсказуемыми форматами идентификаторов пользователей (57% систем). Более чем в половине систем (54%) обнаружены ошибки в программном коде типа «Межсайтовое выполнение сценариев». Если при наличии этой уязвимости в системе клиент банка перейдет по специально сформированной вредоносной ссылке, атакующий может получить доступ к системе ДБО с привилегиями данного клиента.
Распространены также уязвимости, позволяющие реализовать атаки на сессии пользователей (54% систем). Сюда относятся уязвимости, связанные с некорректным завершением сессий, некорректной настройкой cookie-параметров, возможностью параллельной работы нескольких сессий для одного пользователя, отсутствием привязки сессии к IP-адресу клиента и др. При успешной атаке злоумышленник может получить доступ к личному кабинету пользователя с его привилегиями.
В число наиболее распространенных вошла уязвимость высокой степени риска «Внедрение внешних сущностей XML», которая обнаружена в 46% систем. В результате ее эксплуатации злоумышленник может получить содержимое файлов, хранящихся на уязвимом сервере, данные об открытых сетевых портах узла, вызвать отказ в обслуживании всей системы ДБО, — а также, в ряде случаев, обратиться к произвольному узлу от лица уязвимого сервера и развить атаку.
Отказ в обслуживании системы ДБО может быть вызван с использованием различных уязвимостей в половине исследованных ресурсов (52%).
Самые распространенные уязвимости систем ДБО (доля систем)
Большинство распространенных уязвимостей имеет средний или низкий уровень риска. Тем не менее, в сочетании с особенностями функционирования конкретных систем ДБО это может привести к реализации серьезных угроз безопасности, включая кражу конфиденциальных данных (89% систем) и кражу денежных средств (46%).
Исследованные системы ДБО содержат также ряд существенных недостатков на уровне логики. К примеру, в ряде систем была обнаружена возможность атак на основе некорректного использования алгоритмов округления чисел. Скажем, злоумышленник переводит 0,29 рублей в доллары США. При стоимости одного доллара в 60 рублей, сумма в 0,29 рублей соответствует 0,00483333333333333333333333333333 долларов. Данная сумма будет округлена до двух знаков после запятой, т. е. до 0,01 доллара (один цент). Затем злоумышленник переводит 0,01 доллара обратно в рубли и получает 0,60 рублей. Таким образом злоумышленник «выигрывает» 0,31 рублей. В результате автоматизации данной процедуры, учитывая отсутствие ограничений по количеству транзакций в сутки и минимальному размеру транзакции, а также возможности эксплуатации уязвимости типа Race Condition («Состояние гонки»), — в ряде случаев злоумышленник может получать неограниченные суммы денежных средств.
Уязвимости по разработчикам
Уязвимостей высокой степени риска больше в системах ДБО, предоставленных вендорами (49%), чем в системах собственной разработки конкретного банка (40%). Кроме того, системы, поставляемые профессиональными разработчиками, в среднем содержат в 2,5 раза больше уязвимостей на уровне кода приложения, чем системы собственной разработки. Данный факт можно объяснить тем, что при использовании ПО от вендора банк в вопросах качества кода полагается главным образом на поставщика. При этом сложная архитектура, кроссплатформенность и большое количество функций систем ДБО не всегда позволяют вендору обеспечить должный уровень защищенности на уровне кода приложения.
Среднее количество уязвимостей в системах (в зависимости от разработчика)
Уязвимости механизмов защиты
Наиболее распространенным недостатком механизмов идентификации систем ДБО является предсказуемость формата идентификатора учетной записи (64% систем). Зная несколько существующих в системе идентификаторов, злоумышленник может вычислить механизм их формирования и подобрать нужный. 32% исследованных систем раскрывали информацию о существующих в системе учетных записях, возвращая различные ответы в зависимости от существования введенного идентификатора; в 20% случаев системы ДБО содержали обе вышеупомянутые уязвимости идентификации.
58% рассмотренных систем имели недостатки реализации механизма аутентификации — слабую парольную политику, недостаточную защиту от подбора учетных данных, возможность обхода механизма CAPTCHA или отсутствие обязательной двухфакторной аутентификации при входе в личный кабинет.
Уязвимости механизмов аутентификации (доли систем)
79% систем содержали различные недостатки авторизации и защиты транзакций. При этом в 42% случаев злоумышленник мог получить несанкционированный доступ к данным пользователей (персональным данным, информации о счетах, платежах и т. п.), а в 13% систем нарушитель мог напрямую осуществлять банковские операции от лица других пользователей.
Недостатки механизмов авторизации (доля уязвимых систем)
Уязвимости мобильных клиентов
Клиентское ПО для ОС Android более уязвимо по сравнению с приложениями для iOS. В частности, критически опасные уязвимости содержатся в 70% приложений для Android и в 50% приложений для iOS.
Доли клиентских мобильных программ, подверженных уязвимостям
В среднем каждое приложение на базе Android содержит 3,7 уязвимостей, в то время как для iOS-приложения данный показатель равен 2,3.
Наиболее часто в мобильных системах ДБО встречались уязвимости, связанные с небезопасной передачей данных (73%), далее идут недостаточная защита сессий (55%) и небезопасное хранение данных в мобильном приложении (41%).
Наиболее распространенные уязвимости клиентского ПО мобильных систем
Хотя наиболее распространенные уязвимости мобильных систем ДБО имеют среднюю или низкую степень риска, в ряде случаев совокупность выявленных недостатков позволяла реализовать серьезные угрозы безопасности. Например, одно из исследованных приложений отправляло широковещательное сообщение, содержащее полученное от банка SMS-сообщение (с одноразовым паролем для проведения транзакции), которое могло быть перехвачено сторонним приложением. Кроме того, данное мобильное приложение осуществляло журналирование важных данных, таких как учетная запись пользователя, вследствие чего при успешном заражении устройства пользователя вредоносным кодом атакующий мог получить полный доступ к аутентификационным данным и проводить транзакции от лица пользователя мобильного приложения.
Более детальные результаты данного исследования будут представлены на международном форуме по безопасности Positive Hack Days V, который пройдет 26 и 27 мая в Москве. Там же можно поучаствовать в конкурсах по взлому банкоматов и онлайновых банковских сервисов.
В рамках исследования было рассмотрено 28 систем дистанционного банковского обслуживания физических (77%) и юридических лиц (23%). Среди них были и мобильные системы ДБО, представленные серверной и клиентской частью (54%). Две трети систем (67%) являлись собственными разработками банков (использовались Java, C# и PHP), остальные были развернуты на базе платформ известных вендоров. Большинство систем ДБО (74%) находились в промышленной эксплуатации и были доступны для клиентов, а четверть ресурсов составляли тестовые стенды, готовые к переводу в эксплуатацию.
Общие результаты
Почти половина обнаруженных уязвимостей систем ДБО (44%) имеет высокий уровень риска. Примерно одинаковое количество уязвимостей имеют среднюю и низкую степень риска (26% и 30%). В целом, уязвимости высокого уровня риска были выявлены в 78% исследованных систем.
Большая часть уязвимостей (42%) связана с ошибками реализации механизмов защиты систем ДБО, заложенных разработчиками. В частности, к данной категории уязвимостей относятся недостатки механизмов идентификации, аутентификации и авторизации. На втором месте — уязвимости, связанные с ошибками в коде приложений (36%). Остальные уязвимости в основном связаны с недостатками конфигурации (22%).
Наиболее часто в системах ДБО встречались уязвимости, связанные с возможностью идентификации используемого ПО и с предсказуемыми форматами идентификаторов пользователей (57% систем). Более чем в половине систем (54%) обнаружены ошибки в программном коде типа «Межсайтовое выполнение сценариев». Если при наличии этой уязвимости в системе клиент банка перейдет по специально сформированной вредоносной ссылке, атакующий может получить доступ к системе ДБО с привилегиями данного клиента.
Распространены также уязвимости, позволяющие реализовать атаки на сессии пользователей (54% систем). Сюда относятся уязвимости, связанные с некорректным завершением сессий, некорректной настройкой cookie-параметров, возможностью параллельной работы нескольких сессий для одного пользователя, отсутствием привязки сессии к IP-адресу клиента и др. При успешной атаке злоумышленник может получить доступ к личному кабинету пользователя с его привилегиями.
В число наиболее распространенных вошла уязвимость высокой степени риска «Внедрение внешних сущностей XML», которая обнаружена в 46% систем. В результате ее эксплуатации злоумышленник может получить содержимое файлов, хранящихся на уязвимом сервере, данные об открытых сетевых портах узла, вызвать отказ в обслуживании всей системы ДБО, — а также, в ряде случаев, обратиться к произвольному узлу от лица уязвимого сервера и развить атаку.
Отказ в обслуживании системы ДБО может быть вызван с использованием различных уязвимостей в половине исследованных ресурсов (52%).
Самые распространенные уязвимости систем ДБО (доля систем)
Большинство распространенных уязвимостей имеет средний или низкий уровень риска. Тем не менее, в сочетании с особенностями функционирования конкретных систем ДБО это может привести к реализации серьезных угроз безопасности, включая кражу конфиденциальных данных (89% систем) и кражу денежных средств (46%).
Исследованные системы ДБО содержат также ряд существенных недостатков на уровне логики. К примеру, в ряде систем была обнаружена возможность атак на основе некорректного использования алгоритмов округления чисел. Скажем, злоумышленник переводит 0,29 рублей в доллары США. При стоимости одного доллара в 60 рублей, сумма в 0,29 рублей соответствует 0,00483333333333333333333333333333 долларов. Данная сумма будет округлена до двух знаков после запятой, т. е. до 0,01 доллара (один цент). Затем злоумышленник переводит 0,01 доллара обратно в рубли и получает 0,60 рублей. Таким образом злоумышленник «выигрывает» 0,31 рублей. В результате автоматизации данной процедуры, учитывая отсутствие ограничений по количеству транзакций в сутки и минимальному размеру транзакции, а также возможности эксплуатации уязвимости типа Race Condition («Состояние гонки»), — в ряде случаев злоумышленник может получать неограниченные суммы денежных средств.
Уязвимости по разработчикам
Уязвимостей высокой степени риска больше в системах ДБО, предоставленных вендорами (49%), чем в системах собственной разработки конкретного банка (40%). Кроме того, системы, поставляемые профессиональными разработчиками, в среднем содержат в 2,5 раза больше уязвимостей на уровне кода приложения, чем системы собственной разработки. Данный факт можно объяснить тем, что при использовании ПО от вендора банк в вопросах качества кода полагается главным образом на поставщика. При этом сложная архитектура, кроссплатформенность и большое количество функций систем ДБО не всегда позволяют вендору обеспечить должный уровень защищенности на уровне кода приложения.
Среднее количество уязвимостей в системах (в зависимости от разработчика)
Уязвимости механизмов защиты
Наиболее распространенным недостатком механизмов идентификации систем ДБО является предсказуемость формата идентификатора учетной записи (64% систем). Зная несколько существующих в системе идентификаторов, злоумышленник может вычислить механизм их формирования и подобрать нужный. 32% исследованных систем раскрывали информацию о существующих в системе учетных записях, возвращая различные ответы в зависимости от существования введенного идентификатора; в 20% случаев системы ДБО содержали обе вышеупомянутые уязвимости идентификации.
58% рассмотренных систем имели недостатки реализации механизма аутентификации — слабую парольную политику, недостаточную защиту от подбора учетных данных, возможность обхода механизма CAPTCHA или отсутствие обязательной двухфакторной аутентификации при входе в личный кабинет.
Уязвимости механизмов аутентификации (доли систем)
79% систем содержали различные недостатки авторизации и защиты транзакций. При этом в 42% случаев злоумышленник мог получить несанкционированный доступ к данным пользователей (персональным данным, информации о счетах, платежах и т. п.), а в 13% систем нарушитель мог напрямую осуществлять банковские операции от лица других пользователей.
Недостатки механизмов авторизации (доля уязвимых систем)
Уязвимости мобильных клиентов
Клиентское ПО для ОС Android более уязвимо по сравнению с приложениями для iOS. В частности, критически опасные уязвимости содержатся в 70% приложений для Android и в 50% приложений для iOS.
Доли клиентских мобильных программ, подверженных уязвимостям
В среднем каждое приложение на базе Android содержит 3,7 уязвимостей, в то время как для iOS-приложения данный показатель равен 2,3.
Наиболее часто в мобильных системах ДБО встречались уязвимости, связанные с небезопасной передачей данных (73%), далее идут недостаточная защита сессий (55%) и небезопасное хранение данных в мобильном приложении (41%).
Наиболее распространенные уязвимости клиентского ПО мобильных систем
Хотя наиболее распространенные уязвимости мобильных систем ДБО имеют среднюю или низкую степень риска, в ряде случаев совокупность выявленных недостатков позволяла реализовать серьезные угрозы безопасности. Например, одно из исследованных приложений отправляло широковещательное сообщение, содержащее полученное от банка SMS-сообщение (с одноразовым паролем для проведения транзакции), которое могло быть перехвачено сторонним приложением. Кроме того, данное мобильное приложение осуществляло журналирование важных данных, таких как учетная запись пользователя, вследствие чего при успешном заражении устройства пользователя вредоносным кодом атакующий мог получить полный доступ к аутентификационным данным и проводить транзакции от лица пользователя мобильного приложения.
Более детальные результаты данного исследования будут представлены на международном форуме по безопасности Positive Hack Days V, который пройдет 26 и 27 мая в Москве. Там же можно поучаствовать в конкурсах по взлому банкоматов и онлайновых банковских сервисов.