4. ПРИЛОЖЕНИЕ
• Небезопасное хранение данных
• Утечки данных
• “Неправильная” криптография
• Слабая защита исполняемых файлов
• Многое другое. См. OWASP Mobile Top 10
5. ДАННЫЕ ПРИЛОЖЕНИЯ
• Приложение выполняется в песочнице
• Приложения не имеют доступа к
“чужим” песочницам
Это не означает что данные
недоступны извне
6. ДАННЫЕ ПРИЛОЖЕНИЯ
• File Sharing (через iTunes или Xcode)
• iTunes Backup (включая Keychain!)
• iCloud
• com.apple.mobile.house_arrest
• Джейлбрейк
9. УЧЕТНЫЕ ЗАПИСИ
• Никогда не храните в NSUserDefaults или
CoreData
• Используйте Keychain
• Используйте наиболее строгий класс защиты
при котором приложение еще работает
10. КОНФИДЕНЦИАЛЬНЫЕ
ДАННЫЕ
• Избегайте использования NSUserDefaults и
CoreData
• Используйте Data Protection
• Используйте наиболее строгий класс защиты при
котором приложение еще работает
• Используя NSUserDefaults или CoreData
обеспечьте дополнительную защиту
12. УТЕЧКИ ДАННЫХ
• Логи
• Удалите (или #ifdef) вывод логов в Release
конфигурации
• Cookies и кэши
• См. NSURLCache, NSHTTPCookieStorage
• Указывайте политики при создании запросов
• Скриншоты
• applicationDidEnterBackground:
13. КРИПТОГРАФИЯ
• Не используйте статические ключи
• Не реализуйте криптографию самостоятельно
• Не придумывайте собственные алгоритмы или
протоколы
• Если нестандартная криптография необходима
– найдите профессионала
14. ИСПОЛНЯЕМЫЕ ФАЙЛЫ
• Борьба с эксплоитами
• -fstack-protector(-strong, -all)
• ASLR
• DRM, интеллектуальная собственность
• Обфускация
18. ОБФУСКАЦИЯ
• Strip; минимум строк в исполняемом
файле
• C++ вместо Objective-C
• Static linking
• https://github.com/obfuscator-llvm
• http://tigress.cs.arizona.edu
Делайте это только если Вы понимаете что делаете и если это Вам
действительно нужно!
20. ИНТЕРНЕТ
• Никогда не используйте незащищенные
протоколы (такие как HTTP)
• Используйте их защищенный вариант
(HTTPS)
• Используйте их правильно (да, это сложная
часть)
21. КАК УСТРОЕН SSL?
Соединение
Сертификат
ОК?
Продолжить сессию
да
нет: завершить сессию
N.B.: на самом деле SSL намного более сложный протокол
22. СЕРТИФИКАТЫ
• Проверка сертификата чрезвычайно
важна
• Не используйте самоподписанные
сертификаты в production
• Если возможно, используйте фиксацию
(“pinning”) сертификатов
23. ПРОВЕРКА СЕРТИФИКАТА
да нет
Доверять Не доверять
БД доверенных
ЦС
iOS 8: ~ 250 ЦС
Сертификат подписан
одним из доверенных
центров сертификации?
24. ПРОВЕРКА СЕРТИФИКАТА
• Любой, кто может подписывать сертификаты
одним из доверенных ЦС может
организовать MITM
• Это не уязвимость протокола; просто PKI так
устроено
• Вероятно, именно это произошло с
iCloud.com в Китае на прошлой неделе
28. SSL СЛОМАН
Ему уже ~18 лет и ему пора на покой
TLS заменяет собой SSL
29. ИНТЕРНЕТ
• Запретите использование SSL в приложениях и на
серверах
• Используйте TLS (желательно 1.2) с шифрами AEAD
• Фиксируйте или хотя бы полноценно проверяйте
сертификаты
• Убедитесь что все “обходы” проверок сертификата
отключены/удалены в Release коде
31. СЕРВЕР
• Сохраняйте площадь атаки минимальной
• Не раскрывайте test/qa/dev/debug интерфейсы
• Не доверяйте данным, получаемым от
клиентов
• Обеспечьте защиту передачи данных:
• TLS (1.2) со стойкими AEAD-шифрами