Тот самый первый баг, он же и самый известный. Здравствуйте, дорогие хабровчане. Хочу поделиться с вами маленьким кейсом по программе bug bounty Яндекса. Как это обычно бывает, нашёл уязвимость в сервисах компании, написал письмо, дождался ответа, в котором мне сказали спасибо и заявили, что этот баг вовсе и не баг. Раз такое дело, решил поделиться с читателями. Под катом опишу суть уязвимости и как я к ней пришёл, а также небольшой опрос в конце, призванный ответить на вопрос заголовка: является это багом или нет. Важное примечание: я спросил разрешения у службы информационной безопасности Яндекса на описание этой потенциальной уязвимости, текст письма размещён в конце статьи. Open Redirect — это тип уязвимости, при котором происходит перенаправление запроса на другой сайт. Основная опасность здесь, что невнимательные пользователи могут оставить таким образом свои, например, логин и пароль от какого-нибудь денежного ресурса или другие какие-либо ценные данные, которые может с пользой для себя использовать злоумышленник. Ни для кого ни секрет, что у Яндекса есть программа bug bounty, за которую можно ещё и получить деньжат, если найти что-нибудь стоящее. Также в рамках этой программы существует т.н. “Зал славы” — страничка, на которой публикуют аккаунты тех пользователей, кому посчастливилось найти уязвимость или баг в сервисах Яндекса.   Казалось бы, все какие можно уязвимости уже найдены, наверное остались одни только самые сложные, для которых требуется большое количество времени, компетенций и знаний. Однако, не смотря на все эти очевидные, как мы знаем из художественных фильмов, препятствия, в зале славы каждый месяц появляется десяток-полтора новых лиц. Что-то тут не сходится, подумал я, и решил попробовать сам. Спойлер: все эти предрассудки не имеют никакого отношения к реальности.  Как выяснилось, не нужно быть кулхацкером, чтобы найти уязвимость, достаточно уметь пользоваться интернет браузером и чуть-чуть понимать, как формируется строка запроса — это всё. Итак, начну описание того, как нашёл в итоге эту уязвимость. Изначально, не зная к чему можно было бы привязаться, я просто лазил по ресурсам Яндекса. Добавлял разные символы в запросы, к примеру: https://yandex.ru/pogoda/moscow?lat=55.755863&lon=+37.6177. Как видно, к параметру lon я добавил “+” и теперь эта ссылка ведёт на страницу “Bad Request”, хотя все другие символы игнорируются, а вот значок “+” имеет такой необычный эффект. Ясно, что с этим особо не разгуляешься, тут хвастать нечем. Ну не работает и не работает, никому же не мешает.  Так я ходил по разным ссылкам, пока не заметил одну примечательную на странице с регистрацией: https://passport.yandex.ru/auth?retpath=https%3A%2F%2Fya.ru. Заметив, что в этой ссылке есть параметр retpath, я знатно обрадовался и уже начал было потирать потные руки, ан не тут-то было.  Какие только запросы я не подставлял в этот retpath, ничего не проходило, кроме ссылок на сервисы Яндекса. Можно было бы подставить какую-нибудь статью в дзен и сказать, что, дескать так можно накручивать просмотры. Но, честно говоря, на какую-то серьёзную проблему это походило мало. Нужен был переход на какой-нибудь внешний ресурс. Я знал одну фичу у Яндекс-переводчика — через него можно переводить сайты и он является по сути своей прокси-сервером. Картинка с оригинальным ip адресом с whoer.net.  Картинка с ip адресом через переводчик.  Как видно, на них отличаются ip адреса. Однако, переведённые сайты переходили на домен translated.turbopages.org, который retpath отбраковывавал, как внешний. Ничего с этим я поделать не мог. Счастье было так близко, казалось достаточно было протянуть руку, но как я ни старался, ничего не работало. Отчаявшись, я было решил плюнуть на это безнадёжное дело и просто щёлкал и щёлкал на различные ссылки в переводчике. И тут мне просто повезло, т.к. Яндекс решил проверить, не робот ли я. Видать, в наше время с ChatGpt много их развелось.   Так вот, вместо очередного переведённого сайта наткнулся на капчу и, так как я знал на что смотреть, то сразу увидел, что капча то на домене Яндекса: https://translate.yandex.ru/showcaptcha?cc=.... Я, конечно, сразу решил попробовать добавить её в repath и… получилось! В сущности, получилось перейти из домена Яндекса во внешнюю сеть. Та самая ссылка https://passport.yandex.ru/…,  https://passport.yandex.ru/auth/welcome?retpath=https%3A%2F%2Ftranslate.yandex.ru%2Fshowcaptcha%3Fmt%3DAFB6C6325D8412CC746CA946298362333F207773A3839F6A409F62C466940414C233B8FD54991072499638E88BCA3EAEF707CC85966FFF0BAB96916E3CA22CC9BE7041AEE9E313D47D0DB32C29EBBD6BF446FB6971C557EF7087A13A%26retpath%3DaHR0cHM6Ly90cmFuc2xhdGUueWFuZGV4LnJ1L3RyYW5zbGF0ZT92aWV3PWNvbXBhY3QmdXJsPWdvb2dsZS5jb20mbGFuZz1lbi1ydQ%252C%252C_3c5cfbd186d546d95595517cb02ec89e%26t%3D2%2F1689705854%2F56400cb3a5cc861e8a63ee1537e5fb7e%26u%3D86ff3b17-a3ef9f73-9bfbc859-d558efad%26s%3Db1a671fc60a91d4f50b06521c8b5ae2c Примечание: через какое-то время капча пропадает и можно сразу перейти на внешний сайт. Видео, которое я отправил в Яндекс: Благодарим за интерес, проявленный к безопасности сервисов Яндекса.
Проблема, о которой вы сообщили нам, не представляет опасности для пользователя. Если вы считаете иначе, пожалуйста, опишите пример реальной атаки на важные пользовательские данные,
которую возможно совершить с использованием этой уязвимости. Описанные вами шаги приводят только к редиректу на домен translated.turbopages.org.
А сама уязвимость Open Redirect не входит в скоуп программы.
Хотя должны признать, что описанный вами функционал довольно занимателен. В связи с этим, к сожалению, мы не можем присудить за нее вознаграждение. Спасибо за внимание!