В 2015 году почти три десятка крупных банков России стали жертвами хакерских атак, потери от которых только с октября прошлого года составляют около двух миллиардов рублей по данным ЦБ РФ. Можно говорить, что злоумышленники переориентировались с клиентов банков – физических и юридических лиц, на сами банки.
Для того, чтобы узнать, почему злоумышленникам удается совершить так много атак, эксперты компании УЦСБ провели независимое исследование по анализу защищенности официальных банковских сайтов (сайтов, содержащих информацию о банковских продуктах, тарифах, услугах, и пр.). В область исследования попали 56 банков, представленных в г. Екатеринбурге.
Исследование заключалось в выявлении уязвимостей без осуществления несанкционированного доступа к данным и нарушения работы исследуемых сайтов. Проверялось наличие самых простых для эксплуатации хакерами уязвимостей:
- инъекции (SQL-инъекции, XPATH-инъекции, XSS),
- небезопасная настройка элементов инфраструктуры (веб-сервера, DNS-сервера),
- доступ к файлам по небезопасным прямым ссылкам,
- использование ПО с известными критичными уязвимостями,
- открытое перенаправление.
Самое главное – это результаты
В результате проведенного исследования было выявлено более 60 уязвимостей на 41 банковском сайте. Таким образом, почти три четверти из анализируемых банков имели недостатки в системе защиты своих сайтов.
На 7 из 56 сайтов были выявлены уязвимости высокой степени критичности. Это означает, что у злоумышленников была возможность взломать сайты 7 банков, прикладывая минимум усилий. В ряде случаев это позволило бы попасть во внутреннюю сеть банка и произвести атаку на критичные активы, например, на АРМ КБР (Автоматизированное рабочее место клиента Банка России (АРМ КБР) – программный комплекс для отправки платежных документов от банка в ЦБ РФ.
Сводная статистика по банкам приведена на рисунке ниже.
Выявленные уязвимости средней степени критичности позволяют либо провести атаку на посетителей веб-сайта (для этого злоумышленнику необходимо провести определенное взаимодействие с пользователем) либо получить значительную информацию об устройстве сайта или других элементах инфраструктуры банка.
Уязвимости низкой степени критичности сами по себе опасности не несут, но предоставляют злоумышленнику информацию, которая может пригодиться для эксплуатации других уязвимостей в ходе реализации более сложных атак.
Копнем немного глубже
Среди уязвимостей высокой степени критичности чаще всех встречались инъекции, в т.ч. SQL-инъекции. Такие инъекции позволяют внедрить в легитимный запрос к системе управления базой данных веб-приложения произвольный SQL-код. Например:
http://example.com/news.php?id=10 UNION SELECT 1,username,password,1 FROM admin
Чаще всего это приводит к тому, что вся база данных оказывается в руках злоумышленника.
Хорошим тоном при разработке считается использование технологии ORM, которая позволяет значительно упростить работу с СУБД. В качестве приятного бонуса современные библиотеки ORM также позволяют обезопасить приложение от SQL-инъекций.
Небезопасная конфигурация является причиной появления примерно половины всех уязвимостей. В эту категорию попадают использование устаревшего ПО на веб-серверах и отсутствие базовых средств защиты, например, web application firewall.
Также к небезопасной конфигурации можно отнести возможность доступа к резервным копиям (например, example.com/db_dump.zip) и служебным файлам и элементам интерфейса администратора (особенно если для администрирования не требуется авторизация).
Источник бед на 99%
В большинстве случаев источником уязвимостей на сайтах являются люди, которым свойственно допускать ошибки, в том числе ненамеренно. Приведем характерные примеры, которые были выявлены в ходе исследования:
1. На одном из сайтов была обнаружена уязвимость Heartbleed в криптографическом программном обеспечении OpenSSL, позволяющая несанкционированно читать оперативную память веб-сервера. При эксплуатации этой уязвимости на невысоконагруженных серверах довольно быстро удается получить приватный ключ шифрования веб-сервера, что позволяет злоумышленнику расшифровывать трафик TLS/SSL-соединений с сайтом. Патч, устраняющий данную уязвимость, был выпущен 2 года назад.
2. В сети можно встретить много файл-менеджеров, предлагающих простой способ их встраивания в уже существующий сайт. Не у всех из них есть какие-либо механизмы аутентификации пользователя. Пожалуй, самый яркий пример – CKFinder. Разработчики предлагают пользователям самостоятельно реализовать механизм аутентификации. Как можно догадаться, делают это не все. В результате любой желающий может управлять содержимым множества сайтов.
3. Огромное количество технологического мусора, оставшегося после разработки, было обнаружено на проанализированных сайтах. Такой мусор позволяет узнать не только подробности о внутреннем устройстве сайта, но порой и получить доступ к его исходному коду, что облегчает дальнейший поиск уязвимостей злоумышленнику. Например, во время запуска сайта часто забывают удалить служебные каталоги систем управления версиями (.git, .svn, .hg и т.д.). Структура этих каталогов такова, что зная формат хранения данных (а он, как правило, документирован), можно загрузить себе по одному файлу все содержимое репозитория, т.е. исходный код сайта. Обладая исходным кодом, злоумышленнику гораздо проще искать уязвимости и недокументированные возможности сайта.
Что же делать?
Злоумышленники постепенно осознают, что чем совершить много мелких краж у клиентов, проще украсть один раз большую сумму у банка. Как показывает недавний инцидент с фишинговыми письмами от поддельного FinCERT, злоумышленники также осведомлены о внутренней кухне обеспечения ИБ в банках. Пора уделить внимание актуальным угрозам – атакам на сайты банков (и другие ресурсы, доступные из интернета), атакам на АРМ КБР, фишингу с социальной инженерией, и принять меры по защите.
По результатам исследования наши специалисты уведомили все банки о найденных на их сайтах уязвимостях (напомним, что рассматривались лишь самые простые для эксплуатации хакерами уязвимости). Спустя некоторое время мы проведем повторную проверку для оценки принятых мер по устранению уязвимостей.