CVE-2026-89532
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
svcrdma: Napraw pcl_for_each_segment dla pustych fragmentów
Gdy przeanalizowana lista fragmentów zawiera fragment, którego liczba ch_segcount wynosi zero,
pcl_for_each_segment oblicza jego górną granicę włącznie
&chunk->ch_segments[ch_segcount - 1]. ch_segcount to u32, więc
odejmowanie zawija się do 0xFFFFFFFF, a powiązanie ląduje daleko poza
ch_segments tablica elastyczna. Następnie ciało pętli przechodzi do niepowiązanej pamięci
sizeof(struct svc_rdma_segment) krok, aż do wystąpienia błędu.
Z przewodu można uzyskać dostęp do fragmentu o zerowej liczbie segmentów:
xdr_check_write_chunk() odrzuca tylko wartości segcount większe niż
rc_maxpages i pcl_alloc_write() łączą świeżo przydzieloną porcję
na rc_write_pcl/rc_reply_pcl przed uruchomieniem pętli wypełniania segmentów,
więc fragment „Napisz lub Odpowiedz” reklamujący segmenty zerowe opuszcza
ch_segcount == 0 na liście. Kiedy transport wynegocjował
Send-With-Invalidate, svc_rdma_get_inv_rkey() iteruje wszystkie cztery
PCL z pcl_for_each_segment i segment dereferencji->rs_handle
w każdej iteracji, zamieniając niedomiar w odczyt poza zakresem
i ogólny błąd ochrony.
xdr_check_write_list / xdr_check_reply_chunk
pcl_alloc_write()
chunk = pcl_alloc_chunk(...) /* ch_segcount = 0 */
list_add_tail(&chunk->ch_list, &pcl->cl_chunks)
/* pętla wypełniająca iteruje zero razy dla liczby segmentów przewodów 0 */
svc_rdma_get_inv_rkey()
pcl_for_each_chunk(rc_write_pcl)
pcl_for_each_segment(segment, porcja)
poz <= &ch_segmenty[0u - 1u] /* 0xFFFFFFFF */
segment->rs_handle /* OOB odczyt -> GPF */
Napraw, przełączając makro na półotwartą górną granicę, która używa
ch_segcount bezpośrednio. Dla ch_segcount == 0 początek pętli jest równy
koniec pętli i treść zostaje pominięta; dla ch_segcount > 0 iteracja
zakres pozostaje niezmieniony. Wszystkie sześć istniejących witryn połączeń w
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c i
net/sunrpc/xprtrdma/svc_rdma_rw.c pozostaje poprawny w ramach nowego ograniczenia,
więc nie są potrzebne żadne zmiany rozmówcy.
>_ 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