NONE

CVE-2026-23066

Обновлено 5 февраля 2026

В ядре Linux устранена следующая уязвимость: rxrpc: исправлен безусловный запрос Recvmsg(). Если rxrpc_recvmsg() завершился неудачно, поскольку был указан MSG_DONTWAIT, но вызов по адресу в начале очереди Recvmsg мьютекс уже заблокирован, он запрашивает вызов — находится ли вызов в очереди или нет. Возможно, звонок включен очередь, поскольку MSG_PEEK также был передан и поэтому вызов не был исключен из очереди или потому, что поток ввода-вывода запросил его. Безусловный запрос может затем повредить очередь Recvmsg, что приведет к такие вещи, как UAF или недобор счетчика ссылок. Исправьте это, поставив вызов в очередь только в том случае, если его еще нет в очереди. переместив его вперед, если он уже стоит в очереди. Если мы не поставим его в очередь, мы придется поместить ссылку, которую мы получили, исключив ее из очереди. Кроме того, MSG_PEEK не удаляет вызов из очереди, поэтому не следует вызывать rxrpc_notify_socket() для вызова, если мы не израсходовали все данные на очередь, так что исправьте и это.

Показать оригинальное описание (английский)

In the Linux kernel, the following vulnerability has been resolved: rxrpc: Fix recvmsg() unconditional requeue If rxrpc_recvmsg() fails because MSG_DONTWAIT was specified but the call at the front of the recvmsg queue already has its mutex locked, it requeues the call - whether or not the call is already queued. The call may be on the queue because MSG_PEEK was also passed and so the call was not dequeued or because the I/O thread requeued it. The unconditional requeue may then corrupt the recvmsg queue, leading to things like UAFs or refcount underruns. Fix this by only requeuing the call if it isn't already on the queue - and moving it to the front if it is already queued. If we don't queue it, we have to put the ref we obtained by dequeuing it. Also, MSG_PEEK doesn't dequeue the call so shouldn't call rxrpc_notify_socket() for the call if we didn't use up all the data on the queue, so fix that also.