Минимизация рисков и угроз для безопасности приложения

217
9 мин.

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

И сегодня мы с вами обсудим риски и угрозы безопасности мобильного приложения. Их действительно много, но мы выделим основные, а некоторые из них — разберем детально. Среди основных рисков для приложения и компании самые частые:

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

Смартфонами пользуется почти 4 миллиарда человек по всему миру. И каждый из них может пострадать от злоумышленников. За последнее время атаки на сервисы и приложения участились. Помимо вирусов и самых простых обманов по телефону с просьбами о подтверждении «левого» платежа, существует несколько ключевых видов атак и мошенничества.

Межсайтовая подделка запросов (CSRF)

CSRF – один из самых распространенных видов мошенничества за последние несколько лет. С развитием сферы цифровых продаж случаев возникновения таких схем становится больше. В чем суть данной системы:

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

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

Можно ли защититься от атак такого формата? Можно.

Выбираем защищенный фреймворк

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

Anti-CSRF токены

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

Токен должен удовлетворять следующим условиям:

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

Используем сразу два токена

Токены все те же, только их теперь два. Смысл такой стратегии защиты в следующем:

  • один токен хранится в куки;
  • второй токен – в параметрах ответа;
  • если сервер получает небезопасный запрос, проверяет два токена.

Использование флага Same-Site в cookies

Роль данного флага – отметить куки конкретного домена. Источник помечается для последующих проверок, поэтому злоумышленники не смогут выполнять запросы с левых сайтов.

Флаг поддерживается почти всеми браузерами и является важным атрибутом системы безопасности пользователя.

Требуйте подтверждения от пользователя

Для таких операций, как перевод средств или смена пароля, добавьте дополнительное действие со стороны клиента: выбрать в картинках светофоры или мотоциклы, ввести капчу и так далее. Пользователям не понравится, но они будут защищены.

Атаки переполнения буфера

Переполнение буфера – явление, которое возникает, когда программа пишет данные за пределами выделенного места буфера в памяти.

Причины возникновения проблем:

  • неправильная работа с данными, которые получены извне;
  • нет нормальной защиты со стороны подсистемы (компилятора или интерпретатора).

Как следствие, данные, что расположены следом за буфером или перед ним, могут быть испорчены или потеряны.

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

Если буфер переполнен, то программа может быть закрыта в аварийном режиме или просто зависнуть.

Если переполнение возникает в стековом кадре, то злоумышленники получают доступ к коду и могут загрузить его с правами учетной записи, от которой была запущена программа.

Как предотвратить атаки и сбои?

Системы обнаружения вторжения

Есть ряд систем обнаружения вторжения (СОВ). Они помогают выявить и предотвратить попытки удаленного использования и доступа к буферу.

При взломе буфера мошенники используют данные с длинным массивом инструкций, в СОВ такие пакеты блокируют.

Защита от повреждения стека

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

Защита пространства исполняемого кода для UNIX-подобных систем

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

Защита пространства исполняемого кода для Windows систем

Для систем на базе Windows есть ряд решение, как от самих разработчиков, так и от сторонних брендов.

У маков есть несколько предложений: Data Execution Prevention или DEP, а также отдельный механизм защиты стека. Стек помечается при помощи «осведомителей», а их целостность потом проверяется. Если «осведомитель» был изменён – стек поврежден.

Используем безопасные библиотеки

Зачастую встречается в языках C и C++, поскольку они не скрывают деталей представления буферов, как контейнеров типов данных.

В такой ситуации нужно использовать библиотеки абстрактных типов данных. Они производят центральное автоматическое управление буферами. В них также есть функция проверки буфера на переполнение.

Регулярное обновление приложения для исправления уязвимостей безопасности

Обновление приложения. Нужны ли они? И почему так часто приходят оповещения, что ПО устарело или вышла новая версия?

Да, мало кто любит всплывающие оповещения о новом обновлении или напоминании, что пора бы обновиться. Иногда обновления выходят прямо посреди игровой сессии, что «очень любят» игроки и пользователи, но это важный момент, который не стоит игнорировать.

Так уж вышло, что хакеры быстро адаптируются к новым форматам и протоколам защиты. Поэтому разработчикам регулярно приходится работать над системой безопасности, «латать дыры» и улучшать ее. Вот несколько причин и примеров, которые демонстрируют необходимость регулярных апдейтов приложений для пользователя.

Обеспечение максимального уровня защиты

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

Безопасность устройств с семейным доступом

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

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

Улучшение производительности

Обновление ПО влияет и на работоспособность устройств. Со временем, приложение «шлифуется» до идеального состояния, оптимизируется под устройство и обеспечивает лучшую производительность при меньших затратах ресурсов смартфона.

Добавление нового функционала

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

Безопасность компании

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

Выводы

Свое приложение — важная часть бизнеса в сфере цифровой коммерции. Но некачественное приложение с уязвимостями в системе защиты может поставить под угрозу компанию. Именно поэтому так важно на этапах разработки приложения уделять внимание его безопасности и интеграции современных систем защиты данных. В процессе разработки приложения важно пользоваться всеми актуальными методами тестирования и инструментами.

28 ноября 2023
5 / 5 (3 голоса)