Детали уязвимости в сервисе восстановления пароля от Gmail аккаунта

Позавчера, Oren Hafif обнаружил уязвимость в Gmail. Точнее говоря, не одну уязвимость, а целую цепочку, которая позволяет угнать пароль от аккаунта. Хафифи использовал межсайтовый скриптинг (XSS), подделку межсайтовых запросов (CSRF) и обход парольного потока (password flow bypass) для совершения атаки.

Похищение пароля от учетной записи Google затрагивает не только электронный ящик, но и прочие сервисы Google – к примеру, Google Wallet или облачное хранилище Google Drive – и ставит под угрозу конфиденциальную информацию пользователя.

Первым делом необходимо было отправить жертве фишинговую ссылку на e-mail, которая выглядела бы, как настоящая. В письме было написано, что пользователю требуется подтвердить подлинность учетной записи либо сменить сам пароль, для чего следует перейти по предоставленной в письме ссылке.

После клика, клиента отправляет на специально сформированную страницу с JavaScript кодом, который благодаря CSRF отправляет запрос на https://www.google.com/accounts/recovery/verifyuser ? jsEnabled=False&preoption=1&Email= ‘ + location . hash . split( » Email= » )[1] + ‘ & Email2=, затем берет полученный из параметров email и производит редирект на нужную ссылку вида: https://google.com/accounts/recovery/ktpass?rpu=EVIL_JS. Уязвимым параметром является rpu, который позволяет выполнять произвольный JS код. Далее происходит отрисовка формы ввода пароля. Передав в параметре rpu нужный нам JS, можно отследить результат ввода пароля, а затем передать данные на сниффер. То есть не подозревающая жертва создает новый пароль, который сразу же попадает в руки хакеров.

По словам исследователя, Google исправила брешь в системе в течение 10 дней. За продемонстрированную уязвимость Хафифи вскоре должен получить $5,100 и место в Зале славы Google, о чем он написал сам.

Видео: http://youtube.com/watch?v=zJFuSPywWM8