CVE-2026-63886 in Linux
Riassunto
di VulDB • 19/07/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
scsi: target: iscsi: Validare la lunghezza di CHAP_R prima della decodifica base64
chap_server_compute_hash() alloca client_digest come kzalloc(chap->digest_size) e successivamente, per le risposte codificate in BASE64, passa chap_r direttamente a chap_base64_decode() senza verificare se la lunghezza dell'input possa produrre più di digest_size byte di output.
chap_base64_decode() scrive nel buffer di destinazione incondizionatamente finché c'è input da elaborare. Con MAX_RESPONSE_LENGTH impostato su 128 e il prefisso "0b" rimosso da extract_param(), fino a 127 caratteri base64 possono raggiungere il decoder. 127 caratteri vengono decodificati in 95 byte. Per SHA-256 (digest_size=32) ciò provoca un overflow di client_digest di 63 byte; per MD5 (digest_size=16) l'overflow è di 79 byte.
Il controllo della lunghezza alla riga 344 viene eseguito dopo che la scrittura è già avvenuta.
Il ramo HEX nello stesso switch statement valida già la lunghezza in anticipo. Applicare lo stesso approccio al ramo BASE64: rimuovere i caratteri di padding base64 finali, quindi rifiutare qualsiasi input la cui lunghezza dei dati supera DIV_ROUND_UP(digest_size * 4, 3) prima di chiamare il decoder.
La rimozione del simbolo '=' finale prima del confronto gestisce sia le codifiche con padding che quelle senza padding. chap_base64_decode() esce già anticipatamente in presenza di '=', quindi la stringa originale completa viene comunque passata al decoder immutata.
Il percorso CHAP reciproco decodifica CHAP_C in initiatorchg_binhex, che è allocato come kzalloc(CHAP_CHALLENGE_STR_LEN). extract_param() limita initiatorchg a CHAP_CHALLENGE_STR_LEN caratteri, quindi al massimo CHAP_CHALLENGE_STR_LEN-1 caratteri base64 raggiungono il decoder. La dimensione massima decodificata, DIV_ROUND_UP((CHAP_CHALLENGE_STR_LEN-1) * 3, 4), è inferiore a CHAP_CHALLENGE_STR_LEN, pertanto non vi è alcun rischio di overflow in quel caso. È stato aggiunto un commento nel punto di chiamata per documentare questo comportamento.
If you want to get best quality of vulnerability data, you may have to visit VulDB.