Главные уязвимости онлайн-банков: авторизация, аутентификация и Android

Главные уязвимости онлайн-банков: авторизация, аутентификация и Android

Уязвимости высокого уровня риска в исходном коде, а также серьезные недостатки механизмов аутентификации и авторизации во многих системах дистанционного банковского обслуживания позволяют проводить несанкционированные транзакции или даже получить полный контроль над системой со стороны внешнего злоумышленника, что может привести к существенным финансовым и репутационным потерям.

Такие выводы содержатся в исследовании уязвимостей ДБО, обнаруженных экспертами 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 («Состояние гонки»), — в ряде случаев злоумышленник может получать неограниченные суммы денежных средств.

Уязвимости высокого уровня риска в исходном коде, а также серьезные недостатки механизмов аутентификации и авторизации во многих системах дистанционного банковского обслуживания позволяют проводить несанкционированные транзакции или даже получить полный контроль над системой со стороны внешнего злоумышленника, что может привести к существенным финансовым и репутационным потерям." />

Уязвимость переполнения глобального буфера в zlib грозит DoS и даже RCE

В широко используемой библиотеке zlib выявлена критическая уязвимость, позволяющая через порчу памяти вызвать сбой программы (DoS). Ее также потенциально можно использовать для удаленного выполнения стороннего кода в системе.

Пока не решенной проблеме, классифицируемой как переполнение буфера в глобальной памяти, присвоен идентификатор CVE-2026-22184. Поскольку эксплойт тривиален, степень опасности уязвимости была оценена в 9,3 балла по шкале CVSS.

Катастрофическая ошибка возникает при запуске утилиты untgz, а точнее, при выполнении функции TGZfname(), отвечающей за обработку имен архивных файлов, вводимых через консоль.

Как оказалось, уязвимый код не проверяет длину ввода перед копированием. Когда она превышает 1024 байт, происходит запись за границей буфера, что приводит к нарушению целостности памяти.

Проблему усугубляет тот факт, что untgz отрабатывает до парсинга и валидации архива. Эксплойт в данном случае не требует создания вредоносного файла со сложной структурой, достаточно лишь передать длинное имя в качестве аргумента командной строки.

Уязвимости подвержены все сборки zlib до 1.3.1.2 включительно. В качестве временной меры защиты админам и разработчикам рекомендуется ограничить использование untgz либо вовсе удалить соответствующий пакет до появления пропатченной версии.

RSS: Новости на портале Anti-Malware.ru