На Mobile Meetup 10 сентября Юрий Шабалин, директор по продукту AppSec.Sting, развеял миф о безопасности приложений на платформе iOS.
1️⃣Закрытость системы не означает защищенность. Исследования AppSec.Sting показывают, что при сравнении одного и того же приложения версию для iOS чаще всего намного проще анализировать, чем их Android-аналог.
2️⃣KeyChain (связка ключей в iOS) — не самое надежное место для хранения данных. Злоумышленник может получить копию ключей через устройство Jailbreak, при восстановлении бэкапа на взломанное устройство, облачную синхронизацию. Некорректные флаги доступа также расширяют вектор атаки. А еще данные не исчезают при удалении приложения.
3️⃣Распространенные заблуждения о безопасности
Скомпилированный код = безопасный — нет, все строки можно получить одной командой, а имена функций зачастую остаются "говорящими".
Песочница надежно защищает файлы — нет, их можно достать через Jailbreak, локальные и облачные бэкапы.
Bundle приложения безопасен — нет, он может содержать mock-компоненты, файлы сборки с зависимостями, контакты команды, тестовые ключи, сертификаты и еще много информации, которую забыли убрать из релизной сборки.
4️⃣Особенности бэкапов в iOS и Android
В Android: единая политика, контроль локальных и облачных бэкапов, на старших версиях локальный бэкап deprecated (устаревший).
В iOS: каждый файл нужно помечать, классы защиты настраиваются вручную, нет возможности отключить бекапы совсем.
Не полагайтесь только на платформу. Делайте собственный «пояс безопасности» на уровне приложения.