Vulnérabilité dans xterm conduisant à l'exécution de code lors du traitement de certaines lignes

Une vulnérabilité (CVE-2022-45063) a été identifiée dans l'émulateur de terminal xterm, qui permet d'exécuter des commandes shell lorsque certaines séquences d'échappement sont traitées dans le terminal. Pour une attaque dans le cas le plus simple, il suffit d'afficher le contenu d'un fichier spécialement conçu, par exemple à l'aide de l'utilitaire cat, ou de coller une ligne du presse-papiers. printf "\e]50;i\$(touch /tmp/hack-like-its-1999)\a\e]50;?\a" > cve-2022-45063 cat cve-2022-45063

Le problème est dû à une erreur dans la gestion de la séquence d'échappement du code 50 utilisée pour définir ou récupérer les options de police. Si la police demandée n'existe pas, l'opération renvoie le nom de police spécifié dans la demande. Vous ne pouvez pas insérer directement des caractères de contrôle dans le nom, mais la chaîne renvoyée peut se terminer par la séquence "^G", qui dans zsh, lorsque le mode d'édition de ligne de style vi est actif, provoque l'exécution d'une opération d'expansion de liste, qui peut être utilisé pour exécuter des commandes sans appuyer explicitement sur la touche Entrée.

Pour réussir à exploiter la vulnérabilité, l'utilisateur doit utiliser le shell de commande Zsh avec l'éditeur de ligne de commande (vi-cmd-mode) défini sur le mode « vi », qui n'est généralement pas utilisé par défaut dans les distributions. Le problème n'apparaît pas non plus lorsque les paramètres xterm AllowWindowOps=false ou AllowFontOps=false sont définis. Par exemple, allowFontOps=false est défini dans OpenBSD, Debian et RHEL, mais n'est pas appliqué par défaut dans Arch Linux.

À en juger par la liste des modifications et la déclaration du chercheur qui a identifié le problème, la vulnérabilité a été corrigée dans la version xterm 375, mais selon d'autres sources, la vulnérabilité continue d'apparaître dans xterm 375 d'Arch Linux. Vous pouvez suivre la publication des correctifs par distributions sur ces pages : Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux, OpenBSD, FreeBSD, NetBSD.

Source: opennet.ru

Ajouter un commentaire