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

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

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

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


person Matt Mc    schedule 16.07.2013    source источник


Ответы (1)


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

Поддельный магазин приложений

Прославился российский программист Алексей Бородин, эта атака затрагивает только приложения, подтверждающие квитанции о покупках напрямую в 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
comment
отличная запись и очень полезная. - person philipp; 10.04.2014
comment
Требует ли телефон джейлбрейка для всех этих атак? Как я вижу, некоторые из этих атак могут быть применены к Mac In App Purchases. Существуют ли какие-либо конкретные атаки на Mac при покупке приложений? - person Petr; 21.04.2014
comment
@Petr Я считаю, что для атак с перенаправлением DNS и подделкой сертификатов требуется джейлбрейк на iOS 6 и более поздних версиях. Да, похоже, что некоторые из них можно применить и к OSX. Я не уверен, какие именно; может все. Чеки OSX App Store отличаются от квитанций iOS, хотя я не помню деталей. - person Matt Mc; 22.04.2014
comment
Вы можете перенаправить DNS без джейлбрейка, если используете Wi-Fi, а не радио. Это полезно для серверов проверки приложений, которые не используют HTTPS. - person Jon Watte; 08.12.2014
comment
Ссылка Apples для предотвращения подделок в магазине приложений не работает, правильная — ЭТОТ - person Heitor; 02.01.2016