CVE-2021-47282 in Linux
Résumé
par VulDB • 03/06/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
spi: bcm2835 : Correction d'un accès hors limites avec plus de 4 esclaves
Le commit 571e31fa60b3 (« spi: bcm2835 : Mise en cache de la valeur du registre CS pour ->prepare_message() ») a limité le nombre d'esclaves à 3 au moment de la compilation. Cette limitation était nécessaire en raison d'un tableau de taille statique prepare_cs[] dans les données privées du pilote, qui contient une valeur de registre par esclave.
Le commit cherchait à imposer cette limite lors de l'exécution en définissant num_chipselect du contrôleur à 3 : Les esclaves ayant un numéro de sélection de puce (chipselect) supérieur sont rejetés par spi_add_device().
Cependant, le commit a négligé que num_chipselect ne limite que le nombre de chipselects *natifs*. Si des chipselects GPIO sont spécifiés dans l'arborescence du dispositif pour plus de 3 esclaves, num_chipselect est augmenté silencieusement par of_spi_get_gpio_numbers() et les résultats sont des accès hors limites au tableau prepare_cs[] de taille statique.
En tant que correctif provisoire (bandaid) rétroportable vers la version stable, le nombre d'esclaves autorisés a été porté à 24 (« ce qui devrait suffire pour tout le monde »), la limite est appliquée lors du setup de l'esclave et num_chipselect est remis à 3 (qui correspond au nombre de chipselects natifs pris en charge par le contrôleur). Un prochain commit destiné à for-next permettra un nombre arbitraire d'esclaves.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.