OP-TEE - это доверенная среда исполнения (TEE), разработанная в качестве компаньона для небезопасного ядра Linux, работающего на Arm; ядра …
OP-TEE - это доверенная среда исполнения (TEE), разработанная в качестве компаньона для небезопасного ядра Linux, работающего на Arm; ядра Cortex-A с использованием технологии TrustZone. Начиная с версии 3.16.0 и до 4.11.0, гоночное условие без пользователя (UAF) существует в логике разрушения общей памяти FF-A в потоках OP-TEE SPMC/SP. Это применимо только тогда, когда OP-TEE настроен как SPMC для S-EL0 SPs, то есть с `CFG_SECURE_PARTITION=y`. Функция `sp_mem_remove()`, отвечающая за освобождение записей в `smem->receivers` и `smem->regions, не может приобрести глобальный `sp_mem_lock` до выполнения операций `sp_mem_lock` Одновременно другие пути кода, такие как `sp_mem_get_receiver()`, итерируют эти же списки, не удерживая замок, или, как `sp_mem_is_shared()`, итерируют при удержании замка, но не сериализуются против незащищенного `free()` в `sp_mem_remove()`. Это создает кросс-поточный раса, где нить, итерирующую список, может получить указатель на запись (например, `structsp_mem_map_region` или `structsp_mem_receiver`), а затем другой поток вызывает `sp_mem_remove()`, освобождая объект. Когда первый поток возобновляется и указывает на указатель, это приводит к уязвимости Use-After-Free. Версия 4.11.0 исправляет проблему.
Продукт повторно использует или ссылается на память после её освобождения. В какой-то момент эта память может быть выделена повторно и сохранена в другом указателе, тогда как исходный указатель на освобождённую память используется вновь. Поскольку теперь по этому адресу может храниться посторонний объект, исходное использование указателя может привести к повреждению памяти или иным непреднамеренным последствиям. Если новая структура данных содержит указатель на функцию, то при исполнении может быть вызван код, контролируемый злоумышленником.
https://cwe.mitre.org/data/definitions/416.html →Открыть в коллекции CWE →| Продукт | Вендор | Статус |
|---|---|---|
| optee-os | Отслеживается | |
| optee-os | Отслеживается | |
| op-tee | * | Отслеживается |