Моделируем угрозы: самые частые уязвимости в процессах покупки и в программах лояльности
время публикации: 10:00 09 декабря 2022 года
Этапы онлайн-покупок во многом стандартизированы, и на каждом из них есть пространство для мошеннических действий. На примерах из российского ритейла рассмотрим часто встречающиеся уязвимости, риски для бизнеса и способы борьбы с ними.
Александр Герасимов, директор по информационной безопасности и сооснователь
Awillix. Эксперт в области тестирования на проникновение и анализа защищенности.Чтобы защитить бизнес от киберрисков, первое, что нужно сделать — это определить потенциальных нарушителей, их навыки и способы мошенничества, иными словами, смоделировать угрозу.
После того, как гипотетические угрозы смоделированы, уже можно проверять, насколько они применимы на практике и думать о мерах защиты. Простые технические уязвимости может обнаружить сканер в автоматическом режиме, а сложные проблемы, в том числе в бизнес-логике, смогут выявить и устранить только компетентные специалисты.
О том, где скрываются уязвимости в бизнес-логике маркетплейсов, интернет-магазинов и мобильных приложений в крупном ритейле, расскажу в этой статье.
Уязвимости в сценарии покупки
● Авторизация по почте и паролю
Злоумышленник может составить большой список email-адресов и пробовать перебирать их через форму «забыл пароль». Если почта, которую он ввел существует, сайт ответит, что «письмо с восстановлением пароля отправлено на почту». Если нет — «пользователь с таким email не существует». Таким образом, злоумышленник поймет, какие адреса верные и составит список пользователей, которые есть в системе. Дальше он сможет атаковать их фишинговыми рассылками или перебором паролей для их аккаунтов.
Если злоумышленник соберет клиентскую базу и будет использовать в своих целях, для бизнеса это репутационный ущерб. В худшем случае он подберет пароль и украдет аккаунты пользователей, в лучшем — отправит запрос на восстановление пароля 10 тысяч раз и клиентам придет 10 тысяч нежелательных сообщений, которые забьют ящик.
Решение: Чтобы защититься от такой атаки, следует использовать общие слова при восстановлении пароля, например, «если пользователь существует, ему будет направлено письмо с восстановлением пароля». Также от множественных запросов к сервису помогают CAPTCHA-тесты или блокировка аккаунтов по различным показателям: User agent, IP-адресам или нескольким факторам.
● Слабая парольная политика
Злоумышленник может пробовать перебирать самые простые пароли для email-адресов, которые ему удалось собрать. Есть целые базы простых паролей, которые чаще всего используют люди, вроде QWERTY или 123456. Подбор происходит в автоматическом режиме и не требует усилий злоумышленника.
Угроза — захват пользовательских аккаунтов со слабым паролем.
Решение: Нужно усилить парольную политику и не разрешать людям устанавливать пароли меньше девяти символов, обязательно использовать верхний регистр, спецсимволы и цифры. А чтобы блокировать возможность перебора, нужны средства защиты от множественных запросов.
● Авторизация по СМС
Обычно, чтобы авторизоваться на сайте, пользователь просто вводит номер телефона, получает код подтверждения по СМС и проходит в личный кабинет. Если нет механизма защиты от множественных запросов, то злоумышленник может отправить запрос на СМС, например, 200 раз и клиенту придет 200 СМС.
Если веб-сервис использует внешнего СМС-провайдера, то одна СМС стоит от 75 копеек до 2 рублей в зависимости от тарифа. Обычно провайдер для крупных ритейлеров позволяет отправлять до 3 тысячи СМС в секунду. На отправку 200 запросов компания тратит 400 рублей в секунду!
Если атака длится час, то злоумышленник сожжет почти 1,5 млн рублей с баланса компании. А если всю ночь?
Самый распространенный метод защиты от этого — троттлинг, когда на один фиксированный телефонный номер стоит запрет отправки больше 2-х сообщений сразу. Третье и все последующие СМС будут отправляться все с большей и большей задержкой.
Если или когда таймаут между сообщениями достигнет часа, злоумышленник не сможет нанести значительный ущерб компании и клиентам. Также помогут уже известные механизмы защиты блокировки множественных запросов, настроенные по совокупности критериев.
Не менее важно внедрить постоянный мониторинг всевозможных аномалий. Резкое увеличение количества СМС должно незамедлительно создавать «alert» в службе безопасности, где специалисты зарегистрируют и разберут инцидент.
● Безлимитный ввод кода
Неограниченное количество попыток ввода кода подтверждения тоже является уязвимостью и встречается часто. Злоумышленник сможет перебирать цифры до бесконечности, пока не подберет нужный. Это делается автоматически и очень быстро, особенно для 4-значных кодов — это всего 10 000 комбинаций. Для автоматического перебора значений и 6-значный код нетрудная задача. Если злоумышленнику в руки попала база с номерами клиентов, остальное для него не проблема.
Решение: Нужно всегда ограничивать попытки ввода кода до 3-х раз. Увеличить длину кода с 4 до 6 цифр. И в качестве общей рекомендации — также внедрить мониторинг аномалий.
● Бессмертный код
Даже если количество попыток ввода кода фиксировано, но время его жизни большое или вообще не ограничено, то тоже возникает уязвимость.
Перебор в этом случае действует наоборот. Злоумышленник фиксирует код подтверждения и пытается подобрать к нему подходящий номер телефона, опять же автоматически. У СМС-кодов небольшая энтропия — небольшое количество вариантов, поэтому такой способ проникновения вполне рабочий.
Решение: Необходимо уменьшить жизнь проверочного кода до 30 секунд. И увеличить длину кода.
● Чужой товар в корзине
Существует технология защиты от так называемых атак на подделку запроса. Это происходит с помощью уникальных токенов.
Токен — это уникальное значение для каждого пользователя и для каждого товара. Когда пользователь добавляет товар в корзину, вместе с запросом на добавление в корзину он отправляет этот уникальный токен.
Если пользователь залогинен в интернет-магазине со своего браузера, но продолжает серфить в интернете, заходить на разные сайты, то в какой-то момент он может зайти на сайт злоумышленника. На этом сайте может быть специальный Java Script-код, который незаметно для пользователя отправит в магазин запрос на добавление своего товара в корзину. Для магазина это выглядит так, будто пользователь сам добавляет товар. Многие люди забывают проверить корзину, кто-то просто невнимателен, поэтому просто заказывают ненужный товар, а плохие продавцы зарабатывают.
При наличии токена злоумышленник не знает уникального значения и не может выполнять запрос к системе, а без него, запрос злоумышленника воспринимается системой как легитимный. Атака сложна в реализации и не слишком распространена, однако эта уязвимость присутствует.
Решение: Для защиты нужно внедрить CSRF-токен и установить атрибуты Same-Site, Secure, HTTPOnly для Cookies. Совет не актуален при использовании API, где вместо сессии используются токены в заголовках. Токен не может автоматически подхватиться, а сессия может.
● Непреднамеренное разглашение
Еще одна не слишком критичная, но очень распространенная уязвимость — передача чувствительных данных в адресной строке. Разработчики могут не корректно реализовать процесс, например, чекаута (сохранения контактных данных или биллинга) и данные на сервер будут передаваться не в скрытом теле запроса, а в GET-параметрах прямо в адресной строке наверху.
Администратор, который имеет доступ к журналу логирования, может таким образом увидеть все телефонные номера клиентов, ФИО или адреса. А при наличии технической уязвимости, которая позволяет читать файлы на сервере, злоумышленник может просмотреть журнал логирования и получить конфиденциальные данные клиентов. Затем развить вектор свой атаки разными способами.
Решение: Устранить такую проблему очень легко. Нужно перенести параметры из GET в тело запроса, оно как правило не логируется.
● Гуляющий идентификатор
После оплаты пользователь получает от сайта номер своего заказа. Часто бывает, что в логике работы магазина не предусмотрена проверка принадлежности номера заказа пользователю. Тогда можно изменить номер заказа и получить чужой.
Злоумышленник для начала проводит тестовую покупку и получает идентификатор своего заказа. Так, он понимает, как этот идентификатор формируется. Затем он отправляет запрос на получение данных о покупке, но уже с другим идентификатором и получает информацию о заказе другого пользователя. Условно его настоящий запрос выглядит так: /get_order?id=1111, где id — это номер заказа. Если его изменить: /get_order?id=1234, то можно получить чужой заказ.
Решение: Нужно организовать логику работы магазина таким образом, чтобы сопоставлять идентификатор заказа с пользователем. В случае несоответствия не отдавать информацию.
● Саботаж логистики
На многих сайтах есть возможность выбора оплаты «при получении», а значит, злоумышленника ничто не останавливает от того, чтобы создать неограниченное количество заказов. Он может регистрировать случайные контактные данные и несуществующие адреса. Далее заказ попадает в CRM-систему, затем отгружается в логистику и отдается курьерам. Если ненастоящих заказов будет 1000, то это нанесет логистике компании колоссальный ущерб.
Особенно опасно, если в магазине есть возможность оформлять заказы как «гость» без регистрации на сайте.
Решение: Для защиты логистики от подобных атак нужно рассматривать каждый конкретный бизнес-процесс в отдельности. Но совет одинаково актуальный для всех — дополнительное подтверждение заказа. Это может быть звонок, СМС или email. Также можно рассмотреть лимит и блокировку множества заказов с одного IP-адреса.
Уязвимости в системе лояльности
● Кража чужой карты
У карт лояльности, на которых копятся баллы, чаще всего есть фиксированная часть номера в начале, и изменяемая часть в конце. Злоумышленник может получить пару карт и посмотреть на разницу между ними, затем зайти в личный кабинет и начать перебирать ту изменяемую часть для активации карты. Так, он может активировать чью-то реальную карту, где много бонусов, на свой аккаунт и использовать баллы. Например, какой-то бабушки, которая давно копит баллы, но не активирует карту.
Решение: Такие инциденты в основном несут угрозу репутации компании. Чтобы защититься, нужно привязывать карты лояльности к аккаунтам пользователей и отслеживать аномалии — множественные запросы на привязку карты к аккаунту. Блокировать пользователей, которые создают множественные запросы.
● Мошенничество с промокодами
Частая уязвимость — слабая энтропия промокодов, это когда их генерируют очень понятным способом. Например, первое значение — это слово, второе — размер скидки или год. Злоумышленник может собрать список уже использованных ранее промокодов и понять способ их генерации. Начав перебирать разные варианты на сайте, он может наткнуться на существующий в системе код, который еще неизвестен клиентам, и использовать его.
Решение: Для защиты лучше генерировать случайные значения для промокодов. Внедрить мониторинговые системы, которые помогут выявить использование кодов, раньше начала акции.
● Скупка акционных товаров ботами
Во время акции магазины выкладывают товары с большой скидкой на ограниченное время. Злоумышленники пишут ботов, которые скупают все акционные товары в автоматическом режиме за считаные секунды. Затем они продают товары после акции уже с большой наценкой. Особенно это актуально для дорогой техники и смартфонов.
Решение: Методы борьбы с такими угрозами разнятся в зависимости от площадки и специфики бизнеса. Например, можно делать поведенческий анализ пользователя и блокировать его на время, зафиксировав отклонения, либо просить подтвердить действия введением дополнительной CAPTCHA или кода из СМС.
Почему аналитики не могут определить мошенников
→ Отсутствует модель угроз и модель нарушителя. Сотрудники компании не представляют достаточно хорошо, кто нарушитель и какие угрозы он может реализовать.
→ Отсутствует мониторинг и поведенческий анализ пользователя. Нет журналов событий, по которым можно отследить действия злоумышленника.
→ Уязвимости в бизнес-логике сложно определить, поскольку эксплуатация бизнес-логики выглядит как обычное поведение пользователя. Эксплуатация технических уязвимостей, как правило, сразу видна по аномальным запросам, в которых присутствуют вектора атак.
→ Отсутствие активных средств защиты. Без них определить атаку крайне сложно.
→ Отсутствие собственных правил для оповещения об аномалиях, например, резкий рост отправляемых СМС.
Читайте также: Актуальные проблемы онлайн-платежей: от взломов до социальной инженерии
Что делать?
→ Моделировать угрозы.
→ Убедиться, что необходимые события собираются и могут быть проанализированы.
→ Убедиться, что есть оповещение при аномалиях, например, резкий рост количества отправляемых запросов к СМС-провайдеру.
→ Проводить тестирование на проникновение и анализ защищенности с помощью внешних специалистов 2-4 раза в год.
Александр Герасимов,
директор по информационной безопасности и сооснователь
Awillix.
Для New Retail
0
Последние новости
Самое популярное
- «ЭкоНива»: как оптимизировать прибытие транспорта на склад
- Как подготовиться к Новому году на маркетплейсе: советы для продавцов
- Фоторепортаж: Fix Price в новом офисе
- Продажи хлеба в 2024 году: тренды и влияние мерчандайзинга
- Как музыкальный брендинг усилил восприятие фэшн-бренда и увеличил продажи (кейс ...