CVE-2021-47282 in Linux
Riassunto
di VulDB • 24/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
spi: bcm2835: Corretto l'accesso fuori dai limiti con più di 4 slave
Il commit 571e31fa60b3 ("spi: bcm2835: Cache CS register value for ->prepare_message()") ha limitato il numero di slave a 3 in fase di compilazione. Tale limitazione era necessaria a causa dell'array prepare_cs[] dalle dimensioni statiche presente nei dati privati del driver, che contiene un valore per registro per ogni slave.
Il commit mirava ad applicare la limitazione anche in fase di esecuzione impostando num_chipselect del controller su 3: gli slave con un chipselect superiore vengono rifiutati da spi_add_device().
Tuttavia, il commit ha trascurato il fatto che num_chipselect limita solo il numero di *native* chipselect. Se i GPIO chipselect sono specificati nel device tree per più di 3 slave, num_chipselect viene aumentato silenziosamente da of_spi_get_gpio_numbers() e ciò provoca accessi fuori dai limiti all'array prepare_cs[] dalle dimensioni statiche.
Come soluzione temporanea (bandaid fix) che può essere riportata alle versioni stabili (backportable to stable), è stato elevato il numero di slave consentiti a 24 ("dovrebbe bastare per tutti"), applicando la limitazione durante ->setup dello slave e reimpostando num_chipselect su 3 (che corrisponde al numero di native chipselect supportati dal controller). Un prossimo commit nella branch for-next permetterà un numero arbitrario di slave.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.