В 2020 году даже если злоумышленник попал в ваш аккаунт социальной сети, это неприятно, но не критично. Ведь у нас есть двухфакторная аутентификация на многие важные действия, а доступа к почте/телефону у злоумышленника нет и аккаунт ему не угнать. Так ведь? Нет.
В Instagram - социальной сети, которую использует 1 миллиард пользователей (⅛ населения планеты) все совсем не так. И исправлять они это отказались. В этой статье я расскажу вам о логической уязвимости, которая может позволить захватить аккаунт человека, пока он не обратится в тех. поддержку.
Интересно? Добро пожаловать под кат!
Смена email и номера телефона
Итак, злоумышленник каким-то образом зашел в ваш Инстаграм аккаунт в приложении или в веб-версию. Возможно, он просто узнал ваш логин и пароль, или может вы забыли выйти на общественном компьютере, это уже не столь важно. Двухфакторная аутентификация же по умолчанию у всех отключена.
Может ли он что-то такое устроить, чтоб завладеть вашим аккаунтом на продолжительно время? Да, может и в этом как раз проблема.
Ночью, где-то в 3-4 утра, когда вы скорее всего спите, он удаляет привязанный номер телефона.
Нужно ли подтверждение с телефона? Нет, не нужно.
Придет ли смс на номер телефона? Нет, не придет.
Прилетит ли Push-уведомление в приложение? Нет, не прилетит.
Пара кликов и уже номер телефона не привязан, вас уведомят лишь письмом на почту, его вы увидите скорее всего лишь утром. Дальше email, меняем и его.
Нужно ли подтверждение с прошлого email? Нет, не нужно.
Прилетит ли Push-уведомление в приложение? Нет, не прилетит.
Остается лишь подтвердить новый email по ссылке, что злоумышленник сделает — email сменен. И об этом вас уведомят лишь письмом на почту, и его вы увидите скорее всего лишь утром.
В письмах на почте об изменениях в аккаунте вас будут ждать ссылки возврата “secure your account here” (https://instagram.com/accounts/disavow). Они позволяют легко восстановить старое значение email и телефон, переход по ним позволит все откатить. Это ЕДИНСТВЕННЫЙ механизм защиты от перехвата аккаунта, но он работает. А можно ли его обойти? Да, можно.
Account Takeover
Чтобы получить контроль над аккаунтом и не дать владельцу вернуть его обратно, нужно лишь не позволить ему использовать ссылки возврата. Немного обозначений:
“victim@example.com” - почта владельца аккаунта, к которой был привязан аккаунт.
"evil1@anyserver.com” - первая почта злоумышленника.
“evil2@anyserver.com” - вторая почта злоумышленника.
Последовательность действий:
Хакер удаляет телефон жертвы из аккаунта и меняет почту victim@example.com на evil1@anyserver.com.
Хакер подтверждает почту evil1@anyserver.com.
Хакер меняет почту evil1@anyserver.com на evil2@anyserver.com.
Хакер подтверждает почту evil2@anyserver.com.
Хакер нажимает на ссылку возврата “secure your account here” (“https://instagram.com/accounts/disavow/**) на “evil1@anyserver.com” и восстанавливает настройки аккаунта к первоначальным с Шага 1, при этом меняя и пароль.
Он сам вернул привязку к легальном мылу и телефону?! Да, и он повторит шаги 1-5 еще несколько раз, пароль ему известен. Полностью автоматизировано повторит, нет там капчи, ни одной!
При моих тестах было достаточно 3 повторений шагов, чтобы ВСЕ ссылки возврата на ВСЕХ почтах перестали работать. Их использование несколько раз за короткий промежуток времени приводит к блокировки функции возврата “secure your account here“. Злоумышленник же может автоматизировано повторять шаги, чтобы продлить блокировку. Теперь аккаунт без вмешательства тех. поддержки не вернуть, ведь ссылки даже на первоначальном email не работают, а из всех приложений жертву выкинуло после первых действий.
Решения
Решений это проблемы множество, самые важные компенсирующие меры:
Внедрить подтверждение смены email и телефона отправкой сообщения на предыдущий email/телефон.
Блокировать лишь ссылки возврата на определенных email, а не на всех.
Желательно:
Уведомлять об изменения в аккаунте в приложении и/или смс.
Реакция Facebook/Instagram
“В рамках использования описанной вами проблемы кто-то должен взять под контроль устройство пользователя и перевести это устройство в разблокированное и аутентифицированное состояние. Это очень высокий барьер для входа и, похоже, вряд ли произойдет обычно, что делает эту атаку скорее теоретической. Защита в этом случае заключается в том, чтобы не позволить кому-либо украсть и разблокировать ваше устройство.”
То есть, это в целом невозможно?
И перехват веб-версии, через которую я и проделал все описанное выше - не считается?
Править они ничего не будут, судя по всему, и тем более за это не положена никакая награда исследователю. Вот такая интересная "особенность" Инстаграма, а никак не проблема безопасности =)