Защита от атак для покупок в iOS-приложениях

В прошлом система покупок в iOS от Apple подвергалась нападкам со стороны людей, которые обманывали приложения, предоставляя им контент бесплатно. С тех пор они улучшили задействованные системы, пытаясь ограничить подобные вещи.

Я прочитал справочные документы StoreKit, доступные от Apple, и у меня есть общее представление о рабочем процессе и проверках, которые необходимо выполнить, и так далее. Однако могут быть проблемы с безопасностью, о которых я не знаю.

Может ли кто-нибудь предоставить полный список краж-атак, которые могут быть предприняты против механизмов покупки в приложении, как разработчики могут ошибочно разрешить эти атаки и каковы наилучшие методы их предотвращения?

1 ответ

Решение

Это атаки, о которых я знаю, в прошлом и настоящем:

Поддельный App Store

Сделанная известной российским программистом Алексеем Бородиным, эта атака затрагивает только те приложения, которые проверяют квитанции о покупке непосредственно в App Store. Изменяя настройки DNS устройства и устанавливая поддельные сертификаты безопасности, запросы на проверку отправляются на поддельный сервер App Store, который автоматически возвращает информацию о том, что покупка действительна. Ничего не подозревающие приложения примут эти проверочные звонки и доставят контент пользователю.

Комментарий

После того, как об этом эксплойте стало известно в июле 2012 года, Apple выпустила обновленную документацию и рекомендации для разработчиков, чтобы предотвратить продолжение атак такого рода. Бородин цитируется в различных веб-статьях, утверждая, что "игра окончена" на основе обновленных API-интерфейсов Apple и рекомендаций по передовым методам.

профилактика

У Apple есть целый документ, посвященный этой лазейке здесь. (РЕДАКТИРОВАТЬ: ссылка не работает, обратная связь, если хотите... хотя документ касался 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 и поддельными сертификатами безопасности, что подразумевало бы Fake App Store или Fake Verification Server, что дополнительно означало бы, что все еще есть приложения там, которые не защищены от этих атак.

Ресурсы

РЕДАКТИРОВАТЬ:

дополнительный

Кажется, что один или два человека прошли здесь и нашли этот пост полезным, и я рад.

По этому вопросу можно получить больше информации, например, в других публикациях, книгах или, если хотите, обыскивать подковы в Интернете. Вот только пара веб-сайтов и постов и так далее, на которые я хочу посмотреть, но у меня еще не было шанса. Я добавлю больше ссылок позже, когда найду интересные лакомые кусочки.

http://www.se7ensins.com/forums/threads/tut-how-to-hack-ios-games-and-apps.701845/ http://www.iapphacks.com/

Несколько немедленных выводов: не храните данные вашего игрока в простом списке, если только вы не хотите, чтобы его редактировал какой-то подросток. Людям не нужно взламывать вашу систему IAP, если они могут просто дать себе золото или что-то подобное, отредактировав файлы на диске. Возможно, зашифровав эти файлы, вы можете обескуражить определенный сегмент злоумышленников.

Основываясь на ссылке se7ensins, создается впечатление, что злоумышленник может также разделить ваш двоичный файл и связываться с ним для достижения тех же целей, что и редактирование plist-файла или даже больше, но для этого потребуется немного более высокий уровень квалификации. Возможно, настройки обнаружения джейлбрейка будет достаточно для сдерживания большинства людей, которые будут прибегать к этому.

Опять же, этот раздел в основном спекуляция, но он может кому-то помочь. Действительно, уровень защиты, который вы имеете, зависит от того, насколько далеко разработчик готов зайти (по кроличьей норе безопасности и шифрования), чтобы защитить свою прибыль.

Другие вопросы по тегам