Эксплуатируем уязвимости в безопасности в госуслугах
Со мной периодически связываются люди и делятся своим опытом того как их обманули телефонные мошенники. Ситуация примерно одинаковая во всех случаях, но появилось пара НО 😂
Ситуация 1
На самом деле таких ситуаций сразу три:
В первом случае мошенник по неосторожности скинул жертве свой реальный номер телефона.
Во втором случае жертва смогла самостоятельно узнать номер мошенника (человек попросил не раскрывать способ)
В третьем случае жертвой оказался представитель мессенджера в котором все это дело разворачивалось 😂
Пока эти ситуации висят, жертвы запуганы мошенниками и опасаются подать заявление в полицию. Давайте поддержим пострадавших! Возможно они все же соберутся и накатают заявление. Кстати, они читают мои посты и коментарии под ними.
Ситуация 2
Ко мне обратится дальний родственник с просьбой помочь. Как-то так получилось, что он всех учил как защитить свой аккаунт госуслуг от мошенников (и меня в том числе), а тут оказалось что сам своими руками скинул им пароль 🤦
Ну а что тут сделаешь? Кое-как пострадавший сменил пароль от аккаунта. У человека был установлен запрет на получения кредитов и этого всего. В итоге отделался только легким испугом. И вроде бы мошенник отступил и все на этом.
Но тут не все так прозрачно как могло бы показаться, особенно для меня после того как набил шишек на разработке своей системы авторизации и завершении сеансов. У меня начал дергаться глаз от флешбеков того что в этой системе может пойти не так:
Заваривайте чаек, берите закуски, сейчас будет небольшое расследование на человеческом (непрограммистком) языке :)
На самом деле в теме безопасности (хоть какой-то) мне пришлось начать разбираться с момента работы над собственным сервисом для общения. Будучи зарегистрированным на форуме с настоящими профессиональными разработчиками смог довольно плотно с ними пообщаться.
В какой-то момент приступил к разработке собственной системы авторизации, обмена токенами, завершения работы приложения, почитал статеек. Собственно так понял на своей шкуре как весь этот механизм работает и реализовал его надежно у себя.
О токенах
У токенов есть и достоинства и недостатки. Ох, придется заняться нудятиной и рассказывать обывателю что и как работает 😅 Но без этого, к сожалению, для ЛЛ могу заключить так: в госуслугах существует проблема в безопасности, дальше можете не читать.
JWT-токен (JSON Web Token) — это способ передачи информации между двумя сторонами. В случае авторизации пользователя в сервисе, сервер передает пользователю файл в котором, улосвно, написано: можно доверять что это Иванов Иван Иванович до 03.06.2026, до 18:00, подпись сервера.
Ключевым моментом здесь является подпись сервера. Только сервер может подписать документ.
Наглядно это можно представить так: я - сервер, Иван - пользователь. Вы подходите ко мне с паспортом. Я выполняю роль нотариуса, по паспорту смотрю что вы - это вы, составляю бумажку и и ставлю свою подпись и дату до которой считать документ действительным. С этого момента любой человек, который предоставит эту бумажку будет распознан мной как Иван. Если документ устарел, то придется показать паспорт повторно (ввести пароль).
Чтобы постоянно не вводить пароль придумали следующую штуку: при демонстрации паспорта я выписываю сразу 2 бумажки:
- 1 бумажка удостоверяет что вы - это вы и срок ее действия 1 час
- 2 бумажка удостоверяет что вы - это вы и срок ее действия 7 дней
Вторую бумажку можно использовать для обновления первой бумажки. То есть Иван может подойти ко мне и сказать: у меня просрочилась первая бумажка, но у меня есть вторая и мне нужно получить две новые бумажки (первую и вторую) с продленным сроком действия.
В приложениях эти действия делаются сами собой и пользователь их не замечает. Это избавляет пользователя от многократного периодического ввода пароля.
Проблемы токенов
У этого подхода есть плюсы и минусы. Заострим внимание на проблемах и на их решениях.
Очевидный минус - вор похитил бумажку или сделал ее копию. Теперь сервер не знает что бумажка похищена и будет считать мошенника Иваном до момента пока срок действия бумажки не пройдет. Как решается? Разработчики решают эту проблему по-разному:
- кто-то говорит: "хорошо, все равно через условные 5 мин срок действия бумажки пройдет, что программа может успеть сделать за 5 мин?"
- кто-то вводит механизм версионирования. Это значит, что помимо срока действия документа на бумажку записывается версия документа. И если версия ниже, чем версия на сервере, то документ считается недействительным.
Как это работает:
1) Иван получил бумажку с сроком действия, версия 1 и подписью сервера;
2) Вор украл \ скопировал бумажку Ивана;
3) Иван узнал о компроментации, вышел из приложения и снова в него зашел. После этого сервер выдал Ивану бумажку с новым сроком работы и уже версией 2;
4) Вор обратился к серверу, сервер проверил дату, но заметил, что документ устарел и не принял его; Вор остался "за бортом".
Это один из самых простых способов завершения работы и ограничения доступа.
Изучаем сервис Госуслуги
Приглашаю внимательно посмотреть как будет вести себя сервис когда пользователь сменил пароль.
Рассматривать ситуацию когда пользователь вышел из приложения на одном из своих устройств - бессмысленно т.к. в этом случае претензий к сервису нет.
Проводим эксперимент. Каждый может провести его самостоятельно. Для этого потребуется 2 телефона с доступом в интернет и сервис госуслуги (+ номер к которому привязан аккаунт).
Просто заходим в свой аккаунт с двух телефонов:
- телефон 1 пусть принадлежит мошеннику (для ясности подчеркну, вы передали ему код из СМС, он смог с его помощью залогиниться)
- телефон 2 пусть принадлежит владельцу
Данная ситуация имитирует момент кражи JWT-токена.
Теперь вы осознали факт кражи и решили что-то с этим делать. Что вы будете делать, какие ваши действия? Допустим в полицию вы позвонили (как и в моем случае), что дальше?
Смена пароля? Смените пароль на Госуслугах через телефон 2. После успешной смены пароля попробуйте использовать телефон 1 (телефон мошенника). Как видим, мошенник как был в аккаунте, так и продолжает в нем быть, смена пароля не помогла.
Собственно этот момент меня и смутил в данном сервисе. Пошел дальше, закрыл приложение на телефоне мошенника, открыл его через 15 минут зашел в приложение с помощью четырехзначного пароля:
И все зашлось без всяких проблем. Это все, что нужно знать про то, как можно "грамотно" реализовать двухфакторную аутентификацию 😂
Ребят, россиян 120 млн человек, почему я сталкиваюсь с подобными проблемами?
Отмечу, это не первая проблема, которая была зщамечена мной в данном сервисе. Какие-то проблемы (которые подсвечивал сервису) они правили, какие-то - нет. По мере развития своих профнавыков кидаю в сервис репорты. И этот случай скинул:







Госуслуги могут замять мое обращение и ответить что все "соответствует ТЗ и проблем у нас нет". Собственно так они и отвечают, когда не хотят ничего менять. И будут в какой-то мере правы так как если вы разбираетесь в тонкостях работы системы авторизации, то вы наверняка знаете что можно завершить сессию вора в каком-то разделе госуслуг. Вот только попробуйте найти куда они спрятали этот раздел. И кто у нас разбирается в этих тонкостях?
Рядовой пользователь не знает тонкостей, не имеет представления чем авторизация отличается от аутентификации, а на мой вопрос про "вышел из сессий?" спросил "что это такое и с чем едят?":
Надеюсь пост был полезен и вы узнали немного больше о безопасности. А Госуслуги, надеюсь, сделают что-то с ответственным за безопасность сервиса. Например, кинут его "в костер" 😂
--
По вечерам разрабатываю сервис для общения. Кому интересен сервис для общения, можете подписаться куда-нибудь на меня, попробуете его в числе первых.
Постепенно буду продолжать делиться успехами разработки.




















