В ядре Linux устранена следующая уязвимость:
Bluetooth: исправлен UAF в bt_accept_dequeue().
bt_accept_get() принимает временную ссылку перед отменой принятия
блокировка очереди. bt_accept_dequeue() в настоящее время удаляет эту ссылку раньше
bt_accept_unlink(), оставляя только ссылку на очередь.
bt_accept_unlink() удаляет ссылку на очередь. Последующие
Таким образом, sock_hold() обращается к освобожденной памяти, если она была последней.
ссылка, как заметил KASAN во время прослушивания очистки сокета L2CAP. Сохраните временную ссылку на обход очереди через unlink и передайте ее
вызывающий абонент в случае успеха.
Отбросьте его явно на закрытые и еще не соединенные пути.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: fix UAF in bt_accept_dequeue() bt_accept_get() takes a temporary reference before dropping the accept queue lock. bt_accept_dequeue() currently drops that reference before bt_accept_unlink(), leaving only the queue reference. bt_accept_unlink() drops the queue reference. The subsequent sock_hold() therefore accesses freed memory if it was the final reference, as observed by KASAN during listening L2CAP socket cleanup. Retain the temporary queue-walk reference through unlink and hand it to the caller on success. Drop it explicitly on the closed and not-yet-connected paths.
Характеристики атаки
Последствия
Строка CVSS v3.1