#mbltdev: Безопасность ios-устройств (viaforensics)
DESCRIPTION
#MBLTdev: Конференция мобильных разработчиков Спикер: Андрей Беленко Ведущий инженер по безопасности , viaForensics http://mbltdev.ru/TRANSCRIPT
ТИПИЧНЫЕ ПРОБЛЕМЫ БЕЗОПАСНОСТИ В
ПРИЛОЖЕНИЯХ ДЛЯ IOSАндрей Беленко
viaForensics
Интернет
ПРИЛОЖЕНИЕ
What can go wrong?
ПРИЛОЖЕНИЕ• Небезопасное хранение данных
• Утечки данных
• “Неправильная” криптография
• Слабая защита исполняемых файлов
• Многое другое. См. OWASP Mobile Top 10
ДАННЫЕ ПРИЛОЖЕНИЯ
• Приложение выполняется в песочнице
• Приложения не имеют доступа к “чужим” песочницам
Это не означает что данные недоступны извне
ДАННЫЕ ПРИЛОЖЕНИЯ• File Sharing (через iTunes или Xcode)
• iTunes Backup (включая Keychain!)
• iCloud
• com.apple.mobile.house_arrest
• Джейлбрейк
Доступ к песочнице приложения с помощью iExplorer
Данные учетной записи хранятся в NSUserDefaults
УЧЕТНЫЕ ЗАПИСИ• Никогда не храните в NSUserDefaults или
CoreData
• Используйте Keychain
• Используйте наиболее строгий класс защиты при котором приложение еще работает
КОНФИДЕНЦИАЛЬНЫЕ ДАННЫЕ
• Избегайте использования NSUserDefaults и CoreData
• Используйте Data Protection
• Используйте наиболее строгий класс защиты при котором приложение еще работает
• Используя NSUserDefaults или CoreData обеспечьте дополнительную защиту
КЛАССЫ ЗАЩИТЫФайл
NSFileProtection…Keychain
kSecAttrAccessible…
None Always(ThisDeviceOnly)
Complete WhenUnlocked(ThisDeviceOnly)
CompleteUnlessOpen
CompleteUntilFirstUserAuthentication AfterFirstUnlock(ThisDeviceOnly)
УТЕЧКИ ДАННЫХ• Логи
• Удалите (или #ifdef) вывод логов в Release конфигурации
• Cookies и кэши
• См. NSURLCache, NSHTTPCookieStorage
• Указывайте политики при создании запросов
• Скриншоты• applicationDidEnterBackground:
КРИПТОГРАФИЯ• Не используйте статические ключи
• Не реализуйте криптографию самостоятельно
• Не придумывайте собственные алгоритмы или протоколы
• Если нестандартная криптография необходима – найдите профессионала
ИСПОЛНЯЕМЫЕ ФАЙЛЫ• Борьба с эксплоитами
• -fstack-protector(-strong, -all)
• ASLR
• DRM, интеллектуальная собственность
• Обфускация
ОБФУСКАЦИЯ?
ОБФУСКАЦИЯ• Strip; минимум строк в исполняемом файле
• C++ вместо Objective-C
• Static linking
• https://github.com/obfuscator-llvm
• http://tigress.cs.arizona.eduДелайте это только если Вы понимаете что делаете и если это Вам
действительно нужно!
Интернет
ИНТЕРНЕТ• Никогда не используйте незащищенные протоколы (такие как HTTP)
• Используйте их защищенный вариант (HTTPS)
• Используйте их правильно (да, это сложная часть)
КАК УСТРОЕН SSL?Соединение
Сертификат ОК?
Продолжить сессию
да
нет: завершить сессию
N.B.: на самом деле SSL намного более сложный протокол
СЕРТИФИКАТЫ• Проверка сертификата чрезвычайно важна
• Не используйте самоподписанные сертификаты в production
• Если возможно, используйте фиксацию (“pinning”) сертификатов
ПРОВЕРКА СЕРТИФИКАТА
Доверять Не доверять
да нет
БД доверенных ЦС
iOS 8: ~ 250 ЦС
Сертификат подписан одним из доверенных центров сертификации?
ПРОВЕРКА СЕРТИФИКАТА• Любой, кто может подписывать сертификаты одним из доверенных ЦС может организовать MITM
• Это не уязвимость протокола; просто PKI так устроено
• Вероятно, именно это произошло с iCloud.com в Китае на прошлой неделе
ФИКСАЦИЯ СЕРТИФИКАТА
Доверять Не доверять
да нет
Приложение ожидает именно этот сертификат?
ФИКСАЦИЯ СЕРТИФИКАТА• Удостоверяет что приложение общается с владельцем Вашего закрытого ключа:
• или с Вами…
• …или с кем-то кто серьезно “взломал” Ваш бэкэнд
• Подменяет хранилище корневых ЦС
НО ЭТО НЕ ВСЕ…
SSL СЛОМАНЕму уже ~18 лет и ему пора на покой
TLS заменяет собой SSL
ИНТЕРНЕТ• Запретите использование SSL в приложениях и на серверах
• Используйте TLS (желательно 1.2) с шифрами AEAD
• Фиксируйте или хотя бы полноценно проверяйте сертификаты
• Убедитесь что все “обходы” проверок сертификата отключены/удалены в Release коде
Интернет
СЕРВЕР• Сохраняйте площадь атаки минимальной
• Не раскрывайте test/qa/dev/debug интерфейсы
• Не доверяйте данным, получаемым от клиентов
• Обеспечьте защиту передачи данных:
• TLS (1.2) со стойкими AEAD-шифрами
Q & A
СПАСИБО[email protected]@abelenko