Des informations sur une vulnérabilité dans le système d'exploitation Qubes, qui utilise un hyperviseur pour une isolation stricte des applications et des composants du système d'exploitation (chaque classe d'applications et services système fonctionnent dans des machines virtuelles séparées), ont été publiées. Si un attaquant compromet l'une des machines virtuelles, la vulnérabilité permet de contourner l'isolation, d'exécuter des commandes arbitraires dans l'environnement hôte (Dom0) et de prendre le contrôle de l'ensemble du système d'exploitation. Le problème se manifeste lorsque l'utilisateur utilise l'outil « qvm-copy-to-vm » pour copier un fichier de l'environnement hôte vers une machine virtuelle sous le contrôle de l'attaquant. La vulnérabilité a été corrigée dans la mise à jour du paquet qubes-core-dom0-linux 4.3.22.
Le problème se situe dans l'utilitaire «qvm-copy-to-vm» et est causé par un traitement inadéquat des erreurs renvoyées lors de l'appel à une machine virtuelle. L'essence de la vulnérabilité réside dans le fait que l'utilitaire qvm-copy-to-vm, pour afficher les informations sur l'erreur, exécutait les programmes kdialog ou zenity, en utilisant la fonction system() et en insérant les détails du fichier mal copié parmi les options de la ligne de commande. Dans ce processus, le nettoyage du nom de fichier était limité à la suppression des caractères non-ASCII et des guillemets doubles, sans vérifier la présence de caractères spéciaux interprétés par le shell, tels que «`» et «$».
Après la fin de la copie des fichiers depuis le système hôte, le gestionnaire côté machine virtuelle renvoie un accusé de réception de l'opération, qui indique entre autres le nom du dernier fichier reçu. L'attaque consiste à renvoyer un code d'erreur au lieu d'une confirmation et à indiquer pour le fichier qui n'a pas pu être copié, un nom comprenant des caractères spéciaux traités par l'interpréteur de commandes. Après réception de l'erreur, le gestionnaire côté environnement hôte exécutera, par la commande system(), l'outil pour afficher la boîte de dialogue avec le texte de l'erreur, en passant dans la ligne de commande le nom de fichier retourné par l'attaquant (par exemple, en indiquant « file`id` » côté environnement hôte, la commande id sera exécutée).
Source : opennet.ru
