Разработчики уделяют большое внимание своему продукту, его дизайну, удобству использования. Но увы, не все задумываются про безопасность приложения.
Поговорим сегодня об этом?
Стоит ли экономить на безопасности?
Создатели мобильных приложений не всегда задумываются о защите своего продукта в первый год. Они полагают, что никто не будет атаковать их приложения. Они ведь еще не широко известны.
Пользователи должны быть уверены, что при возможной кибер-атаке конфиденциальная информация не попадет в чужие руки. Большие объемы данных, которые проходят через приложения и хранятся на серверах — ценная добыча для злоумышленников.
Согласно индексу X-Force Threat Intelligence 2020 от IBM и Hi-Tech Crime Trends 2019/2020 от Group-IB, финансовый сектор — лидер по количеству атак в 2019 году четвертый год подряд. В ежегодной статистике «Лаборатории Касперского» он также занимает первое место с 2015 года.
Всемирный экономический форум включил кибер-атаки в пятерку основных глобальных рисков 2019 года.
Взломы с кражей криптовалют
В большинстве случаев хакеры попадают в кошельки через приложения.
В 2019 году были взломаны девять бирж и один многофункциональный сервис, при этом были украдены монеты и токены на сумму, эквивалентную 177 263000 долларов.
Инциденты 2020 года, в результате которых криптовалютные компании и проекты потеряли свои и пользовательские активы:
Тип и название Дата Объект кражи Ущерб в долларах США
Криптобиржа Altsbit 02.06.2020 5 видов криптовалют 285 000
Кошелек Trinity (проект IOTA) 02.12.2020 Монета MIOTA 2 855 000
платформа bzx DeFi 15.02.2020 Монета ETH 316 000
платформа bzx DeFi 18.02.2020 Монета ETH 673 000
Криптобиржа Bisq 04.07.2020 Монеты BTC и XMR 252 000
Пул проекта Balancer Labs DeFi 28.06.2020 5 видов токенов 482 000
Пул проекта Balancer Labs DeFi 29.06.2020 Токен COMP 2300
Криптоплатформа Cashaa 07.11.2020 Монета BTC 3 124 000
Итого на 2020 год: 7 989 300 долларов США
Если вы создаете криптографическое приложение или внедряете криптовалюту в обычное приложение, знайте: это привлекает не только целевую аудиторию, но и преступников. И если у вас нет возможности проверить релиз на наличие уязвимостей, они обязательно этим воспользуются.
Кража денег и платежных данных
Хакеры атакуют банковские системы и приложения чаще всего. Хотя они защищены лучше, чем другие.
Записи с данными банковских карт они украли за полгода и выставили на продажу:
462 000 записей из индийских банков;
397 000 записей из банков Южной Кореи и США;
235 000 единиц хранения в банках Малайзии, Филиппин и Сингапура.
Они также воруют деньги у финансовых организаций. Банки тщательно скрывают такие случаи, чтобы не пострадала их репутация и клиенты не закрывали свои счета в массовом порядке. Если что-то доходит до СМИ, то без указания суммы украденного. И с заверениями в сохранности средств клиентов. Люди успокаиваются, зная, что банки застрахованы.
Финтех-компании, не принадлежащие к традиционным банкам, менее защищены. В электронных платежных системах и приложениях мобильного банкинга всегда есть уязвимости. Если не с ними, то со сторонними сервисами, которые они подключают.
Несколько примеров:
В феврале 2020 года кибер-преступники использовали интеграцию Paypal с Google Pay для оплаты покупок в США со счетов немецких пользователей. Представители Paypal признали проблему и выплатили пострадавшим десятки тысяч евро.
Покупки за чужой счет
С 2019 года хакеры стали активно атаковать интернет-магазины и облачные сервисы. Причины очевидны: в электронной коммерции задействованы карты. Для многих покупателей они привязаны к аккаунтам. А в облаках хранятся терабайты конфиденциальной информации и коммерческих секретов.
В июле 2019 года произошел инцидент, который показывает, насколько неосторожными могут быть создатели приложений. 1 июля японская сеть минимаркетов 7-Eleven порадовала клиентов функцией мобильных платежей, добавленной в приложение 7pay. Также обрадовались хакеры. Уже на следующий день они обнаружили в нем уязвимость, с помощью которой получили доступ к 900 учетным записям. В течение дня они потратили 55 миллионов йен (около 510 тысяч долларов США) по привязанным картам. 3 июля компании пришлось закрыть 7pay и выплатить компенсацию пострадавшим.
В марте и апреле 2020 года хакеры использовали устаревшую, но все еще работающую аутентификацию NNID для входа в учетные записи пользователей Nintendo. За чей-то счет они покупали игры Nintendo и игровую валюту Fortnite, расплачиваясь картами или PayPal, привязанными к профилям. Пострадали 300 000 пользователей.
Необходимость защиты приложений
Создатели приложений, не связанных с финансовыми технологиями, может подумать, что риски минимальны, если его компания не участвует в хранении и переводе денег или обработке платежей. Разочаруем вас: кибер-воров интересуют не только деньги и банковские карты. Их интересует все, что можно легко украсть, а затем продать.
Всегда найдутся покупатели личных данных и конфиденциальной информации. Например, конкуренты. В даркнете они могут купить украденную базу данных тысяч клиентов за 300 долларов. Но для скомпрометированной компании каждая запись стоит 152 доллара, согласно отчету IBM Security. Исследователи опросили затронутые компании и обнаружили глобальную цифру: в среднем утечка информации составила 25 600 записей, что привело к потере 3,9 миллиона долларов США.
Нарушение законов о конфеденциальности
Если произойдет кража или утечка данных, будьте готовы к судебным искам и штрафам за нарушение законов о защите персональных данных . Во многих юрисдикциях есть правила обязательного уведомления о проблемах с данными. Регулирующие органы требуют, чтобы компании, нарушившие обработку и хранение данных, проинформировали клиентов. Возместили ущерб и выплатили штраф.
В РФ есть Федеральный закон № 152-ФЗ «О персональных данных». Он предусматривает административный штраф в размере до 75000 рублей.Соблюдение закона контролируется Федеральной службой по надзору в сфере связи.
Конечно, возможные штрафы не заставляют разработчиков усиливать меры кибербезопасности. В 2019 году было скомпрометировано более 14 миллиардов записей (вдвое больше, чем в 2018 году). В июне 2020 года этот рекорд был побит. И это не предел.
Мессенджеры
Приложения для обмена сообщениями — обычная форма общения. Все мы активно пользуемся ими. В это же время хакеры также обращают внимание на мессенджеры и тщательно их изучают.
В марте 2020 года создатели приложение Whisper для анонимного общения, узнал о проблеме безопасности. Об этом сообщили через СМИ независимые специалисты, обнаружившие незащищенную базу данных на 75 ТБ с 900 миллионами записей. В базе данных, которая пополняется с 2012 года, хранятся псевдонимы пользователей, данные личного профиля, IP-адреса и координаты местоположения. Но компания позиционирует свое приложение как самое безопасное место в Интернете.
В начале апреля 2020 года создатели платформы Zoom получили сообщение об ошибке от этичного хакера. Он подробно описал, как за 25 минут и 91 000 попыток он взломал пароль чужой конференции. В веб-клиенте не было ограничений на количество попыток, а пароли представляли собой шестизначный числовой код (это максимум миллион комбинаций).
Уже в середине апреля независимые исследователи обнаружили, что база данных Zoom продается на форумах в даркнете. Дамп содержал учетные данные 530 000 пользователей (электронные письма, пароли), идентификаторы конференций, имена хостов и ключи. Это не связано с ошибкой подбора пароля.
Заскучав во время пандемии, тролли разбирали ссылки на встречи, врывались и сеяли хаос своим шокирующим поведением. Усиление пароля путем добавления символов не уменьшило их активность. Ведь пароли не подбирают перебором.
Уязвимость
Большинство мобильных приложений имеют архитектуру клиент-сервер. Пользователи скачивают клиентскую часть из магазина и устанавливают ее на свои устройства с мобильной ОС. Сторона сервера — это веб-приложение, которое взаимодействует с мобильным клиентом через интерфейс прикладного программирования (API).
Уязвимости обнаруживаются как в клиенте, так и на сервере, и даже между ними — в канале передачи данных. Если у вас есть веб-приложение или веб-сайт, а не мобильное приложение, все равно полезно знать о слабых местах на стороне сервера или на пути к нему.
Мобильные приложения
Исследование популярных мобильных приложений, проведенное PT в июне 2019 года, показало:
38% приложений для iOS и 43% приложений для Android имеют уязвимости высокого риска
74% приложений для iOS и 57% приложений для Android содержали ошибки в механизмах безопасности
76% приложений не хранили данные надежно.
Поговорим о наиболее распространенных уязвимостях, требующих устранения в мобильном приложении.
Незащищенный двоичный код
Он позволит злоумышленникам преобразовать его в исходный код, чего допускать нельзя. Оставляя двоичный код незащищенным, вы предоставляете всем доступ к «золотой» информации внутри, включая план хранения и меры безопасности.
Злоумышленники также могут клонировать мобильное приложение, а затем загрузить версию с вредоносным кодом и аналогичным названием в магазины в качестве копии официального продукта.
Подключение к внутреннему серверу
Мобильное приложение, которое получает доступ к данным на сервере через вызовы API, становится уязвимым, если оно не использует HTTPS для всех подключений. И методы SSL остаются незащищенными, если они позволяют использовать сертификат, например, небезопасная версия SSLSocketFactory.
Кроме того, поскольку базовая HTTP-аутентификация уже считается небезопасной, вам необходимо защитить свой REST API с помощью JWT. При доступе к данным учетной записи пользователя эти токены должны быть сгенерированы как часть безопасного интерактивного входа в систему с пользователями.
Место хранения
Если вы храните пользовательские данные в незащищенных местах, например, в файлах Plist, то кто-то обязательно получит к ним несанкционированный доступ. Учетные записи и другие данные лучше хранить в соответствующей связке ключей: iCloud Keychain в iOS, KeyStore или KeyChain в Android. Конфиденциальная информация, требующая локального хранилища, всегда должна быть зашифрована.
Библиотеки с открытым исходным кодом
Библиотеки кода необходимо постоянно обновлять, чтобы своевременно включать исправления безопасности. Только будьте осторожны при обновлении библиотек с открытым исходным кодом. Это слабое место, используемое хакерами, внедряющими туда вредоносный код. Такая библиотека не заражается до тех пор, пока она не будет включена в автоматизированные процессы сборки, настроенные на использование последней версии.
Отсутствие 2FA
Отсутствие двухфакторной аутентификации делает использование мобильного приложения небезопасным, поэтому об этой защите нельзя забывать. Активированная двухфакторная аутентификация может остановить хакеров, которые могут угадать обычный пароль для учетной записи пользователя. Одноразовые пароли защищают приложение и гарантируют, что оно не предоставит злоумышленникам доступ к учетной записи реального владельца.
Уязвимости в веб-приложениях
Исследование популярных веб-приложений, проведенное PT в феврале 2020 года, показало, что 90% приложений могут быть использованы для атак на пользователей. Несанкционированный доступ к приложению был возможен на 39% сайтов; 68% приложений имели угрозу утечки данных.
Проанализируем наиболее распространенные уязвимости.
Слабые стороны CMS
Если вы используете популярную систему управления контентом, такую как Joomla или WordPress, имейте в виду, что они не полностью безопасны.
Уязвимы также плагины, установленные в CMS, как сторонние, так и официальные. Самые популярные и проверенные плагины WordPress, такие как Yoast SEO или WooCommerce, легко взламываются с помощью XSS, а плагин авторизации подвержен SQL.
Управление сессией
Управление сеансом позволяет приложению идентифицировать пользователя по различным запросам. Когда пользователь пытается войти в систему, это помогает ему взаимодействовать с приложением без повторной аутентификации.
Хакеры пытаются нарушить управление сеансом, чтобы легко обойти аутентификацию. Если им это удастся, они взломают само веб-приложение.
Атаки и методы взлома приложений
Раньше защита веб-приложения ограничивалась настройкой сервера и очисткой веб-сайта от ненужных файлов и фрагментов кода. В то время уязвимостей было меньше, приложения были простыми, а действия пользователей предсказуемыми. Постепенно процесс защиты усложнялся, поскольку серверная инфраструктура быстро развивалась, код становился больше и сложнее, что в целом увеличивало поверхность атаки.
Атаки на веб-приложения экспоненциально увеличились во всех направлениях и разными способами. Перечислим основные типы атак и методы взлома, которые используются хакерами в преступных целях и при тестировании безопасности веб-приложений.
Атака грубой силой
Во время атаки методом перебора хакеры перебирают все возможные комбинации, надеясь правильно угадать. Они используют его для взлома приложений критического класса, чтобы перехватывать вызовы API и выполнять код авторизации, не оставляя следов. Это возвращает код к его исходной форме. Атака также включает изменение сопоставления, так что вызов API A фактически вызывает API B, а API B может хранить информацию о банковских картах на другом сервере, собирать данные клиентов и настраивать себя для выполнения нежелательных операций.
Использование SQL
Это наиболее распространенный способ взлома веб-приложений и веб-сайтов. Большинство из них используют язык структурированных запросов (SQL) для взаимодействия с базами данных. Он позволяет создавать и изменять записи в базе данных.
Хакеры могут взломать внутренние компоненты веб-приложения. Они состоят из запросов SQL, вводимых клиентом в веб-приложение. Таким образом, преступники могут считывать информацию из базы данных и использовать ее. Они также могут изменять запрос и выполнять функции и операции по администрированию.
Атака с использованием SQL вставляет код SQL в веб-форму, пытаясь заставить приложение выполнить его. Таким образом хакеры могут получить доступ к закрытой области веб-сайта. Другие атаки с использованием SQL могут использоваться для удаления или вставки данных, то есть для манипулирования базой данных.
Межсайтовый скриптинг
Хакеры также часто используют межсайтовый скриптинг (XSS) для взлома веб-сайтов. Для многих владельцев это стало серьезной угрозой. Только крупнейшие веб-сайты, например, принадлежащие Google и Microsoft, успешно отражают XSS-атаки.
Злоумышленники XSS используют вредоносный JavaScript, встроенный в ссылки, которые они распространяют. Когда пользователь нажимает на ссылку, это невольно позволяет украсть информацию, перехватить веб-сеанс, захватить учетную запись и изменить рекламу на странице.
Чтобы избежать XSS-атак, владельцы веб-сайтов должны фильтровать вводимые пользователем данные, чтобы вовремя удалять вредоносный код.
DoS / DDoS-атаки
Атака типа «отказ в обслуживании» (DoS / DDoS) загружает веб-сайт огромным объемом трафика в виде запросов, что приводит к сбою его серверов. Большинство DDoS-атак осуществляется с помощью устройств, которые были скомпрометированы вредоносным ПО. Владельцы зараженных компьютеров могут не знать, что их компьютер отправляет запросы на чей-то веб-сайт.
Подделка межсайтовых запросов
Подделка межсайтовых запросов (CSRF) включает передачу неавторизованных команд от пользователя, которому веб-приложение доверяет. У хакеров есть много способов отправлять поддельные команды, включая скрытые формы, AJAX и теги изображений. Пользователь не знает, что команда была отправлена, и веб-сайт считает, что команда была получена от аутентифицированного пользователя. Разница между CSRF и XSS атаками заключается в том, что пользователь должен войти в систему, а система должна идентифицировать пользователя как доверенного.
Подмена DNS
Этот взлом вводит поврежденные системные данные домена в кеш преобразователя DNS для перенаправления трафика с веб-сайта в другое место. Хакеры используют его для отправки трафика с известных доверенных веб-сайтов на свои, содержащие вредоносное ПО. Спуфинг DNS также используется для сбора информации о трафике.
Клиентский контроль
Это популярный способ взлома веб-приложения, при котором хакеры манипулируют данными, передаваемыми через клиента. Они взламывают клиентские элементы управления, а затем собирают пользовательские данные. Хакеры находят все подходящее в самом веб-приложении, где есть скрытые поля формы, параметры URL и файлы cookie, используемые для передачи данных через клиента. Затем они пытаются определить роль, которую играет конкретный элемент при входе в приложение.
Кому следует тестировать и защищать приложения
Чтобы создать качественное приложение, вам необходимо собрать команду веб-дизайнеров, верстальщиков, интерфейсных и внутренних разработчиков. У них должен быть многолетний опыт разработки проектов разной сложности.
Для проверки созданного приложения на наличие ошибок и возможной доработки, нужна команда тестировщиков, QC и QA. Команда тестирования проверит работоспособность приложения и правильность скриптов. В то же время аудиторы кода редко ищут уязвимости.
Изучение безопасности веб-приложений и мобильных приложений — это компетенция других профессионалов. Следовательно, вам также понадобится команда специалистов по информационной безопасности , в основном инженеры по информационной безопасности. Имея опыт в атаке и защите, они протестируют приложение на проникновение и найдут возможные уязвимости.
Пока они не задействованы, приложение остается открытым для злоумышленников, даже если разработчики не обманули при создании, а тестеры тщательно его проверили. Перед выпуском каждой версии следует связываться со специалистами по информационной безопасности. Желательно проводить аудит безопасности на протяжении всего цикла разработки, чтобы вовремя устранить уязвимости.
Резюмируем:
Защитите свое приложение от взлома, а свою компанию — от репутационных рисков, пока не стало слишком поздно.