В ядре Linux устранена следующая уязвимость: smb: клиент: исправить use-after-free в crypt_message при использовании async crypto CVE-2024-…
В ядре Linux устранена следующая уязвимость: smb: клиент: исправить use-after-free в crypt_message при использовании async crypto CVE-2024-50047 исправление удалено асинхронная крипто-оборудование из crypt_message(), предполагая, что все крипто-операции являются синхронными. Однако, когда используются аппаратные крипто-ускорители, это может вызвать use-after-free аварии: crypt_message() // Распределите буфер creq, содержащий req creq = smb2_get_aead_req(..., &req); // Возврат шифрования Async -EINPROGRESS немедленно rc = enc ? crypto_aead_encrypt(req) : crypto_aead_decrypt(req); // Свободный creq, пока операция ASync все еще продолжается kvfree_sensitive(крив, ...); Аппаратные криптомодули часто реализуют операции AEAD для производительность. При возврате crypto_aead_encrypt/decrypt() -EINPROGRESS, Операция завершается асинхронно. Без crypto_wait_req(), функция немедленно освобождает буфер запроса, приводя к сбоям когда водитель позже получает доступ к освобожденной памяти. Это приводит к бесперебойному устройству, когда аппаратная криптография Водитель позже получает доступ к освобожденной структуре запроса, что приводит к ядру аварии с NULL указывающей на ссылки. Проблема возникает потому, что crypto_alloc_aead() с маской=0 не гарантия синхронной работы. Даже без CRYPTO_ALG_ASYNC в Маска, асинхронные реализации могут быть выбраны. Исправьте, восстановив асинхронную криптографию: - DECLARE_CRYPTO_WAIT(wait) для отслеживания завершения - aead_request_set_callback() для уведомления о завершении - crypto_wait_req(), чтобы дождаться завершения операции Это гарантирует, что буфер запроса не будет освобожден до операции криптографии завершает, будь то синхронный или асинхронный, сохраняя при этом CVE-2024-50047 исправить.
Продукт повторно использует или ссылается на память после её освобождения. В какой-то момент эта память может быть выделена повторно и сохранена в другом указателе, тогда как исходный указатель на освобождённую память используется вновь. Поскольку теперь по этому адресу может храниться посторонний объект, исходное использование указателя может привести к повреждению памяти или иным непреднамеренным последствиям. Если новая структура данных содержит указатель на функцию, то при исполнении может быть вызван код, контролируемый злоумышленником.
https://cwe.mitre.org/data/definitions/416.html →Открыть в коллекции CWE →| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux-5.10 | Отслеживается | |
| linux-5.10 | Отслеживается | |
| linux-5.15 | Отслеживается | |
| linux-6.1 | Отслеживается | |
| linux-6.1 | Отслеживается | |
| linux-6.1 | Отслеживается | |
| linux-allwinner-5.19 | Отслеживается | |
| linux-aws | Отслеживается | |
| linux-aws | Отслеживается | |
| linux-aws | Отслеживается | |
| linux-aws | Отслеживается |