Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ТИПИЧНЫЕ ПРОБЛЕМЫ 
БЕЗОПАСНОСТИ В 
ПРИЛОЖЕНИЯХ ДЛЯ IOS 
Андрей Беленко 
viaForensics
Интернет
ПРИЛОЖЕНИЕ 
What can go wrong?
ПРИЛОЖЕНИЕ 
• Небезопасное хранение данных 
• Утечки данных 
• “Неправильная” криптография 
• Слабая защита исполняемых фа...
ДАННЫЕ ПРИЛОЖЕНИЯ 
• Приложение выполняется в песочнице 
• Приложения не имеют доступа к 
“чужим” песочницам 
Это не означ...
ДАННЫЕ ПРИЛОЖЕНИЯ 
• File Sharing (через iTunes или Xcode) 
• iTunes Backup (включая Keychain!) 
• iCloud 
• com.apple.mob...
Доступ к песочнице приложения с помощью iExplorer
Данные учетной записи хранятся в NSUserDefaults
УЧЕТНЫЕ ЗАПИСИ 
• Никогда не храните в NSUserDefaults или 
CoreData 
• Используйте Keychain 
• Используйте наиболее строги...
КОНФИДЕНЦИАЛЬНЫЕ 
ДАННЫЕ 
• Избегайте использования NSUserDefaults и 
CoreData 
• Используйте Data Protection 
• Используй...
КЛАССЫ ЗАЩИТЫ 
Файл 
NSFileProtection… 
Keychain 
kSecAttrAccessible… 
None Always(ThisDeviceOnly) 
Complete WhenUnlocked(...
УТЕЧКИ ДАННЫХ 
• Логи 
• Удалите (или #ifdef) вывод логов в Release 
конфигурации 
• Cookies и кэши 
• См. NSURLCache, NSH...
КРИПТОГРАФИЯ 
• Не используйте статические ключи 
• Не реализуйте криптографию самостоятельно 
• Не придумывайте собственн...
ИСПОЛНЯЕМЫЕ ФАЙЛЫ 
• Борьба с эксплоитами 
• -fstack-protector(-strong, -all) 
• ASLR 
• DRM, интеллектуальная собственнос...
ОБФУСКАЦИЯ?
ОБФУСКАЦИЯ 
• Strip; минимум строк в исполняемом 
файле 
• C++ вместо Objective-C 
• Static linking 
• https://github.com/...
Интернет
ИНТЕРНЕТ 
• Никогда не используйте незащищенные 
протоколы (такие как HTTP) 
• Используйте их защищенный вариант 
(HTTPS) ...
КАК УСТРОЕН SSL? 
Соединение 
Сертификат 
ОК? 
Продолжить сессию 
да 
нет: завершить сессию 
N.B.: на самом деле SSL намно...
СЕРТИФИКАТЫ 
• Проверка сертификата чрезвычайно 
важна 
• Не используйте самоподписанные 
сертификаты в production 
• Если...
ПРОВЕРКА СЕРТИФИКАТА 
да нет 
Доверять Не доверять 
БД доверенных 
ЦС 
iOS 8: ~ 250 ЦС 
Сертификат подписан 
одним из дове...
ПРОВЕРКА СЕРТИФИКАТА 
• Любой, кто может подписывать сертификаты 
одним из доверенных ЦС может 
организовать MITM 
• Это н...
ФИКСАЦИЯ СЕРТИФИКАТА 
Приложение ожидает 
именно этот сертификат? 
да нет 
Доверять Не доверять
ФИКСАЦИЯ СЕРТИФИКАТА 
• Удостоверяет что приложение общается 
с владельцем Вашего закрытого ключа: 
• или с Вами… 
• …или ...
НО ЭТО НЕ ВСЕ…
SSL СЛОМАН 
Ему уже ~18 лет и ему пора на покой 
TLS заменяет собой SSL
ИНТЕРНЕТ 
• Запретите использование SSL в приложениях и на 
серверах 
• Используйте TLS (желательно 1.2) с шифрами AEAD 
•...
Интернет
СЕРВЕР 
• Сохраняйте площадь атаки минимальной 
• Не раскрывайте test/qa/dev/debug интерфейсы 
• Не доверяйте данным, полу...
Q & A
СПАСИБО! 
abelenko@viaforensics.com 
@abelenko
#MBLTdev: Безопасность iOS-устройств (viaForensics)
#MBLTdev: Безопасность iOS-устройств (viaForensics)
Upcoming SlideShare
Loading in …5
×

#MBLTdev: Безопасность iOS-устройств (viaForensics)

1,471 views

Published on

#MBLTdev: Конференция мобильных разработчиков
Спикер: Андрей Беленко
Ведущий инженер по безопасности , viaForensics
http://mbltdev.ru/

Published in: Mobile

#MBLTdev: Безопасность iOS-устройств (viaForensics)

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

×