OpenSSH 9.2 publié avec un correctif pour la vulnérabilité de pré-authentification

La version d'OpenSSH 9.2 a été publiée, une implémentation ouverte d'un client et d'un serveur pour travailler avec les protocoles SSH 2.0 et SFTP. La nouvelle version élimine une vulnérabilité qui conduit à une double libération de mémoire au stade de pré-authentification. Seule la version OpenSSH 9.1 est concernée ; le problème n'apparaît pas dans les versions antérieures.

Pour créer les conditions de manifestation de vulnérabilité, il suffit de changer la bannière du client SSH en « SSH-2.0-FuTTYSH_9.1p1 » afin de définir les drapeaux « SSH_BUG_CURVE25519PAD » et « SSH_OLD_DHGEX », qui dépendent de la version du SSH. client. Après avoir défini ces indicateurs, la mémoire du tampon « options.kex_algorithms » est libérée deux fois : lors de l'exécution de la fonction do_ssh2_kex(), qui appelle compat_kex_proposal(), et lors de l'exécution de la fonction do_authentication2(), qui appelle input_userauth_request(), mm_getpwnamallow( ), copy_set_server_options() le long de la chaîne, assemble_algorithms() et kex_assemble_names().

La création d'un exploit fonctionnel pour la vulnérabilité est considérée comme peu probable, car le processus d'exploitation est trop compliqué - les bibliothèques modernes d'allocation de mémoire offrent une protection contre la double libération de mémoire, et le processus de pré-authentification dans lequel l'erreur est présente s'exécute avec des privilèges réduits de manière isolée. environnement bac à sable.

En plus de la vulnérabilité mentionnée, la nouvelle version corrige également deux autres problèmes de sécurité :

  • Une erreur s'est produite lors du traitement du paramètre "PermitRemoteOpen", provoquant l'ignorance du premier argument s'il diffère des valeurs "any" et "none". Le problème apparaît dans les versions plus récentes qu'OpenSSH 8.7 et entraîne l'omission de la vérification lorsqu'une seule autorisation est spécifiée.
  • Un attaquant contrôlant le serveur DNS utilisé pour résoudre les noms peut obtenir la substitution de caractères spéciaux (par exemple, « * ») dans les fichiers known_hosts si les options CanonicalizeHostname et CanonicalizePermitteCNAMEs sont activées dans la configuration et que le résolveur système ne vérifie pas l'exactitude de réponses du serveur DNS. L'attaque est considérée comme peu probable car les noms renvoyés doivent correspondre aux conditions spécifiées via CanonicalizePermittecNAMEs.

Autres changements :

  • Un paramètre EnableEscapeCommandline a été ajouté à ssh_config pour que ssh contrôle si le traitement côté client de la séquence d'échappement "~C" qui fournit la ligne de commande est activé. Par défaut, la gestion de « ~C » est désormais désactivée pour utiliser une isolation sandbox plus stricte, ce qui risque de briser les systèmes qui utilisent « ~C » pour la redirection de port au moment de l'exécution.
  • La directive ChannelTimeout a été ajoutée à sshd_config pour que sshd définisse le délai d'inactivité du canal (les canaux dans lesquels aucun trafic n'est enregistré pendant la durée spécifiée dans la directive seront automatiquement fermés). Différents délais d'attente peuvent être définis pour la redirection de session, X11, d'agent et de trafic.
  • La directive UnusedConnectionTimeout a été ajoutée à sshd_config pour sshd, vous permettant de définir un délai d'attente pour mettre fin aux connexions client qui sont restées sans canaux actifs pendant un certain temps.
  • L'option « -V » a été ajoutée à sshd pour afficher la version, similaire à l'option similaire dans le client ssh.
  • Ajout de la ligne "Host" à la sortie de "ssh -G", reflétant la valeur de l'argument du nom d'hôte.
  • L'option "-X" a été ajoutée à scp et sftp pour contrôler les paramètres du protocole SFTP tels que la taille du tampon de copie et le nombre de requêtes en attente.
  • ssh-keyscan permet d'analyser des plages d'adresses CIDR complètes, par exemple « ssh-keyscan 192.168.0.0/24 ».

Source: opennet.ru

Ajouter un commentaire