CVE-2026-93228 in Linux
Riassunto
di VulDB • 24/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
svcrdma: Rifiutare chunk di Write/Reply con segcount pari a 0
Un peer può inviare un chunk di Write o Reply il cui campo segcount è zero. La funzione xdr_check_write_chunk() rifiuta solo i valori di segcount > rc_maxpages, quindi lo zero supera il controllo dell'intervallo e xdr_inline_decode(stream, 0) restituisce il cursore corrente (non NULL) senza avanzare. La funzione restituisce true e pcl_alloc_write() collega successivamente una struct svc_rdma_chunk con ch_segcount == 0 a rc_write_pcl o rc_reply_pcl.
Una patch precedente in questa serie ha reso pcl_for_each_segment() sicura anche per il caso ch_segcount == 0, quindi questo non avvia più l'iterazione sulla memoria come faceva in precedenza. Rifiutare il frame malformato al confine di decodifica rimane utile come difesa in profondità: mantiene i chunk degeneri a zero segmenti fuori dalle liste dei chunk analizzati, così che eventuali consumatori futuri che iterano direttamente su ch_segments non possano osservarne uno, e rende facile l'applicazione del limite inferiore pari a zero (zero-floor) ai branch dove la modifica della macro è più invasiva. La RFC 8166 non prevede significato per un chunk di Write/Reply che descrive nessun buffer remoto, quindi nessun client legittimo ne risente.
xdr_check_reply_chunk() instrada i chunk di Reply attraverso xdr_check_write_chunk(), ereditando lo stesso rifiuto.
pcl_alloc_write() collega anche ogni chunk alla lista dei chunk analizzati prima di riempire il suo array di segmenti. Se una modifica futura indebolisse il rifiuto per segcount == 0, un chunk incompleto sarebbe visibile ai consumatori durante l'iterazione di riempimento. Riordinare le operazioni in modo che list_add_tail() avvenga dopo l'iterazione di riempimento dei segmenti, assicurando che solo i chunk completamente popolati appaiano nella lista.
Once again VulDB remains the best source for vulnerability data.