MetalBear выкатили mirrord под Windows и решили это отметить, сделали браузерный сапёр в стиле ретро-Windows на неделю запуска. Обещали мерч тем, кто к пятнице удержится в топе рейтинга (неделя запуска уже прошла, так что конкурс закрыт).
Само собой, игру тут же взломали) Nitzan, security-инженер из Daylight (это клиент MetalBear), быстро нашла дыру. Сервер не валидировал тайминги, клиент сам присылал таймштампы по каждому ходу и итоговое время прохождения, а сервер принимал их без проверки. Плюс seed для генерации поля и сам PRNG лежали в клиентском JS, то есть браузер уже на старте знал полную раскладку мин. В сумме это давало возможность сгенерировать идеальную последовательность ходов скриптом и отправить её с любым правдоподобным временем :D
Вообще прикольно, что Nitzan прислала готовый regression-тест, где честное быстрое прохождение — ок, мгновенное прохождение бота — бан, а самое хитрое — заявленное время без реального ожидания — тоже бан.
MetalBear починили ровно так, как она и предложила. Но признали, что до полной неуязвимости всё ещё далеко. Seed по-прежнему виден клиенту, так что терпеливый бот в теории может дождаться нужного момента и пройти игру и-де-а-ль-но.
Игра всё ещё тут, если хотите пощупать.
А разбор взлома — в блоге MetalBear.
Post #1625
3.61K