
Компания Samsung на данный момент идентифицировала и закрыла две связанные между собой уязвимости. Первая —
Основой 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. Он зависит от «безопасного окружения» в смартфоне, а модель безопасности протокола исходит из того, что секретные ключи авторизации нельзя клонировать. Используя уязвимость, приватный ключ можно похитить и авторизоваться на другом устройстве без ведома владельца, как показано на скриншотах ниже.

По мнению авторов работы, проблема заключается в непрозрачности работы защищенного программного обеспечения, разрабатываемого такими вендорами, как Samsung или Qualcomm. В научной среде экспертов по криптографии нормой является независимый аудит открытых алгоритмов шифрования для поиска и устранения уязвимостей. В данном случае исследователям пришлось заниматься реверс-инжинирингом фирменного ПО. К счастью, проблема решилась обновлением ПО. Для таких устройств, как Samsung Galaxy S10, S20 и S21, была выключена поддержка legacy-блобов. В моделях S9, J7, A6 Plus и ряде других была заблокирована возможность передачи произвольного вектора инициализации.