- BrainTools - https://www.braintools.ru -
Сегодня вечером в одном популярном телеграм-канале увидел вот такой пост:
Игра была знакомой, классический Flappy Bird.
Ранее я уже сталкивался с плохой безопасностью приложения на iOS, разработанного с помощью ИИ. Если кому интересно, почитать можно здесь [1].
Цель простая: используя недочеты нейросети, забраться на верхушку лидерборда. Опыт [2] показал, что выходить на первое место нужно без лишнего внимания [3]. Поэтому никаких красивых и огромных чисел в результатах, просто обойдем текущего чемпиона на несколько очков.
В первую очередь запустим игру с браузера на ПК, чтобы удобно работать с инструментами разработчика devtools.
Сыграв первую тестовую игру сразу видим запрос к api, отправляющий результаты.
В запросе не оказалось авторизации, поэтому просто копируем его (copy -> copy as curl) и работаем напрямую с api.
Примечание: у меня уже был открыт Postman, поэтому дальше я работал с ним. Но вообще, измененный запрос можно было отправить и из консоли браузера.
Вставляю в Postman: он из под коробки распознает curl и сам заполняет все атрибуты.

В теле запроса ничего хитрого не оказалось, initData – строка, которую передает сам телеграм, поэтому ее не меняем. Следующий объект gameplayData– это то что нам надо.
Для правдоподобности в новых значениях решил пропорционально увеличить количество прыжков и длительность игры. Ну и, конечно, сам счет.
Как видим из скрина выше – запрос прошел, а значит самое время обновить лидерборд.

Реализовать проверку целостности данных.
Каждый запрос должен быть подписан с использованием секретного ключа. Это позволило бы серверу отклонять попытки подмены данных.
Перенести расчёты на сервер.
Не доверять данным, присылаемым с клиента. Вместо этого отправлять на сервер события (например, прыжок, столкновение) и вычислять прогресс и очки на стороне сервера.
Ввести базовые проверки на аномалии.
Например, валидировать, что длительность сессии соответствует ожидаемому времени игры и не выходит за реалистичные пределы.
Ну а мы в очередной раз забираем первое место и убеждаемся, что контроль качества должен оставаться за человеком (да простят меня нейросети).
Кстати, в своем телеграм-канале «Деплой в пятницу [4]» я публикую всё, что не тянет на полноценную статью, и иногда туда попадает даже что-то полезное.
Автор: aleks-up
Источник [5]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/14543
URLs in this post:
[1] здесь: https://habr.com/ru/articles/894412/
[2] Опыт: http://www.braintools.ru/article/6952
[3] внимания: http://www.braintools.ru/article/7595
[4] Деплой в пятницу: https://t.me/+NriQ4VVxrNo2ZmIy
[5] Источник: https://habr.com/ru/articles/903378/?utm_source=habrahabr&utm_medium=rss&utm_campaign=903378
Нажмите здесь для печати.