Wysoki Odebrany

CVE-2026-99231

opublikowano:
modyfikacja:
Ocena CVSS
7.8
Wysoki · v3.1
wektor: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

io_uring/waitid: posiadaj żądanie przed wyczyszczeniem ->head

io_waitid_remove_wq() przyjmuje blokadę kolejki oczekiwania tylko wtedy, gdy ustawiono ->head.
io_waitid_wait() czyści ->głowę w pierwszej kolejności, zanim spróbuje stać się
właściciela żądania, wpadając na ->refs. Jeśli ktoś inny jest właścicielem żądania
w tym momencie nic nie stoi na przeszkodzie, aby zakończyć żądanie, podczas gdy
osoba obsługująca budzenie nadal będzie tego dotykać:

CPU0 (io_waitid_wait) CPU1 (io_waitid, przechowuje ref)
list_del_init(&wait->wpis)
smp_store_release(&iw->head, NULL)
__do_wait() znajduje kolejne dziecko
io_waitid_remove_wq()
// ->head == NULL, bez blokowania
io_waitid_finish(), IOU_COMPLETE
// żądanie zwolnione i użyte ponownie
atomowe_fetch_inc(&iw->refs)

To samo dotyczy __io_waitid_cancel(), jeśli zgłasza w nim żądanie
okno. ->refs jest częścią danych na kod żądania żądania, więc to
zwiększa wszystko, co zatrzyma tam następny użytkownik żądania. Jeśli to
zdarza się, że wynosi zero, moduł obsługi dochodzi do wniosku, że żądanie jest jego własnością, i
kolejkuje dla niego io_waitid_cb(). Przy otwartym oknie z opóźnieniem i
żądanie ponownie wykorzystane do odbioru oczekującego na dane:

BŁĄD: KASAN: użycie płyty po zwolnieniu w __wake_up_common+0x1ca/0x1f0
__wake_up_sync_key+0x36/0x50
sock_def_readable+0xf1/0x420
unix_stream_sendmsg+0x60b/0x1110
Przydzielone przez zadanie 87:
io_arm_apoll+0x1ed/0x940
Uwolniony przez zadanie 87:
__io_submit_flush_completions+0x118d/0x1a10
tctx_task_work_run+0x327/0x950

Wyczyść ->head tylko wtedy, gdy program obsługi jest właścicielem żądania. Jeśli tak się nie stanie,
właściciel znajduje ->zestaw głowicy i musi poczekać na zamek, który trzyma
dzwoniący do handlera. Ponowne usunięcie już usuniętego wpisu jest
nieszkodliwy.

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org