Началось всё с того, что перед запуском одного из проектов мы проводили аудит безопасности по фроду одного из SMS-сервисов. В нем принципиальным условием является использование для коммуникации с клиентами федерального номера — именно длинного, вида +79………, а не короткого премиум-номера. Нам необходимо было изучить и проверить все возможные детали с точки зрения безопасности, т.к. сервис связан с управлением финансами.
Один из важных вопросов, который пристально изучался — точно ли мы можем быть уверены в том, что если клиент прислал SMS, то это SMS пришло именно с его телефона, а не каким-то другим образом. Начали тестировать и довольно быстро убедились, что совсем не обязательно, что пришедшее оператору сообщение на длинный номер от клиента может отправить только сам клиент со своего мобильного.
Кстати, эта информация совсем не нова, но ранее как-то не приходилось очень детально изучать вопрос, т.к. не было особой необходимости в этом. Не так ведь важно, точно ли со своего телефона клиент отправил какую-то информацию по SMS в рамках какой-то маркетинговой акции или кто-то это сделал за него, используя какие-то средства для того, чтобы выдать своё сообщение за чужое.
Итак, оказывается, что можно довольно легко «обмануть» практически любую систему, если отправить сообщение через рассылочный шлюз (через которые банки и сервисные компании присылаю информационные или рекламные сообщения) с именем отправителя вида 79991112233. Суть в том, что операторы не всегда могут понять, что сообщение инициировано не владельцем реального мобильного номера, а кем-то другим, кто просто использует имя отправителя подобного вида. Соответственно получаемая от оператора информация ничем не отличается от обычных SMS-сообщений.
Мы попытались обратиться к операторам за комментариями по этому вопросу и получили в ответ информацию о том, что определить потенциальный фрод такого плана они могут в рамках своей сети, но редко или никогда, если сообщение приходит из другой сети (не буду углубляться в технические подробности, на суть не влияет существенно).
В итоге на вопрос «точно ли мы можем быть уверены в том, что если клиент прислал SMS, то это SMS пришло именно с его телефона, а не каким-то другим образом» мы получили отрицательный ответ.
Хорошенько подумав над проблемой, мы нашли лёгкое и красивое решение в нашем конкретном случае, но всё же пришлось делать кое-какие доработки, в которых не было бы необходимости, если бы не было таких вот «дыр».
P.S. Тестовое SMS отправленное таким вот образом через шлюз с подстановкой номера мобильного телефона моего коллеги на телефон другого нашего коллеги, пришло точно в таком же виде, как если бы его отправлял он сам со своего телефона.
P.P.S. Я не ратую чтобы совсем запретить/ограничить возможность отправлять сообщения с номером телефона в имени отправителя (запретить это наверно и не получится из-за технических сложностей с выявлением таких сообщений). Наверняка всем нравится, что в Skype (или в других аналогичных сервисах) можно зарегистрировать свой телефон и отправлять сообщения через Интернет от своего имени. Дело в том, что этот вопрос хорошо бы грамотно контролировать и не допускать предпосылок для создания мошеннических схем, где можно выдать себя за кого-то другого. Но это так, мысли вслух.
Специально для Content-Review