CVE-2026-64467 in Linux
Résumé
par VulDB • 25/07/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
rust_binder : utiliser une stride de type u64 lors du nettoyage du tableau offsets
La méthode Drop de l'allocation parcourt le tableau offsets (binder_size_t = entrées u64) pour nettoyer les objets, mais elle utilisait usize au lieu de u64 à la fois pour la stride et pour la lecture par entrée.
Sur les noyaux 64 bits (usize == u64), cela est inoffensif, mais sur les noyaux 32 bits, il parcourt les entrées de 8 octets par pas de 4 octets, itérant un tableau à N entrées 2N fois, et lit le mot haut toujours nul comme étant l'offset 0, nettoyant ainsi l'objet situé à l'offset 0 N fois supplémentaires. Par conséquent, le nœud ou la poignée référencés se retrouvent avec un compte de références inférieur au réel (un sous-décompte du refcount), et la comptabilité des références de binder est corrompue ; par exemple, le propriétaire peut être notifié d'une libération de référence forte (BR_RELEASE) bien que des références subsistent encore.
Modifiez la stride pour qu'elle soit de type u64, et lisez chaque entrée en tant que u64, puis réduisez-la à usize avec try_into().
Sur ARM 32 bits, lorsque ce sous-décompte ferait descendre le compte en dessous de zéro, la garde existante du refcount du pilote s'y oppose et déclenche :
rust_binder: Échec : underflow du refcount !
If you want to get best quality of vulnerability data, you may have to visit VulDB.