На прошлой неделе исследователи из Тель-Авивского университета опубликовали научную работу, в которой сообщили об обнаружении серьезных недостатков в системе шифрования данных смартфонов Samsung. Уязвимости, на данный момент исправленные, были найдены в защищенном приложении Keymaster Trusted Application.
![](https://habrastorage.org/r/w1560/webt/yt/lc/0p/ytlc0plr1uxqo9k_xtolh0g5ls8.png)
Компания Samsung на данный момент идентифицировала и закрыла две связанные между собой уязвимости. Первая — CVE-2021-25444 в том самом приложении Keymaster. С помощью повторного использования вектора инициализации у потенциального атакующего имелась возможность «сломать» механизм авторизации, расшифровав секретные ключи. Вторая уязвимость (CVE-2021-25490) позволяет провести аналогичную атаку на более современные смартфоны Samsung, в которых используется слегка модифицированный механизм доставки зашифрованных ключей. Была показана и практическая атака: кража приватных ключей для авторизации на веб-сайтах с использованием протокола FIDO2.
Помимо демонстрации уязвимостей, в работе подробно описывается механизм Trusted Execution Environment, точнее, реализация данного принципа компанией Samsung. TEE противопоставляется окружению REE, Rich Execution Environment, а если проще — операционной системе Android. Модель защиты наиболее критичных данных построена на том, что доверять Android нельзя: система может быть взломана злоумышленником, или сам владелец устройства способен получить на ней права суперпользователя. Окружение TEE должно быть достаточно защищено даже в этих условиях. Соответственно, разные варианты TEE отвечают за наиболее критичную функциональность: управление ключами шифрования данных, подтверждение платежей, авторизация в различных службах, включая идентификацию пользователей в корпоративных сервисах.
Основой TEE в устройствах на базе процессоров ARM (то есть на подавляющем большинстве смартфонов) является технология ARM Trustzone, на аппаратном уровне обеспечивающая разделение ресурсов для TEE и REE, или, в терминах ARM, для окружений Secure World и Normal World. Софт в «защищенной среде» у каждого производителя свой, по сути это отдельная операционная система. У Samsung используется как минимум три разных варианта операционных систем TrustZone (TZOS).
Для связи между Android и различными реализациями TZOS используется элемент Android Keystore, он делает доступным API для отправки запросов и получения данных из TEE. На стороне TEE Samsung используется доверенное приложение (Trusted Application) Keymaster. Предельно упрощенная система работы Keymaster заключается в получении от Android-приложений зашифрованных секретных ключей, которые могут быть расшифрованы только в TEE. Зашифрованные ключи именуются блобами и шифруются с помощью симметричного потокового алгоритма AES-GCM.
Потоковый шифр по умолчанию требует уникального вектора инициализации — случайного набора данных, используемого в процессе шифрования. Если вектор инициализации используется повторно, данные можно расшифровать. Именно это произошло в защищенном окружении телефонов Samsung. Исследователи обнаружили, что они могут напрямую из Android-приложения задавать вектор инициализации. Из четырех протестированных смартфонов лишь самый старый, Samsung Galaxy S8, оказался не подвержен атаке, так как игнорирует передаваемый из приложения вектор инициализации. Подвержены смартфоны S9, S10, S20 и S21, но со своими нюансами. Формат тех самых «блобов» (зашифрованных ключей) периодически меняется, и их самый свежий вариант не подвержен уязвимости. Но можно сделать «даунгрейд» до более раннего формата «блоба» и эксплуатировать уже его.
Была также показана практическая атака на механизм авторизации на веб-сайтах по протоколу FIDO2. Он зависит от «безопасного окружения» в смартфоне, а модель безопасности протокола исходит из того, что секретные ключи авторизации нельзя клонировать. Используя уязвимость, приватный ключ можно похитить и авторизоваться на другом устройстве без ведома владельца, как показано на скриншотах ниже.
![](https://habrastorage.org/r/w1560/webt/c5/c7/lf/c5c7lf9b2ygvlu7qtvsuhqqdt9g.png)
По мнению авторов работы, проблема заключается в непрозрачности работы защищенного программного обеспечения, разрабатываемого такими вендорами, как Samsung или Qualcomm. В научной среде экспертов по криптографии нормой является независимый аудит открытых алгоритмов шифрования для поиска и устранения уязвимостей. В данном случае исследователям пришлось заниматься реверс-инжинирингом фирменного ПО. К счастью, проблема решилась обновлением ПО. Для таких устройств, как Samsung Galaxy S10, S20 и S21, была выключена поддержка legacy-блобов. В моделях S9, J7, A6 Plus и ряде других была заблокирована возможность передачи произвольного вектора инициализации.
![](https://habrastorage.org/webt/yt/lc/0p/ytlc0plr1uxqo9k_xtolh0g5ls8.png)
Компания Samsung на данный момент идентифицировала и закрыла две связанные между собой уязвимости. Первая — CVE-2021-25444 в том самом приложении Keymaster. С помощью повторного использования вектора инициализации у потенциального атакующего имелась возможность «сломать» механизм авторизации, расшифровав секретные ключи. Вторая уязвимость (CVE-2021-25490) позволяет провести аналогичную атаку на более современные смартфоны Samsung, в которых используется слегка модифицированный механизм доставки зашифрованных ключей. Была показана и практическая атака: кража приватных ключей для авторизации на веб-сайтах с использованием протокола FIDO2.
Помимо демонстрации уязвимостей, в работе подробно описывается механизм Trusted Execution Environment, точнее, реализация данного принципа компанией Samsung. TEE противопоставляется окружению REE, Rich Execution Environment, а если проще — операционной системе Android. Модель защиты наиболее критичных данных построена на том, что доверять Android нельзя: система может быть взломана злоумышленником, или сам владелец устройства способен получить на ней права суперпользователя. Окружение TEE должно быть достаточно защищено даже в этих условиях. Соответственно, разные варианты TEE отвечают за наиболее критичную функциональность: управление ключами шифрования данных, подтверждение платежей, авторизация в различных службах, включая идентификацию пользователей в корпоративных сервисах.
Основой TEE в устройствах на базе процессоров ARM (то есть на подавляющем большинстве смартфонов) является технология ARM Trustzone, на аппаратном уровне обеспечивающая разделение ресурсов для TEE и REE, или, в терминах ARM, для окружений Secure World и Normal World. Софт в «защищенной среде» у каждого производителя свой, по сути это отдельная операционная система. У Samsung используется как минимум три разных варианта операционных систем TrustZone (TZOS).
Для связи между Android и различными реализациями TZOS используется элемент Android Keystore, он делает доступным API для отправки запросов и получения данных из TEE. На стороне TEE Samsung используется доверенное приложение (Trusted Application) Keymaster. Предельно упрощенная система работы Keymaster заключается в получении от Android-приложений зашифрованных секретных ключей, которые могут быть расшифрованы только в TEE. Зашифрованные ключи именуются блобами и шифруются с помощью симметричного потокового алгоритма AES-GCM.
Потоковый шифр по умолчанию требует уникального вектора инициализации — случайного набора данных, используемого в процессе шифрования. Если вектор инициализации используется повторно, данные можно расшифровать. Именно это произошло в защищенном окружении телефонов Samsung. Исследователи обнаружили, что они могут напрямую из Android-приложения задавать вектор инициализации. Из четырех протестированных смартфонов лишь самый старый, Samsung Galaxy S8, оказался не подвержен атаке, так как игнорирует передаваемый из приложения вектор инициализации. Подвержены смартфоны S9, S10, S20 и S21, но со своими нюансами. Формат тех самых «блобов» (зашифрованных ключей) периодически меняется, и их самый свежий вариант не подвержен уязвимости. Но можно сделать «даунгрейд» до более раннего формата «блоба» и эксплуатировать уже его.
Была также показана практическая атака на механизм авторизации на веб-сайтах по протоколу FIDO2. Он зависит от «безопасного окружения» в смартфоне, а модель безопасности протокола исходит из того, что секретные ключи авторизации нельзя клонировать. Используя уязвимость, приватный ключ можно похитить и авторизоваться на другом устройстве без ведома владельца, как показано на скриншотах ниже.
![](https://habrastorage.org/webt/c5/c7/lf/c5c7lf9b2ygvlu7qtvsuhqqdt9g.png)
По мнению авторов работы, проблема заключается в непрозрачности работы защищенного программного обеспечения, разрабатываемого такими вендорами, как Samsung или Qualcomm. В научной среде экспертов по криптографии нормой является независимый аудит открытых алгоритмов шифрования для поиска и устранения уязвимостей. В данном случае исследователям пришлось заниматься реверс-инжинирингом фирменного ПО. К счастью, проблема решилась обновлением ПО. Для таких устройств, как Samsung Galaxy S10, S20 и S21, была выключена поддержка legacy-блобов. В моделях S9, J7, A6 Plus и ряде других была заблокирована возможность передачи произвольного вектора инициализации.