CVE-2026-89482
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
nvme-tcp: nie akceptuj C2HData w oparciu o samą blk_rq_payload_bytes()
Zatwierdź 25e5cb780e62 („nvme-tcp: napraw możliwą awarię w write_zeroes
przetwarzanie”) ustalono, że nie wolno czytać funkcji blk_rq_payload_bytes().
bez uprzedniego sprawdzenia blk_rq_nr_phys_segments() i zarejestrował
skutkuje nvme_tcp_setup_cmd_pdu() jako req->data_len. Strona odbiorcza
zostało tak jak było.
Różnią się one REQ_OP_WRITE_ZEROES, który nie ma segmentów fizycznych
ale niezerową blk_rq_bytes(), więc konfiguracja pozostawia req->iter nietknięte
podczas gdy bramka odbiorcza przepuszcza C2HData i nvme_tcp_recv_data()
kopiuje do pozostawionego tam poprzedniego polecenia na tym znaczniku. The
obszar prywatny kierowcy jest zerowany tylko wtedy, gdy przydzielony jest zestaw znaczników.
Reprodukowane z celem testowym, który pozostawia resztkowy iterator na znaczniku
a następnie wysyła C2HData dla polecenia WRITE_ZEROES dla tego samego znacznika:
BŁĄD: KASAN: dostęp do pamięci dzikiej w _copy_to_iter+0x642/0x1330
Zapisz rozmiar 512 pod adresem ffe728c2175dfa81 przez zadanie kworker/0:1H/103
Procesor: 0 UID: 0 PID: 103 Comm: kworker/0:1H Nieskażony 7.2.0-rc5-NVMETCP-gf5098b6bae76 #1 PREEMPT(leniwy)
Nazwa sprzętu: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, poprawka arch_caps, 1996), BIOS 1.16.3-debian-1.16.3-2 01.04.2014
Kolejka robocza: nvme_tcp_wq nvme_tcp_io_work
Zadzwoń do śledzenia:
<ZADANIE>
dump_stack_lvl+0x53/0x70
kasan_report+0xce/0x100
? _copy_to_iter+0x642/0x1330
kasan_check_range+0x105/0x1b0
__asan_memcpy+0x3c/0x60
_copy_to_iter+0x642/0x1330
? __pfx_sock_has_perm+0x10/0x10
? wątek_pracownika+0x45b/0xd10
? __pfx__copy_to_iter+0x10/0x10
? _raw_spin_lock_bh+0x83/0xe0
? __pfx__raw_spin_lock_bh+0x10/0x10
__skb_datagram_iter+0xf3/0x820
? __pfx_simple_copy_to_iter+0x10/0x10
? __asan_memcpy+0x3c/0x60
? skb_copy_bits+0x58d/0x830
skb_copy_datagram_iter+0x37/0x120
nvme_tcp_recv_skb+0xa07/0x4320
? __pfx_nvme_tcp_recv_skb+0x10/0x10
__tcp_read_sock+0x1ab/0x810
? __pfx_nvme_tcp_recv_skb+0x10/0x10
? __pfx_lock_sock_nested+0x10/0x10
? __pfx___tcp_read_sock+0x10/0x10
nvme_tcp_try_recv+0x152/0x1e0
? __pfx_nvme_tcp_try_recv+0x10/0x10
? __pfx_mutex_unlock+0x10/0x10
nvme_tcp_io_work+0x1e4/0x6c0
? __harmonogram+0x181a/0x49f0
? __pfx_nvme_tcp_io_work+0x10/0x10
proces_one_work+0x633/0x1030
Zachowaj test blk_rq_payload_bytes() i dodaj do niego req->data_len. The
stary test odrzuca nazwę C2HData dla tagu, którego już nie ma
lot, ponieważ blk_update_request() zeruje rq->__data_len
ukończenie; req->data_len i req->curr_bio są sterownikami prywatnymi i
przetrwać ukończenie, więc nie mogą go zastąpić. Rozpocznie się konfiguracja
iterator tylko wtedy, gdy ustawione są zarówno req->curr_bio, jak i req->data_len, więc
brama testuje teraz te same dwa.
>_ 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