Вот атаки, о которых я знаю, в прошлом и настоящем:
Поддельный магазин приложений
Прославился российский программист Алексей Бородин, эта атака затрагивает только приложения, подтверждающие квитанции о покупках напрямую в App Store. Изменяя настройки DNS устройства и устанавливая поддельные сертификаты безопасности, запросы проверки отправляются на поддельный сервер App Store, который автоматически сообщает, что покупка действительна. Ничего не подозревающие приложения примут эти проверочные вызовы и доставят контент пользователю.
Комментарий
После того, как об этой уязвимости стало известно в июле 2012 года, Apple выпустила обновленную документацию и рекомендации для разработчиков, чтобы предотвратить повторение подобных атак. В различных веб-статьях цитируется Бородин, который заявляет, что «игра окончена» на основе обновленных API-интерфейсов Apple и руководящих принципов передового опыта.
Предотвращение
У Apple есть целый документ, посвященный этой лазейке здесь. (EDIT: ссылка не работает, Wayback, если хотите... хотя документ охватывает iOS 5.1 и более ранние версии.) Самый важный момент, который они поднимают, это то, что ваше приложение отправляет квитанцию на внешний сервер, которым вы владеете, а затем попросите ваш сервер подтвердить получение в Apple. Однако, если вы отправляете квитанцию напрямую из приложения в App Store, они рекомендуют следующие проверки:
- Убедитесь, что сертификат SSL, используемый для подключения к серверу App Store, является сертификатом EV.
- Убедитесь, что информация, возвращенная в результате проверки, соответствует информации в объекте SKPayment.
- Убедитесь, что квитанция имеет действительную подпись.
- Убедитесь, что новые транзакции имеют уникальный идентификатор транзакции.
Поддельный сервер проверки
Если ваше приложение отправляет квитанции о транзакциях на ваш сервер, который затем пересылает их в App Store, злоумышленник может подделать ваш сервер проверки. Некоторым способом (изменение таблицы DNS, изменение URL-адреса и т. д.) квитанция отправляется в альтернативное место, и возвращается «успешная проверка». Таким образом, квитанция никогда не дойдет до вашего сервера, и у вас никогда не будет возможности проверить ее в App Store.
Комментарий
По-видимому, в магазине Cydia есть множество приложений, которые работают в фоновом режиме, отслеживают трафик квитанций и перенаправляют его для этой цели. Источник: Блог Hussulinux
Предотвращение
Если вы немедленно доставляете контент, как только подтверждается получение, не существует известного способа предотвратить такого рода атаки. Однако возьмем такой сценарий: у вас есть система учетных записей пользователей, управляемая на вашем собственном сервере. Если целью покупки в приложении является уведомление вашего сервера о том, что конкретная учетная запись пользователя приобрела элемент, и приложение загружает этот элемент с вашего сервера, вы невосприимчивы к атаке. Перенаправление квитанции на другой сервер ничего не даст злоумышленнику, потому что ваш сервер никогда не пометит учетную запись пользователя как владельца предмета, так как он никогда не увидит квитанцию.
Поддельные квитанции
Злоумышленник может подделать процесс покупки, а затем отправить поддельную квитанцию на ваш сервер проверки. В отличие от предыдущей атаки, исходящая локация квитанции не меняется, а заменяется импостером. Эта поддельная квитанция на самом деле является действительной квитанцией из предыдущей транзакции в App Store, и App Store проверит ее как таковую. Подделывая процесс покупки, а затем отправляя поддельную квитанцию на ваш сервер, контент никогда не оплачивается.
Комментарий
По-видимому, есть множество приложений Cydia, которые делают такие вещи. Вы можете обнаружить поддельные квитанции, потому что их product_id
полностью отличается от всего, что вы используете в своем приложении. По-видимому, самый известный поддельный идентификатор — com.zeptolab.ctrbonus.superpower1
. Источник: Блог Hussulinux.
Предотвращение
В ссылке, где я нашел эту атаку, блогер рекомендовал распаковать квитанцию на вашем сервере верификации (base64_decode) и проверить product_id
перед отправкой квитанции в App Store. Однако в эта статья Apple рекомендует сначала отправить квитанцию в App Store, а затем прочитать возвращенную информацию, чтобы убедиться, что квитанция действительна.
(Кроме того, поправьте меня, если я ошибаюсь, но рекомендованный Apple метод также можно использовать для предотвращения такого рода атак, даже если у вас нет сервера проверки. Если ваше приложение отправляет квитанцию непосредственно в App Store, оно может проверьте содержимое ответа JSON, чтобы убедиться, что он действителен. Но это противоречит рекомендациям Apple по использованию внешнего сервера проверки, поэтому я бы не стал его поддерживать.)
В заключение
Это атаки, о которых я знаю, не стесняйтесь поправлять меня, если я ошибаюсь в каком-либо пункте, или предлагать дополнительные атаки и исправления.
В качестве примечания, есть этот веб-сайт: http://www.in-appstore.com/, который утверждает чтобы разрешить бесплатные покупки в приложении, либо на iOS 5, либо на взломанном устройстве iOS 6, и активен с 5 июля 2013 года. Хотя я не уверен на 100%, как они это делают, это определенно связано с Перенаправление DNS и поддельные сертификаты безопасности, которые подразумевают поддельный магазин приложений или поддельный сервер проверки, что дополнительно означает, что все еще существуют приложения, которые не защищены от этих атак.
Ресурсы
РЕДАКТИРОВАТЬ:
Дополнительно
Кажется, один или два человека заглянули сюда и нашли этот пост полезным, и я рад.
Больше информации по этому вопросу можно найти в других постах, книгах или, если вы готовы, покопаться в недрах Интернета. Вот всего пара веб-сайтов, постов и так далее, которые я хочу изучить, но пока не было возможности. Я добавлю больше ссылок позже, когда найду интересные лакомые кусочки.
http://www.se7ensins.com/forums/threads/tut-how-to-hack-ios-games-and-apps.701845/ http://www.iapphacks.com/
Несколько немедленных выводов: не храните данные вашего игрока в простом списке, если вы не хотите, чтобы его редактировал какой-нибудь подросток. Людям не нужно взламывать вашу систему IAP, если они могут просто получить золото или что-то подобное, отредактировав файлы на диске. Возможно, зашифровав эти файлы, вы сможете отбить охоту у определенного сегмента злоумышленников.
Основываясь на ссылке se7ensins, кажется, что злоумышленник также может разобрать ваш двоичный файл и возиться с ним, чтобы достичь тех же целей, что и редактирование файла plist, или даже больше, но для этого потребуется немного более высокий уровень навыков. Возможно, настройки обнаружения джейлбрейка будет достаточно, чтобы удержать большинство людей, которые прибегнут к этому.
Опять же, этот раздел в основном спекуляция, но он может кому-то помочь. Действительно, уровень вашей защиты зависит от того, насколько далеко готов зайти разработчик (в кроличью нору безопасности и шифрования), чтобы защитить свою прибыль.
person
Matt Mc
schedule
16.07.2013