SlideShare a Scribd company logo
1 of 58
Download to read offline
Безопасность мобильных
приложений
Андрей Беленко Security PM Skype
Что Вы Узнаете?
❖ Как защитить данные на устройстве
❖ iOS Data Protection
❖ Keychain
❖ Как защитить данные при передаче по сети
❖ TLS и его проблемы
❖ ATS
Зачем (и от кого) защищать данные?
Приложениям нужно хранить данные
Типичные ошибки
❖ Хранение паролей/конфиденциальной информации в NSUserDefaults/
UserDefaults, SQLite (например через CoreData), и т.п.
❖ Использование NSFileProtectionNone/kSecAttrAccessibleAlways
❖ “Утечка” паролей/конфиденциальной информации в логи
❖ Пароли/конфиденциальная информация на скриншотах
iOS Data Protection (1)
❖ Различные классы защиты
❖ Шифрование файлов
❖ Keychain для хранения паролей и ключей
❖ Шифрование может быть “привязано” к пасскоду
❖ Шифрование резервных копий
❖ Доступно с iOS 4
Класс защиты определяет доступность
защищаемых данных
Класс защиты определяет доступность
защищаемых данных
Классы защиты
kSecAttrAccessibleAlways[ThisDeviceOnly]
&
NSFileProtectionNone
Классы защиты
kSecAttrAccessibleWhenUnlocked[ThisDeviceOnly]
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
&
NSFileProtectionComplete
NSFileProtectionCompleteUnlessOpen
Классы защиты
kSecAttrAccessibleAfterFirstUnlock[ThisDeviceOnly]
&
NSFileProtectionCompleteUntilFirstUserAuthentication
Как определить доступность?
if UIApplication.shared.isProtectedDataAvailable {
<#code#>
}
Как определить доступность?
class AppDelegate: UIApplicationDelegate {
func applicationProtectedDataDidBecomeAvailable(_ application: UIApplication)
{
<#code#>
}
func applicationProtectedDataWillBecomeUnavailable(_ application: UIApplication)
{
<#code#>
}
}
Как установить класс защиты?
Как установить класс защиты?
// Create a new file with a given protection class
FileManager.default.createFile(atPath: path,
contents: data,
attributes: [FileAttributeKey.protectionKey.rawValue:
FileProtectionType.complete])
// Change protection class on an existing file
FileManager.default.setAttributes([.protectionKey: FileProtectionType.complete],
ofItemAtPath: path)
// Write Data object to a file and set given protection class
data.write(to: url,
options: .completeFileProtection)
Как установить класс защиты?
let attributes = [
kSecAttrAccessible: kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
// ...
] as NSDictionary
SecItemAdd(attributes as CFDictionary, nil)
iOS Data Protection (2)
❖ Secure Enclave
❖ Touch ID
❖ LocalAuthentication
❖ Keychain ACLs
❖ iPhone 5s
Secure Enclave
❖ Встроенный защищенный со-процессор
❖ Отдельная ОС, secure boot
❖ A7+(iPhone 5s и новее)
❖ Отвечает за Touch ID, проверку пасскода, шифрование данных,
Keychain ACL
Touch ID в Вашем
приложении?
LocalAuthentication
Framework
Keychain Access Control
Lists
LocalAuthentication
let context = LAContext()
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,
error: nil)
{
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,
localizedReason: <# Reason #>) {
(success, error) in
if success {
<# User authentication successful #>
}
}
}
Keychain ACL задаёт условия при которых
ОС вернет данные из Keychain
Keychain ACL
kSecAccessControlUserPresence
Keychain ACL
kSecAccessControlTouchIDAny
Keychain ACL
kSecAccessControlTouchIDCurrentSet
Keychain ACL
kSecAccessControlDevicePasscode
Keychain ACL
kSecAccessControlApplicationPassword
Keychain ACL
kSecAccessControlOr, kSecAccessControlAnd
Keychain ACL
let acl = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleWhenUnlocked,
.touchIDCurrentSet,
nil)
let attributes = [
kSecAttrAccessControl: acl!,
// ...
] as NSDictionary
SecItemAdd(attributes as CFDictionary, nil)
Keychain ACL
let acl = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
[.touchIDCurrentSet, .applicationPassword],
nil)
let context = LAContext()
context.setCredential("my-secret-password".data(using: .utf8),
type: .applicationPassword)
let attributes = [
kSecAttrAccessControl: acl!,
kSecUseAuthenticationContext: context
// ...
] as NSDictionary
SecItemAdd(attributes as CFDictionary, nil)
Data Protection защищает данные
на устройстве
Data Protection не поможет если данные
покидают устройство
(бэкап, синхронизация, и т.п.)
“Утечки” данных
iTunes Backup iCloud
File Sharing Джейлбрейк
iTunes Backup
❖ <app>/Documents включается в бэкап
❖ <app>/Library/Caches и <app>/tmp не включаются в бэкап
❖ NSURLIsExcludedFromBackupKey исключает файл из бэкапа
❖ Из зашифрованного бэкапа можно извлечь записи Keychain, кроме
тех, для которых установлен класс …ThisDeviceOnly
File Sharing
❖ Доступ к “песочнице” приложения
❖ Был включен по умолчанию до iOS 8.3
❖ Все еще включен по умолчанию в бета-версиях iOS
❖ В iOS 8.4+ включен только для приложений с
UIFileSharingEnabled
Как защитить данные?
❖ Data Protection не поможет защитить данные вне устройства
❖ Используйте дополнительный уровень шифрования
❖ Например, SQLCipher
❖ Или SQLite Encryption Extension
❖ Ключ/пароль от БД храните в Keychain с надежным классом
защиты
Приложениям нужно передавать
данные
App Transport Security
В теории:
❖ Блокирует небезопасные соединения
❖ Позволяет создавать исключения
App Transport Security
На практике:
App Transport Security
❖ WWDC 2016: с января 2017 исключения потребуют обоснования
и дополнительного рассмотрения при подаче в AppStore
❖ NSAllowsArbitraryLoads
❖ NSAllowsArbitraryLoadsForMedia
❖ NSAllowsArbitraryLoadsInWebContent
❖ NSExceptionAllowsInsecureHTTPLoads
❖ NSExceptionMinimumTLSVersion
❖ SFSafariViewController не требует исключений
❖ 2016-12-21: Apple отложила введение этого правила
App Transport Security
❖ Поддержка ATS требует изменений на сервере
❖ Действительный сертификат ключа RSA (2048 бит и более)
или ECC (256 бит и более), SHA-256
❖ TLS 1.2
❖ ECDHE
❖ https://developer.apple.com/
Transport Layer Security
❖ TLS (для TCP) и DTLS (для UDP) являются стандартами для
защиты данных при передаче по сети
❖ Проблема: (D)TLS зависит от сертификатов
Сертификаты
❖ iOS 10 содержит 172 доверенных сертификата
❖ https://support.apple.com/en-us/HT207177
❖ iOS “верит” всем сертификатам, подписанным любым из этих
сертификатов
Certificate Pinning
❖ Ограничивает список доверенных сертификатов для данного
хоста/сервиса
❖ “Сертификат сервера myservice.com имеет отпечаток 012345…”
❖ “Сертификат сервера otherservice.com выпущен Let's Encrypt”
❖ Требует аккуратного обращения — можно невзначай “сломать”
клиентов
Certificate Pinning
❖ Легко допустить ошибки
❖ Реализация в AFNetworking, например, случайно отключила
валидацию сертификатов
❖ https://datatheorem.github.io/TrustKit/
Certificate Transparency
❖ Журналирует выпущенные сертификаты
❖ Не позволяет удалить сертификат из журнала
❖ Клиент может проверить есть ли сертификат сервера в CT
❖ https://www.certificate-transparency.org/
ATS + CT
Jailbreak
Приложения и Jailbreak
❖ Не полагайтесь на jailbreak detection на 100%
❖ Принимайте все критичные решения вне приложения
XcodeGhost
@abelenko
Андрей Беленко Security PM Skype
Вопросы?
andrey.belenko@gmail.com

More Related Content

What's hot

Повсеместная безопасность Cisco. Анонс новых решений. 3 ноября 2015
Повсеместная безопасность Cisco. Анонс новых решений. 3 ноября 2015Повсеместная безопасность Cisco. Анонс новых решений. 3 ноября 2015
Повсеместная безопасность Cisco. Анонс новых решений. 3 ноября 2015Cisco Russia
 
Oracle Security. Сергей Базылко: "Противодействие внутренним угрозам до, во в...
Oracle Security. Сергей Базылко: "Противодействие внутренним угрозам до, во в...Oracle Security. Сергей Базылко: "Противодействие внутренним угрозам до, во в...
Oracle Security. Сергей Базылко: "Противодействие внутренним угрозам до, во в...Expolink
 
Обзор новой версии Cisco AnyConnect 4.2
Обзор новой версии Cisco AnyConnect 4.2Обзор новой версии Cisco AnyConnect 4.2
Обзор новой версии Cisco AnyConnect 4.2Cisco Russia
 
алексей лукацкий 1
алексей лукацкий 1алексей лукацкий 1
алексей лукацкий 1Positive Hack Days
 
Обнаружение аномальной активности в сети
Обнаружение аномальной активности в сетиОбнаружение аномальной активности в сети
Обнаружение аномальной активности в сетиCisco Russia
 
Cоблюдение требований законодательства с помощью сертифицированных средств бе...
Cоблюдение требований законодательства с помощью сертифицированных средств бе...Cоблюдение требований законодательства с помощью сертифицированных средств бе...
Cоблюдение требований законодательства с помощью сертифицированных средств бе...Andrey Akulov
 

What's hot (7)

Повсеместная безопасность Cisco. Анонс новых решений. 3 ноября 2015
Повсеместная безопасность Cisco. Анонс новых решений. 3 ноября 2015Повсеместная безопасность Cisco. Анонс новых решений. 3 ноября 2015
Повсеместная безопасность Cisco. Анонс новых решений. 3 ноября 2015
 
Oracle Security. Сергей Базылко: "Противодействие внутренним угрозам до, во в...
Oracle Security. Сергей Базылко: "Противодействие внутренним угрозам до, во в...Oracle Security. Сергей Базылко: "Противодействие внутренним угрозам до, во в...
Oracle Security. Сергей Базылко: "Противодействие внутренним угрозам до, во в...
 
Обзор новой версии Cisco AnyConnect 4.2
Обзор новой версии Cisco AnyConnect 4.2Обзор новой версии Cisco AnyConnect 4.2
Обзор новой версии Cisco AnyConnect 4.2
 
алексей лукацкий 1
алексей лукацкий 1алексей лукацкий 1
алексей лукацкий 1
 
Обнаружение аномальной активности в сети
Обнаружение аномальной активности в сетиОбнаружение аномальной активности в сети
Обнаружение аномальной активности в сети
 
Cоблюдение требований законодательства с помощью сертифицированных средств бе...
Cоблюдение требований законодательства с помощью сертифицированных средств бе...Cоблюдение требований законодательства с помощью сертифицированных средств бе...
Cоблюдение требований законодательства с помощью сертифицированных средств бе...
 
Safenet etoken 5100
Safenet etoken 5100Safenet etoken 5100
Safenet etoken 5100
 

Similar to Андрей Беленко

Андрей Беленко "Безопасность мобильных приложений "
Андрей Беленко "Безопасность мобильных приложений "Андрей Беленко "Безопасность мобильных приложений "
Андрей Беленко "Безопасность мобильных приложений "IT Event
 
AnyConnect, NVM и AMP
AnyConnect, NVM и AMPAnyConnect, NVM и AMP
AnyConnect, NVM и AMPCisco Russia
 
#MBLTdev: Знакомство с codesign (e-Legion)
#MBLTdev: Знакомство с codesign (e-Legion)#MBLTdev: Знакомство с codesign (e-Legion)
#MBLTdev: Знакомство с codesign (e-Legion)e-Legion
 
обеспечение информационной безопасности. I psec, ssl, web
обеспечение информационной безопасности. I psec, ssl, webобеспечение информационной безопасности. I psec, ssl, web
обеспечение информационной безопасности. I psec, ssl, webNataliya Sobaka
 
Cisco Threat Defense (Cisco Stealthwatch)
Cisco Threat Defense (Cisco Stealthwatch)Cisco Threat Defense (Cisco Stealthwatch)
Cisco Threat Defense (Cisco Stealthwatch)Cisco Russia
 
Защита мобильных пользователей
Защита мобильных пользователейЗащита мобильных пользователей
Защита мобильных пользователейCisco Russia
 
Решения для защиты корпоративных и коммерческих цод
Решения для защиты корпоративных и коммерческих цод Решения для защиты корпоративных и коммерческих цод
Решения для защиты корпоративных и коммерческих цод Denis Batrankov, CISSP
 
Какими функциями должен обладать современный NGFW?
Какими функциями должен обладать современный NGFW?Какими функциями должен обладать современный NGFW?
Какими функциями должен обладать современный NGFW?Aleksey Lukatskiy
 
Dv w2k-sec-concepts
Dv w2k-sec-conceptsDv w2k-sec-concepts
Dv w2k-sec-conceptstrenders
 
Визуализация взломов в собственной сети
Визуализация взломов в собственной сетиВизуализация взломов в собственной сети
Визуализация взломов в собственной сетиDenis Batrankov, CISSP
 
Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...Cisco Russia
 
Василий Лымарь "Использование протокола IPSec для защиты данных, передаваемых...
Василий Лымарь "Использование протокола IPSec для защиты данных, передаваемых...Василий Лымарь "Использование протокола IPSec для защиты данных, передаваемых...
Василий Лымарь "Использование протокола IPSec для защиты данных, передаваемых...Dmitry Savchenko
 
Краткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat DefenseКраткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat DefenseCisco Russia
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
Device lock - Эффективная защита от утечек данных
Device lock - Эффективная защита от утечек данныхDevice lock - Эффективная защита от утечек данных
Device lock - Эффективная защита от утечек данныхExpolink
 
Device lock (code-ib пермь)
 Device lock (code-ib пермь) Device lock (code-ib пермь)
Device lock (code-ib пермь)Expolink
 
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспекты
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспектыОблака в Украине и ЕС как инструменты защиты ИТ: практические аспекты
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспектыDe Novo
 
Безопасность и виртуализация в центрах обработки данных (часть 1)
Безопасность и виртуализация в центрах обработки данных (часть 1)Безопасность и виртуализация в центрах обработки данных (часть 1)
Безопасность и виртуализация в центрах обработки данных (часть 1)Cisco Russia
 
Идентификация и контроль доступа в приложениях Windows Azure
Идентификация и контроль доступа в приложениях Windows AzureИдентификация и контроль доступа в приложениях Windows Azure
Идентификация и контроль доступа в приложениях Windows AzureAnton Vidishchev
 

Similar to Андрей Беленко (20)

Андрей Беленко "Безопасность мобильных приложений "
Андрей Беленко "Безопасность мобильных приложений "Андрей Беленко "Безопасность мобильных приложений "
Андрей Беленко "Безопасность мобильных приложений "
 
AnyConnect, NVM и AMP
AnyConnect, NVM и AMPAnyConnect, NVM и AMP
AnyConnect, NVM и AMP
 
#MBLTdev: Знакомство с codesign (e-Legion)
#MBLTdev: Знакомство с codesign (e-Legion)#MBLTdev: Знакомство с codesign (e-Legion)
#MBLTdev: Знакомство с codesign (e-Legion)
 
обеспечение информационной безопасности. I psec, ssl, web
обеспечение информационной безопасности. I psec, ssl, webобеспечение информационной безопасности. I psec, ssl, web
обеспечение информационной безопасности. I psec, ssl, web
 
Cisco Threat Defense (Cisco Stealthwatch)
Cisco Threat Defense (Cisco Stealthwatch)Cisco Threat Defense (Cisco Stealthwatch)
Cisco Threat Defense (Cisco Stealthwatch)
 
Защита мобильных пользователей
Защита мобильных пользователейЗащита мобильных пользователей
Защита мобильных пользователей
 
Решения для защиты корпоративных и коммерческих цод
Решения для защиты корпоративных и коммерческих цод Решения для защиты корпоративных и коммерческих цод
Решения для защиты корпоративных и коммерческих цод
 
Какими функциями должен обладать современный NGFW?
Какими функциями должен обладать современный NGFW?Какими функциями должен обладать современный NGFW?
Какими функциями должен обладать современный NGFW?
 
ОБИ WLAN
ОБИ WLANОБИ WLAN
ОБИ WLAN
 
Dv w2k-sec-concepts
Dv w2k-sec-conceptsDv w2k-sec-concepts
Dv w2k-sec-concepts
 
Визуализация взломов в собственной сети
Визуализация взломов в собственной сетиВизуализация взломов в собственной сети
Визуализация взломов в собственной сети
 
Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...
 
Василий Лымарь "Использование протокола IPSec для защиты данных, передаваемых...
Василий Лымарь "Использование протокола IPSec для защиты данных, передаваемых...Василий Лымарь "Использование протокола IPSec для защиты данных, передаваемых...
Василий Лымарь "Использование протокола IPSec для защиты данных, передаваемых...
 
Краткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat DefenseКраткий обзор Cisco Cyber Threat Defense
Краткий обзор Cisco Cyber Threat Defense
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Device lock - Эффективная защита от утечек данных
Device lock - Эффективная защита от утечек данныхDevice lock - Эффективная защита от утечек данных
Device lock - Эффективная защита от утечек данных
 
Device lock (code-ib пермь)
 Device lock (code-ib пермь) Device lock (code-ib пермь)
Device lock (code-ib пермь)
 
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспекты
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспектыОблака в Украине и ЕС как инструменты защиты ИТ: практические аспекты
Облака в Украине и ЕС как инструменты защиты ИТ: практические аспекты
 
Безопасность и виртуализация в центрах обработки данных (часть 1)
Безопасность и виртуализация в центрах обработки данных (часть 1)Безопасность и виртуализация в центрах обработки данных (часть 1)
Безопасность и виртуализация в центрах обработки данных (часть 1)
 
Идентификация и контроль доступа в приложениях Windows Azure
Идентификация и контроль доступа в приложениях Windows AzureИдентификация и контроль доступа в приложениях Windows Azure
Идентификация и контроль доступа в приложениях Windows Azure
 

More from CodeFest

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита ПрокоповCodeFest
 
Денис Баталов
Денис БаталовДенис Баталов
Денис БаталовCodeFest
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена ГальцинаCodeFest
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр КалашниковCodeFest
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина ИвановаCodeFest
 
Marko Berković
Marko BerkovićMarko Berković
Marko BerkovićCodeFest
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис КортуновCodeFest
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр ЗиминCodeFest
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей КрапивенскийCodeFest
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей ИгнатовCodeFest
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай КрапивныйCodeFest
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим СмирновCodeFest
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим ПугачевCodeFest
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene GroeschkeCodeFest
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван БондаренкоCodeFest
 
Mete Atamel
Mete AtamelMete Atamel
Mete AtamelCodeFest
 

More from CodeFest (20)

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита Прокопов
 
Денис Баталов
Денис БаталовДенис Баталов
Денис Баталов
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена Гальцина
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр Калашников
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина Иванова
 
Marko Berković
Marko BerkovićMarko Berković
Marko Berković
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис Кортунов
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр Зимин
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей Крапивенский
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей Игнатов
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай Крапивный
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим Смирнов
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene Groeschke
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван Бондаренко
 
Mete Atamel
Mete AtamelMete Atamel
Mete Atamel
 

Андрей Беленко