29.06.2014

Безопасность IOS-приложений (часть 31) – Проблемы со сторонними библиотеками безопасности

image

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

Автор: Пратик Джианчандани (Prateek Gianchandani)

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

На первый взгляд все выглядит весьма привлекательно. Вот часть описания со страницы на github.

The Full Shmoopi Anti-Piracy Library использует массу алгоритмов для определения несанкционированного использования, включая: *Signer Identity Checks *Process ID Checks *Plist Checks *Bundled Item Checks (CodeRules, Resources, Etc) *Encryption Checks *Anti-Debugging *Encryption Checks *Anti-Tampering *Binary Checks *Integrity Checks *CRC Checks *MD5/SHA1 Hashing Checks и так далее.

Звучит неплохо. Ниже показан скриншот со страницы на github с примерами использования библиотеки:

Рисунок 1: Примеры использования функция библиотеки

Если вы читали мои предыдущие статьи, то знаете, что при помощи техники method swizzling и Cycript можно полностью изменить логику работы методов isJailbroken и isPirated, как показано на рисунке ниже.

Рисунок 2: Изменение алгоритмов работы у каждого метода

Вывод следующий: не следует полностью полагаться на сторонние библиотеки для защиты приложений.

Как же можно выйти из ситуации? Если честно, то никак. Можно лишь затруднить жизнь злоумышленнику.

  1. Поменять имя класса SFAntiPiracy на UIColorAdditions (или нечто подобное), то есть использовать имя, не привлекающее внимание.
  2. Изменить имена методов isJailbroken и isPirated. Один из них можно назвать, например, так: isDefaultColor.

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

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

или введите имя

CAPTCHA