Как стать автором
Обновить

Распространенная уязвимость в приложениях с Touch ID

Время на прочтение3 мин
Количество просмотров6.3K

Вход по отпечатку пальца в устройства Apple и приложения сегодня фактически является стандартом. Это существенно удобнее, чем набирать коды, а также выглядит безопасным.


Оказывается, получить доступ почти к любому приложению с Touch ID легко, для этого достаточно знать только пароль от блокировки (passcode) самого устройства от Apple, сообщает лаборатория «Кадмус».


Зная passcode становится возможным добавить отпечаток пальца в систему, а затем использовать его для входа в приложения, проигнорировав их собственные коды для входа. А если пароль на устройство не установлен, то и приложения получаются абсолютно не защищены. Вообще.




При таких обстоятельствах получается, что при использовании Touch ID интерфейсы авторизации в приложениях просто не играют никакой роли. Passcode из 4 или 6 цифр дает возможность получить полный доступ к любым приложениям.


Были проверены приложения, которые считаются самыми защищенными, т.е. финансовые приложения, банковские, для доступа к удаленным устройствам и компьютерам, интернет-магазины, хранители паролей, записные книжки, таск-менеджеры, облачные хранилища и разные другие.


Как это произошло?


Дело в том, что с момента появления iOS 7 функциональностью Touch ID могла пользоваться только сама Apple. В iOS 8 компания открыла доступ разработчикам к довольно ограниченному API, которое позволяло получить информацию лишь о том, известный отпечаток был использован или нет. Эта функциональность была предназначена скорее для подтверждения операций, а не для авторизации в приложениях, но все решили иначе.


Большинство разработчиков, оценив удобства новинки, довольно быстро реализовали функцию входа по отпечатку в приложения. Хотя технология еще не обеспечивала достаточный уровень безопасности.


В iOS 9 были открыты новые возможности в API для работы с Touch ID и появился метод контроля изменения состава отпечатков, но т.к. в сети уже были распространены примеры кода, эти возможности продолжают игнорировать почти все разработчики. Некоторые из них при обсуждении уязвимости до сих пор с уверенностью сообщают, что это приемлемый риск. Хотя логично, что если passcode достаточно чтобы попасть в приложение, зачем тогда вообще нужен экран авторизации.


Что делать разработчикам?


Исправление этой уязвимости стало возможным начиная еще с iOS 9.


Следуйте рекомендациям Apple, которые доступы в описании технологии и приведены в документации для разработчиков. Примерами приложений с этим типом защиты являются «Сбербанк Онлайн» или AppStore.


Если вы используете для авторизации KeyChain (а это более органично в рамках модели безопасности Apple), то, как правило, достаточно изменить всего одну строку кода, или дописать сценарий, использующий возможность определения изменения состава отпечатков.


Контроль авторизации по отпечатку в iOS 8

CFErrorRef error = NULL;
SecAccessControlRef sacObject = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
kSecAccessControlUserPresence, &error);

Контроль авторизации по отпечатку в iOS 9

CFErrorRef error = NULL;
SecAccessControlRef sacObject = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
kSecAccessControlTouchIDCurrentSet | kSecAccessControlDevicePasscode, &error);

Особенность заключается в использовании атрибута kSecAccessControlTouchIDCurrentSet, который защищает от использования новых отпечатков в iOS.


Эпилог


Удивительно, что чувствительные к безопасности приложения проходят модерацию при их размещении в AppStore.


Также выглядит странным, что информация о новых моделях безопасности iOS не доводится до разработчиков.


Тем не менее, этот тип защиты авторизации возможен и работает начиная с iOS 9.

Теги:
Хабы:
Всего голосов 21: ↑11 и ↓10+1
Комментарии26

Публикации