CVE-2026-89436 in Linux
Résumé
par VulDB • 12/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
platform/x86: panasonic-laptop : Correction de l'écriture d'un élément sentinelle au-delà du tableau pcc->sinf[]
La fonction acpi_pcc_retrieve_biosdata() rejette les paquets SINF uniquement lorsque pcc->num_sifr est strictement inférieur à hkey->package.count, puis écrit inconditionnellement un élément sentinelle de fin à l'indice pcc->sinf[hkey->package.count]. Or, le tableau pcc->sinf[] est alloué avec exactement pcc->num_sifr éléments (indices valides allant de 0 à num_sifr-1). Par conséquent, cette écriture nécessite que num_sifr soit strictement supérieur au package.count pour rester dans les limites du tableau ; une égalité entre num_sifr et package.count passe la vérification existante mais provoque tout de même un dépassement d'un élément.
Il s'agit précisément du cas pour lequel l'astuce (workaround) actuelle de probe() consistant à incrémenter num_sifr (« Certains DSDT comportent une erreur off-by-one où le nombre d'éléments du paquet SINF est supérieur de un à la valeur rapportée par SQTY ») a été implémentée pour être prise en compte : lorsque le nombre d'éléments du paquet SINF d'un DSDT est égal à SQTY+1, l'astuce rend num_sifr égal au package.count, ce qui correspond précisément à la limite provoquant ici un dépassement de tampon. Ce problème a été détecté via UBSan (array-index-out-of-bounds) sur du matériel où HKEY.SQTY renvoie 37 et le paquet SINF() contient 38 éléments : num_sifr devient 38 après l'application de l'astuce += 1, la boucle remplit correctement les indices 0 à 37, puis l'écriture de l'élément sentinelle cible l'indice 38, soit un élément au-delà de la fin du tableau. Il s'agit d'un dépassement silencieux de tampon sur le tas (heap overflow) de 4 octets sur les noyaux sans CONFIG_UBSAN activé.
Le resserrement de la condition de rejet pour inclure num_sifr <= package.count éviterait ce dépassement, mais casserait entièrement probe() sur exactement ce matériel, car l'égalité entre num_sifr et package.count est le cas que l'astuce off-by-one vise à supporter. Aucun autre composant du pilote ne lit cette valeur sentinelle en retour ; il suffit donc de sauter l'écriture lorsqu'il n'y a pas d'espace disponible pour celle-ci.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.