Кажется, что уязвимость - штука техническая, но на Госуслугах есть интересная комбинация уязвимостей (ну или, скажем, черт, особенностей) в сфере CSS, дизайна, юзабилити, которые мошенники используют в социальной инженерии.
Узнал я про это из вот этого ролика на ютубе - https://www.youtube.com/watch?v=53fsKnQimL4 . Смотрел фоном, не ожидая чего-то интересного, но в момент, когда я услышал, как жертва атаки видит телефон мошенника на официальном сайте Госуслуг, с правильным адресом, с валидным сертификатом я не поверил своим ушам и понял, что это уже интересно... А за открытие уязвимости мы должны благодарить неизвестного мошенника, "сотрудника клиентской службы сотового оператора" или "службы безопасности сбербанка", ну вы понимаете.
Описание атаки
Атака начинается обычным способом, как и всегда. Звонок, представляются, например, сотрудником мобильного оператора и говорят, что нужно подтвердить владельца телефона через госуслуги. Ввести код подтверждения из SMS. (Да, конечно, этого делать нельзя, но все-таки, постоянно какая-то часть людей ведется на это). Узнав код, быстро "захватывают" ЛК в госуслугах и меняют пароль. Однако, это не вся атака. Они развивают успех - смеются и говорят - "Ха-ха! Мы вас обманули!". Очень странное поведение... Человек смущен и напуган, тут же в панике лезет на госуслуги и ожидаемо не может войти. Окей, он пытается восстановить пароль и видит (тоже ожидаемое) сообщение, что его аккаунт заблокирован за подозрительную активность, обратитесь на номер такой-то.
Этот номер - номер мошенников. И текст сообщения от них же. Но сайт госуслуг - настоящий! Адрес верный. Сертификат валидный. Как же так? На самом деле, если просто спокойно и без паники посмотреть на картинку, то за 15 секунд все понятно (наверняка, вы разгадали сразу). Этот текст - просто текст пользовательского вопроса для восстановления доступа. А дальше жертва звонит по номеру "с госуслуг" и уже более доверяет (она же сама увидела его на госуслугах, значит, официальный номер, по этому номеру - настоящие сотрудники госуслуг) и дальше ее разводят уже смелее. Сайт госуслуг используются (абьюзится) для повышения доверия к номеру телефона мошенника. Можно разместить свой текст на госуслугах. Только для отдельного пользователя, только если он "дурак", но все-таки можно!
Разбор очевидного
Никакой технической уязвимости нет. Человек сам дал код, они просто вошли, сменили пароль и поставили свой вопрос для восстановления доступа. Система работает строго по документации, как и должна.
Но при этом - текст написан жирным шрифтом, он "доминирует" на странице, он совпадает с ожиданиями (страхами) пользователя. Немного некрасиво, что это "сообщение о блокировке" идет после слов "Контрольный вопрос", но напомню - что человек напуган, дезориентирован и этот небольшой абсурд вполне логичное продолжение того абсурда, в который он попал (если он вообще его прочитает).
Кроме того, как программист, я вполне мог бы дофантазировать, что код, который должен выдать текст контрольного вопроса, при блокировке аккаунта выдает такое вот сообщение. Некрасиво? Да. Ожидаем ли мы, что на госуслугах что-то может быть как-то некрасиво? Да вполне!
Что еще сделали Госуслуги чтобы "помочь" мошенникам? Этот номер выглядит как обычный номер сотового. Мы не ожидаем увидеть на госуслугах такой номер. Мы ожидаем что-нибудь вроде 8-800-.... Номер настораживает... Как же сделать, чтобы "клиент" позвонил на такой подозрительный номер, а не на какой-нибудь официальный 8-800-... ? А это за мошенников сделали госуслуги! Там нет на виду номера, куда позвонить. Чтобы до него добраться надо нажать в подвале "Контакты", пролистать разделы "Популярные вопросы", "Все вопросы", "Центры обслуживания", "Работа с порталом", "Спросите Робота Макса" и только потом будет раздел "другие способы связи", и он закрыт, откроется только если нажать на него. В общем, все сделано чтобы отсеивать неприятных бабок, и чтобы неприятные бабки не мешали работать красивым девушкам из службы поддержки.
Если что, телефонные номера госуслуг для связи (под спойлером, а то бабки найдут):
Бесплатный номер по России: 8 800 100–70–10
Для звонков из‑за границы: +7 495 727–47–47
Для мобильных телефонов: 115
Уязвимость ли это?
Как посмотреть. Вообще, я люблю красивые технические уязвимости, или когда сочетание двух фич (каждая безопасна и полезна сама по себе) создает уязвимость. Я писал сложные эксплойты на срыв стека, делал clickjacking, XSS и CSRF - и мне немного неприятно признавать, что вот тут все так просто... Но ведь работает!
Конечно, можно возразить, что пользователь - сам дурак (а вы, простите, для кого делаете систему? Реальные люди - они такие, да). Но по сути, достигнутый эффект - пользователь звонит на номер мошенника, полагая, что это номер госуслуг, подкрепляя доверие через известный адрес сайта и валидный сертификат. Как взломщик этого достиг, через cross-site-scripting, через DNS Spoofing и криптографическую атаку и выпуск фейкового, но валидного сертификата - неважно. Мошенник достиг своей цели.
И да, это срабатывает не на всех пользователей. Только на самых неграмотных или самых впечатлительных, склонных к манипулированию, теряющих трезвость ума в стрессовой ситуации.
Но я считаю важным тут то, что мы можем понимать эту проблему, признавать ее как проблему, разрабатывать пользовательские интерфейсы с учетом этих рисков и тогда количество "сами виноватых" пользователей будет меньше.
Что мы из этого извлекли?
1. Сайт без технических уязвимостей вполне может быть использован для атаки на пользователя методом социальной инженерии
2. Страница, прекрасно работающая в штатном режиме (забыл пароль, хочу сбросить) может быть не очень удачной в нештатной ситуации (злоумышленник получил доступ к аккаунту)
3. Шрифты, фон, оформление - могут иметь значение! Представьте текст "Ваш аккаунт заблокирован" шрифтом комик-санс. Никто при всем желании не подумает, что это в самом деле от администрации. Но если комик-санс это не слишком подходит для реального применения, то какой-нибудь италик, стилизованный под рукописный текст - вполне себе дает сигнал, что это пользовательский текст, а не строгое казенное системное сообщение.
4. Любите и поддерживайте ваших пользователей, особенно, если Вы для них - важны и опасны (как аккаунт в госуслугах). Не скрывайте свою поддержку от них. Не полюбите их Вы - их окружат вниманием, любовью и заботой мошенники.