В ядре Linux устранена следующая уязвимость:
sunrpc: ужесточить жизненный цикл rq_procinfo, чтобы предотвратить двойное освобождение
Функция svc_release_rqst() выполняет обратный вызов внутри
rqstp->rq_procinfo->pc_release. Однако если рабочий поток начинается
обрабатывает новый запрос и обнаруживает ранний путь ошибки (например,
неподдерживаемый протокол, короткий кадр или неверная аутентификация) перед действительным
rq_procinfo установлен, устаревший хук выпуска можно запустить повторно.
против повторно используемого состояния из предыдущего RPC, что приводит к двойному освобождению
или уязвимость использования после освобождения. Укрепите жизненный цикл rq_procinfo:
1.
Обеспечение того, чтобы svc_release_rqst() всегда очищал rq_procinfo после
необязательный вызов pc_release(), независимо от того, существует ли крючок.
2. Явная очистка rq_procinfo при вводе запроса в svc_process().
перед любым ранним декодированием или удалением путей.
3. Обеспечение того, чтобы svc_process_bc() делал то же самое при входе в обратный канал.
Это гарантирует, что потоки ошибок не столкнутся с устаревшими данными, отличными от NULL. Указатель rq_procinfo, когда освобождать нечего.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: sunrpc: harden rq_procinfo lifecycle to prevent double-free The svc_release_rqst() function executes the callback inside rqstp->rq_procinfo->pc_release. However, if a worker thread begins processing a new request and encounters an early error path (e.g., unsupported protocol, short frame, or bad auth) before a valid rq_procinfo is installed, a stale release hook can be re-triggered against reused state from the previous RPC, resulting in a double-free or use-after-free vulnerability. Harden the lifecycle of rq_procinfo by: 1. Ensuring svc_release_rqst() always clears rq_procinfo after the optional pc_release() call, regardless of whether the hook exists. 2. Explicitly clearing rq_procinfo at request entry in svc_process() before any early decode or drop paths. 3. Ensuring svc_process_bc() does the same at backchannel entry. This guarantees that error flows will not encounter a non-NULL stale rq_procinfo pointer when there is nothing to release.
Характеристики атаки
Последствия
Строка CVSS v3.1