В PayPal исправлена уязвимость, помогавшая узнать почту и пароль пользователя
ИБ-специалист Алекс Бирсан (Alex Birsan) получил 15 300 долларов по программе bug bounty, обнаружив критическую уязвимость в процессе аутентификации PayPal.
Эксперт объясняет, что уязвимость была связана с тем, как PayPal хранит токены CSRF и ID сессий в файле JavaScript, из-за чего они становились доступными для злоумышленников посредством XSSI-атак. Хотя для рандомизации имен при каждом запросе использовался обфускатор, все равно имелась возможность предсказать, где находятся токены и извлечь их.
Хотя сами по себе ID сессий и токены бесполезны для прямых атак, Бирсан использовал их во время компрометации механизма, который защищает PayPal от брутфорса. Так, после нескольких неудачных попыток входа в систему пользователь должен решить задачу reCAPTCHA. Данная страница не содержит ничего, кроме Google CAPTCHA, и, если задача успешно решена, формируется POST-запрос к /auth/validatecaptcha.
Ответ на данный запрос, по сути, должен снова ввести пользователя в процесс аутентификации. Для этого он содержит форму со всеми данными, указанными в последнем запросе пользователя на вход, включая его email-адрес пароль в формате простого текста. Чтобы добраться до этих учетных данных, злоумышленнику необходимо убедить жертву посетить вредоносный сайт перед входом в учетную запись PayPal.
Так как токен CSRF и ID сессии присутствуют в теле запроса, наряду с двумя другими токенами, учетные данные жертвы можно получить, если известны все токены, использованные в запросе. Значение одного из этих неизвестных токенов не проходит валидацию, тогда как другим является токен recaptcha, предоставляемый Google при решении задачи reCAPTCHA. Последний не привязан к сеансу, то есть подходит любой действительный токен, в том числе из сервиса автоматического решения.
Используя вышеприведенную информацию, исследователь создал экслпоит, который сначала использовал XSSI-уязвимость для получения действительных токенов жертвы, а затем предпринимал попытку брутфорса, чтобы вызвать срабатывание защитного механизма.
Бирсан сообщил об уязвимости представителям PayPal через платформу HackerOne еще в ноябре 2019 года. Уже 11 декабря 2019 года разработчики выпустили патч, а специалист был вознагражден за обнаружение ошибки 15 300 долларами США.