Dans le cadre de l'examen de la vulnérabilité critique identifiée la semaine dernière dans OpenSSH, une autre vulnérabilité similaire a été découverte (CVE-2024-6409), permettant l'exécution à distance de code sans passer par l'authentification. La nouvelle vulnérabilité n'est pas aussi grave que la précédente, car elle se manifeste après une élévation de privilèges dans un processus fils lancé par le serveur SSH. Cette vulnérabilité est présente dans les paquets openssh de la distribution Red Hat Enterprise Linux 9, basés sur la version d'OpenSSH 8.7 publiée en 2021. Le problème touche également les paquets pour Fedora Linux 36 et 37, fondés sur les versions OpenSSH 8.7 et 8.8.
Essentiellement, cette vulnérabilité est similaire au problème précédent et est également causée par une condition de compétition dans le gestionnaire d'interruption SIGALRM, résultant de l'exécution de fonctions non conçues pour être appelées en mode asynchrone depuis des gestionnaires de signaux. Le gestionnaire se déclenche lorsque le délai imparti, défini par le paramètre LoginGraceTime, est atteint, interrompant l'exécution actuelle du code. L'utilisation de fonctions non conçues pour une exécution asynchrone, qui utilisent l'allocation dynamique de mémoire, telles que syslog(), peut endommager les structures internes de malloc lorsque SIGALRM se déclenche durant l'exécution d'un code spécifique.
La nouvelle vulnérabilité se distingue par le fait que la condition de compétition se produit en raison de l'appel, dans le gestionnaire de signaux grace_alarm_handler(), de la fonction cleanup_exit(). Dans la base de code principale d'OpenSSH, cette fonction peut être utilisée dans un code exécuté de manière asynchrone, mais dans les paquets destinés à RHEL 9 et Fedora, un patch supplémentaire a été appliqué, ajoutant un appel à cette fonction pour générer des événements d'audit, prévu pour utilisation dans les gestionnaires de signaux.
Ce patch a été utilisé dans RHEL 9 et les distributions dérivées dans les paquets basés sur OpenSSH 8.7p1. Dans les versions récentes de Fedora, le problème ne se présente pas, car à partir de Fedora 38, la distribution a migré vers une version plus récente d'OpenSSH sans modifier cleanup_exit(). Contrairement à la vulnérabilité précédente, aucune méthode de contournement, telle que l'utilisation de l'option « -e » dans sshd, qui désactive la sortie des journaux via syslog, n'est efficace pour bloquer ce nouveau problème. Cependant, pour bloquer la vulnérabilité, il est possible de définir le paramètre « LoginGraceTime=0 » dans sshd_config.
Source : opennet.ru
