CVE-2026-89968
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
nvmet-tcp: odrzuca niechciane jednostki PDU H2CData
nvmet_tcp_handle_h2c_data_pdu() akceptuje PDU H2CData dopiero po sprawdzeniu
że jego TTAG jest prawidłowym indeksem polecenia w zasięgu i że polecenie jest
bufory danych są mapowane. Nigdy nie sprawdza, czy cel faktycznie to zrobił
zażądał tych danych, wysyłając R2T z prośbą o polecenie.
Zdalny host może to nadużyć. Przesyła polecenie zapisu, które pobiera plik
R2T i zanim obiekt docelowy prześle R2T, wysyła jednostkę PDU H2CData
dla znacznika tego polecenia. Dane kończą polecenie wcześniej i kiedy
polecenie następnie kończy się synchronicznym niepowodzeniem (np. przechwycono niezgodność długości
nvmet_check_transfer_len()), jest on wykonywany po raz drugi. Każdy
zakończenie wywołuje nvmet_tcp_queue_response(), więc dodawane jest to samo polecenie
do kolejki->resp_list dwa razy, gdy jest ona nadal połączona; druga llist_add()
powoduje, że węzeł wskazuje na siebie (lentry->next == lentry).
nvmet_tcp_process_resp_list() następnie przechodzi przez węzeł samoodwołujący się i
dodaje dwukrotnie polecenie do resp_send_list. Z CONFIG_DEBUG_LIST to
uruchamia kontrolę „list_add double add” (BŁĄD jądra); bez tego pętla
nigdy się nie kończy, a kolejka robocza nvmet_tcp tworzy kliny (soft-lockup). To jest
uruchamiane zdalnie i nie wymaga uwierzytelniania na serwerze zezwolenie_any_host
podsystem.
Śledź, czy R2T został przesłany dla polecenia i odrzuć je
H2CData PDU, która pojawia się przed nim. Flaga jest usuwana po ponownym użyciu polecenia
(nvmet_tcp_get_cmd() zeruje cmd->flagi) i pozostaje ustawiony na wielokrotność
H2CData PDU pojedynczego żądanego transferu.
>_ Referencje
- https://git.kernel.org/stable/c/02341ee424fb2eed16b5b8a9d247492e49335c21
- https://git.kernel.org/stable/c/14beef7d4f123fb458fc9844aa74a071871dcca6
- https://git.kernel.org/stable/c/1cbed7538946c99e585acefd11c9ba3a0bdbae05
- https://git.kernel.org/stable/c/2b71f9193e3d3a352920ba367f1a6db345249038
- https://git.kernel.org/stable/c/9fb527103e53fd43a8e802c2eca407869c204f7a
- https://git.kernel.org/stable/c/cade124c06f8e738e3a0df285ed2e08953e6bfaa
- https://git.kernel.org/stable/c/cf1484d9a75de6809ef331e16f525aaa41b0e16d
- https://git.kernel.org/stable/c/db62b35cbca052860c519cbcabe7650708528738
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