11.01.2016

Безопасность мобильных устройств. Часть 2 – Использование биометрии в приложениях

image

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

Автор: Lee Neely

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

В первой части я рассказывал о безопасной среде, предназначенной для управления отпечатками. Эта среда называется по-разному, но чаще всего двумя именами: Trusted Execution Environment (TEE) и Secure Enclave. По сути, обе эти среды представляют собой изолированные области, используемые для управления и проверки достоверной информации.

Введение

Global Platform, международная организация по стандартизации, разработала набор стандартов для программной части достоверной среды безопасности, а также для различных служб безопасности. Эти документы были опубликованы в 2010 году, а сами программные интерфейсы, соединяющие достоверное приложение (Trusted Application) и достоверную ОС (Trusted OS), появились в 2011 году. На рисунке ниже, взятого с сайта www.arm.com, описан стандарт TrustZone.

https://blogs.sans.org/pen-testing/files/2015/10/Blog-1.png

Рисунок 1: Наглядная схема, описывающая стандарт TrustZone

С появлением этого стандарта компании Apple и Samsung начали выпускать разработки на базе безопасного микроядра, находящегося в прикладном сопроцессоре (application coprocessor). Процессор, использующий стандарт TrustZone, позволяет изолировать аппаратную часть для выполнения безопасных операций. Даже если вы получили неограниченные права в операционной системе или сделали джейлбрейк, это никак не повлияет на безопасное микроядро.

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

Детали реализации платформы в устройствах от Apple

Компания Apple представила сопроцессор Secure Enclave вместе с iPhone 5S, где появился Touch ID и процессор A7. Secure Enclave использует зашифрованную память, аппаратный генератор случайных чисел и микроядро на базе семейства L4 (с модификациями от Apple). Во время производства сопроцессору Secure Enclave присваивается уникальный идентификатор (Unique ID; UID), который, предположительно, даже не знает Apple. Во время запуска устройства создается эфемерный ключ на основе UID, который затем используется для шифрования памяти, принадлежащей Secure Enclave. Данные, относящиеся к Secure Enclave, которые записаны в файловую систему, шифруются при помощи ключа, связанного с UID и бесповторного счетчика (anti-replay counter). Во время запуска устройства сопроцессор Secure Enclave также использует процесс безопасной загрузки, чтобы удостовериться, что программное обеспечение проверено и подписано компанией Apple. Если проверка на целостность окажется неудачной, устройство переходит в режим обновления прошивки, и вы должны восстановить заводские настройки.

Доступ к Touch ID из приложений

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

Элементы хранилища keychain также можно защитить посредством Touch ID. Secured Enclave будет выдавать информацию лишь при совпадении отпечатков или пароля. У разработчиков имеются средства, во-первых, для проверки того, что пароль установлен пользователем и, соответственно, во-вторых, для аутентификации и разблокировки элементов из keychain при помощи Touch ID.

Apple API

На первый взгляд, может показаться, что получить доступ к Touch ID довольно сложно. Однако компания Apple предоставила соответствующий пример кода через Apple iOS Developer Library. Примечание: загрузка iOS SDK возможна только при наличии членства в Apple Developer Program.

Используя примеры кода из Local Authentication Framework, можно легко внедрить в приложение аутентификацию при помощи Touch ID:

https://blogs.sans.org/pen-testing/files/2015/07/Blog-2.2.png

Рисунок 2: Пример кода для внедрения аутентификации через Touch ID

Детали реализации платформы в устройствах от Samsung

В устройствах компании Samsung появилась достоверная среда выполнения (Trusted Execution Environment), начиная с Galaxy SIII. Samsung использует микроядро Mobicore, разработанное компанией Giesecke & Devrient GmbH (G&D). Микроядро использует расширение TrustZone у процессоров на базе архитектуры ARM для создания отдельной среды, где выполняются программы и хранятся данные, которая находится рядом с операционной системой устройства. Эта ограниченная среда и называется Trusted Execution Environment. Безопасное приложение, запускаемое внутри Mobicore, называется trustlet. Приложения взаимодействуют с trustlet’ами через библиотеку Mobicore, службу и драйвера устройства.

Хотя разработчики и могут создать свой собственный trustlet, это приложение должно быть встроено в Mobicore компанией G&D.

На рисунке ниже показана архитектура микроядра Mobicore:

https://blogs.sans.org/pen-testing/files/2015/10/Blog-2.png

Рисунок 3: Архитектура Mobicore

Доступ к Samsung Fingerprint Scanner из приложений

Samsung Fingerprint Scanner может использоваться при авторизации в веб-приложениях и верификации учетной записи в Samsung. Кроме того, сканер отпечатков можно внедрить в приложение, предназначенное для работы с платежной системой Samsung Pay.

Схема работы авторизации на основе отпечатков выглядит следующим образом:

  1. Пользователь открывает приложение (которое использует отпечатки).
  2. Пользователь пытается пройти авторизацию (например, в платежной системе).
  3. Приложение запускает Trustlet, отвечающий за работу с отпечатками.
  4. Поверх текущего экрана появляется пользовательский интерфейс для считывания отпечатков.
  5. Сканер принимает отпечаток.
  6. Trustlet сравнивает отпечаток с эталоном, полученным во время регистрации, и отправляет в приложение результат проверки.
  7. Процесс авторизации завершается.

Samsung API

Для работы с отпечатками необходимо использовать Pass SDK, который совместим с сенсорами типа Swipe (S5, Note 4) и Touch (S6). Pass SDK позволяет проверять отпечатки, но и имеет механизмы добавления и даже вызова обрабатываемых исключений в случае, если ваше приложение запущенно на устройстве, которое не поддерживает сканер отпечатков.

На рисунке ниже показан пример кода из Pass SDK, позволяющий выполнить аутентификацию при помощи отпечатка:

https://blogs.sans.org/pen-testing/files/2015/10/Blog-3.png

Рисунок 4: Пример кода, реализующего механизм аутентификации при помощи отпечатков

Как скомпрометировать систему аутентификации на основе отпечатков

Теперь, когда мы познакомились с архитектурой, у вас, вероятно, возник вопрос, как скомпрометировать эту систему и какие риски.

Первый способ – прямая атака на базу данных с отпечатками. Команда FireEye обнаружила, что смартфоны HTC хранят базу отпечатков в файле, доступном всем на чтение и запись. То есть любое приложение может читать и модифицировать содержимое этого файла. Позже были выпущены отчеты о патчах, касаемо данной уязвимости.

Второй способ – вмешательство во взаимодействие между сканером отпечатков и безопасной средой. Если вы подцепитесь к нужному процессу, то сможете собрать коллекцию отпечатков для доступа к устройству или даже пополнить базу своими собственными отпечатками. И снова команда FireEye продемонстрировала методы компрометирования, а разработчики выпустили патчи.

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

Ди Шен (Di Shen) на конференции Black Hat 2015 презентовал метод, использующий бреши в TEE OS и драйвере на устройствах Huawei на базе чипсета Huawie HiSilicon. При помощи этого метода можно изменять достоверную память, инжектировать шеллкод, получать доступ к отпечаткам и выполнять другие трюки. Но здесь необходимо иметь права суперпользователя.

Наиболее частая причина присутствия уязвимостей – несвоевременная установка патчей. В частности, эта проблема имеется у владельцев устройств на базе Android. 5 августа компания Google анонсировала старт ежемесячных обновлений по технологии Over the Air (OTA) для устройств Nexus. В тот же день компания Samsung также сделала подобное заявление. Компания Samsung ведет переговоры о сотрудничестве касательно обновлений с мобильными операторами по всему миру. Другие производители устройств тоже планируют присоединиться к этой акции. Важно упомянуть об обновлениях для устаревших систем. Обычно для Android, в лучшем случае, выпускаются патчи в течение 18 месяцев после окончания продаж устройства. В то же время, Apple iOS 8.4.1 поддерживает устройства iPhone 4s, выпущенные 4 года назад. После того как вы выбрали платформу для обновлений, своевременно проверяйте выход новых патчей и обновляйте свою систему.

Существуют различные сервисы, информирующие о выходе обновлений. Компания Google недавно создала сервис Android Security Updates Google Group. Компания Apple оповещает о выходе обновлений в специальном разделе или в рассылке.

Заключение

Если вы хотите использовать биометрию на устройстве или в приложении, учитывайте все риски, как и в случае с внешней службой аутентификации. Сканеры отпечатков до сих пор находятся в поле зрения злоумышленников (см. Часть 1). Прежде чем использовать любую внешнюю службу аутентификации на устройстве либо в приложении, всегда выполняйте проверки на целостность. Кроме того, не забывайте о физической безопасности мобильного устройства. Защищайте свой смартфон так же как кошелек, набитый банкнотами.

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

Можно пойти еще дальше и выбрать двухуровневую защиту. Например, если с важным корпоративным приложением работает команда администраторов мобильных устройств. В этом случае для доступа к приложению можно использовать и пароль и биометрическую аутентификацию. С другой стороны, если с приложением работают конечные пользователи, следует хорошо подумать, прежде чем использовать двухуровневую защиту.

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

Ссылки


Apple iOS Security Guide: https://www.apple.com/business/docs/iOS_Security_Guide.pdf

Brute Force Android PIN:
http://www.brotherton.com/main/androidpinbruteforce

Samsung Fingerprint 4.4: http://www.samsung.com/us/support/howtoguide/N0000011/16610/225807

Samsung S5 Fingerprint Hacked:
http://www.tomsguide.com/us/samsung-galaxy-s5-fingerprint-hack,news-18655.html

https://www.pentestpartners.com/blog/brute-forcing-android-pins-or-why-you-should-never-enable-adb-part-2/

Samsung/Apple face-off:
http://www.cio.com/article/2454883/consumer-technology/fingerprint-faceoff-apple-touch-id-vs-samsung-finger-scanner.html

Improvements to iPhone 6 Fingerprint scanner:
http://9to5mac.com/2014/09/24/hack-test-shows-apple-improved-security-and-reliability-of-still-not-perfect-touch-id-sensor-in-iphone-6/

CCC how-to make a fake fingerprint: http://dasalte.ccc.de/biometrie/fingeradbdruck_kopieren.en

FAR/FRR Graph: http://www.securitysales.com/article/knowing-how-biometrics-can-be-beaten-helps-you-win

Entrust Blog:
http://www.entrust.com/bypassing-fingerprint-biometrics-nothing-new/

iOS Authenticate with Touch ID: https://developer.apple.com/library/ios/documentation/LocalAuthentication/Reference/LocalAuthentication_Framework/