
Un problème dans radareorg radare2 v.0.9.7 à v.5.8.6 et corrigé dans v.5.8.8 permet à un attaquant local de provoquer un déni de service via la fonction grub_sfs_read_extent.
Sherlock Fang, Vlad Tronciu, Ayam Babu
Un problème dans radareorg radare2 v.0.9.7 à v.5.8.6 et corrigé dans v.5.8.8 permet à un attaquant local de provoquer un déni de service via la fonction grub_sfs_read_extent.
La création d'une charge utile pour que "treeblock = grub_malloc(data->blocksize);" pointe vers NULL en mémoire, de sorte que lorsque la valeur de "treeblock" est assignée à "tree = (struct grub_sfs_btree *) treeblock;", "treeblock" pointe également vers NULL. L'étendue de l'exploitabilité dépend des contextes spécifiques, mais une telle vulnérabilité de déréférencement de pointeur nul entraînerait un déni de service du programme, ce qui affecte les performances globales du programme.
Dans la fonction grub_sfs_read_extent, il existe une vulnérabilité de sécurité due à l'absence de vérification de l'état de tree_block. Le code suivant utilise tree_block sans vérifier qu'il pointe vers une allocation mémoire valide. Cela conduit au déréférencement d'un pointeur nul lorsque tree se voit attribuer la valeur de treeblock castée en struct grub_sfs_btree* puis utilisée dans l'appel à grub_disk_read. Déréférencer un pointeur nul est un comportement indéfini en C et entraîne généralement une erreur de segmentation ou une violation d'accès, provoquant le plantage du programme.

Nous avons corrigé la vulnérabilité en ajoutant une vérification de l'état d'allocation de grub_malloc, comme indiqué ci-dessous.