В данном посте речь пойдет о том, что ПО iMazing научилось переносить данные приложений на любое устройство с iOS9 и чем это чревато. А в качестве бонуса рассмотрим пример того, как
не нужно реализовывать безопасность встроенных покупок на примере одной популярной игры одного очень известного разработчика. Или, иначе говоря:
Повод для беспокойства
Есть такое приложение –
iMazing, которое возволяет делать разные вещи, среди которых – создание резервных копий приложений и их настроек. Недавно нем появилась поддержка iOS9. Все бы ничего, но если раньше создание бэкапа в этом ПО формировало .IPA-файл, подписанный сертификатом пользователя, который его сделал, то в случае с iOS9 программа экспортирует файл .imazingapp, в котором
отсутствует сам .IPA-файл, но зато хранятся
данные приложения. В практически открытом виде. Такой файл данных приложения
можно теперь восстановить на любое устройство с iOS9.
Теперь сами же создатели iMazing
бьют тревогу и просят всех разработчиков проверить защиту данных в своих приложениях.
Пара слов о резервных копиях
Безусловно, создание/восстановление резервных копий iOS-устройства – не новость. Каждый владелец устройства на базе iOS делает его по нескольку раз за день, подключая устройство к iTunes. Однако раньше восстановить резервную копию было возможно только на устройство пользователя, который его сделал. Сам файл резервной копии пожат, зашифрован и проверяет контрольную сумму архива перед восстановлением, – все для того, чтобы защитить данные пользователя и его приложений в бэкапе. Восстановление такого бэкапа – это продолжительный процесс, который опять-таки, обеспечивает безопасность сохраненных данных приложений на всех этапах – от сохранения, до восстановления на устройство.

В случае с iMazing и iOS9 ситуация изменилась: при желании вы можете «
выковырнуть» данные интересующего вас приложения из резервной копии iTunes в виде файла .imazingapp, а затем восстановить их на устройство за минуту. В любой момент. На
любое устройство. Само приложение при этом не восстанавливается, но найти и заранее установить его через App Store – дело пяти минут.
Данные приложения, которые хранятся в файле .imazingapp защищены, кхм,
несколько слабее, чем в полноценном бэкапе iTunes. Поэтому вскрыть его, а затем внести изменения в файлы, например, сохранений игры, не составляет особого труда. Описывать это процесс я не буду, потому что люди знающие разберутся сами, а обычным пользователям давать в руки подобную инструкцию было бы неуважением ко всем iOS-разработчикам, которые сейчас на пятой передаче ищут способы защитить данные своих приложений.
Вам это ничего не напоминает? Если вы когда-либо устанавливали на свои i-устройства
Jailbreak, то, наверняка, знаете, как найти на системном разделе директорию с приложениями и их данными. И как просто эти данные менять, используя, например iFile из Cydia. Теперь и этого не нужно. Каждый пользователь iMazing имеет схожие возможности, да еще с бонусом в виде возможности восстановления данных на любой аппарат с iOS9,
с джейлбрейком или без.
Это предыстория. А теперь прикинем, чем это чревато на примере одной популярной игры.
Хрестоматийный пример разгильдяйства
Все мы знаем компанию Rovio, которая год за годом клепает игры серии
Angry Birds. Относительно недавно разработчик порадовал нас выпуском новой части эпопеи – Angry Birds 2, распространяемой по популярному принципу Free To Play. Игра представляет собой отличный пример того, как злоупотребление моделью F2P превращает любимые нами игры в пылесос для кошелька игрока – тут вам и «жизни», и «самоцветы», и реклама, в общем – всё, что только можно использовать для монетизации.

Но речь не об этом. Игра сделана на Unity и, как оказалось, хранит данные сохранений (и покупок!) в БД hash-записей PlayerPrefs. По умолчанию hashtable PlayerPrefs ничем не защищен и все данные хранятся в открытом виде. Безусловно, компания, которая имеет
богатый опыт разработки на Unity, в курсе того, что сохранения нужно защищать, особенно, если на этом базируется экономическая модель. Так ведь?
Как оказалось – не так.
Для начала запустим Angry Birds 2 на устройстве с Jailbreak (в данном случае – iPod Touch 5G) и немного поиграем. Наигравшись вдоволь, оценим достижения:
423 самоцвета. Негусто… Исключительно ради
академического интереса установим игру на устройство с Jailbreak и посмотрим, какие данные игра хранит в PlayerPrefs:
Вот те на. Вот они, родимые! Все четыреста двадцать три штуки.
Хеш-сумм не видать… ключей шифрования тоже. Попробуем изменить значение ключа «Gems»:
Запустим игру, и…
… и смеемся, и плачем.
Безобразие… Но людей, «рискнувших» установить Jailbreak немного, куда меньше, чем основной аудитории, верно?
А слабо без Jailbreak?
Вернем количество самоцветов в предыдущее значение, сделаем резервную копию нашего устройства через iTunes, а затем бэкап данных игры с нашего iPod Touch с помощью iMazing. Полученный файл резервной копии .imazingapp чуток «подправим», а затем восстановим его другой аппарат
без Jailbreak (iPhone 5).
Взглянем на результат:
Комментарии излишни.
Мне сложно представить себе, о чем думала команда опытных разработчиков, поленившихся сделать
хотя бы простейшее BASE64-хеширование сохранений игры, которая стоила десятки (сотни?) тысяч долларов в разработке и практически целиком и полностью
монетизируется за счет встроенных покупок.
Что делать?
Защищаться!
Пользователь Habrahabr natexriver написал замечательную инструкцию о том, как можно реализовать
защиту данных приложений Unity. Обратите внимание, как мало усилий требуется для того, чтобы обеспечить самую базовую защиту данных, и насколько она важна. Если лень делать свою защиту, обратитесь в
Unity Asset Store. Подчеркну, что нет
никаких причин
не делать защиту, и надеяться на авось.
Пример, конечно же, актуален не только для игр на Unity. Любое приложение (
особенно неигровое) должно обеспечивать безопасность данных, а не рассчитывать на то, что пользователей с Jailbreak мало, и все обойдется. С выходом iOS9 ситуация кардинально меняется. Теперь пользователи iMazing могут обмениваться файлами резервных копий данных своих игр и приложений и вытворять с этими данными все то, для чего ранее требовалась установка Jailbreak.
Дисклеймер
Вся информация в данном посте представлена в сугубо ознакомительных целях. Andry Birds – торговая марка Rovio Entertainment Ltd.
Опрос
комментарии (12)