[recovery mode] «Вам повезло!» или как Яндекс устранял баг
Предисловие
Hello, team! Возможно, столь завуалированное название статьи Вас заинтересовало, и вы решили прочитать ее во что бы то ни стало, дабы понять суть. Но на деле все куда проще, а остроты данной ситуации подбавляют лишь комические реплики службы поддержки Яндекс (далее — ЯД), которая красиво «отшила» мой баг-репорт.
Когда я оставил заявку на bugbounty, я и не надеялся получить быстрый ответ. Я заранее загуглил отзывы некоторых пентестеров, которые были крайне недовольны системой поощрения программы ЯД. Но, к моему удивлению, баг закрыли через пару дней, а затем я пустился во все тяжкие в полемику с рыцарем службы поддержки ЯД.
История
Один мой друг из северного городка часто передвигался из пункта А в пункт Б, а иногда даже и в С, и в Д и тд. Пользовался он, конечно же, Яндекс Go. Быстро, удобно, дорого! Последнее было не кстати, так как поездок было действительно много и на дальние расстояния. Но сама система, как вы знаете, считает стоимость поездки от многих факторов (время, загруженность, погода и тд). Таким образом, в ночное время можно было совершить поездку за 100–120 рублей, когда в 8:00 утра цена могла достигать 500 рублей. А что если сделать заказ в 8 утра с тарифом на 4 часа ранее? Можно! Но нет — мы не будем изобретать машину времени, прыгать в черную дыру или умолять ЯД сделать нам скидку. Ленивые программисты все сделали за нас! Они просто забыли дописать функцию перерасчета.
Баг
Так в чем же заключается сам баг? Возможно, что это не совсем баг, а что-то типа фитчи — думал я… Но если углубиться в детали, то это действительно ошибка. Выбрав нужный маршрут в то время, когда стоимость будет минимальной, мы не подтверждаем заказ, а просто оставляем приложение открытым. В тот момент, когда нам нужно будет отправляться в путь, подтверждаем заказ и вуаля! Странно, что сессия хранится так долго, а само приложение не делает перерасчет, но у Яндекса есть коронный ответ на этот вопрос…
Взгляните на карту ниже. Это маршрут, по которому был сделан заказ в 8:00. В самый час-пик, расстояние почти через весь город. Как думаете, какова цена? Ответ ниже.
Поездка на камри через весь город в 8:00 за 126р?)
Видели бы вы лицо бедного таксиста :(
Экономия была огромной, а в больших городах вас бы наверное даже не повезли. Приведу еще один пример — экономии между заказами в разное время.
Перерасчет в данном случае был сделан специально, дабы увидеть разницу в цене, но никто не мешал уехать в 7:04 по стоимости в 155 рублей.
Кульминация
Баг найден, репорт успешно составлен и отправлен в службу поддержки ЯД. Проверяем еще раз «халявную поездку» через пару дней и видим примитивное окно ошибки, которое было написано на скорую руку.
Вот молодцы! Исправили оперативно, теперь напишем в поддержку. К удивлению, но специалист СБ быстро вышел на связь. Завязался небольшой диалог, где были предоставлены все доказательства. Все бы ничего, но произошел троллинг.…
Подобных моментов везения было очень много. Мои друзья самые везучие люди, а Василий отправил меня дальше искать удачу на своем пути, и я надеюсь, что везение где-то близко…