Une nouvelle CVE a été publiée lundi 1er juillet 2024 sur le logiciel OpenSSH, connu pour être l’un des logiciels les plus utilisés pour administrer à distance un serveur Linux. Cette vulnérabilité, publiée avec la référence CVE-2024-6387, et dont le nom de code est regreSSHion, permet d’exécuter du code sans authentification, et avec les droits d’administration, sur un serveur vulnérable.
Qu’est-ce que OpenSSH ?
OpenSSH (OpenBSD Secure Shell) est un ensemble de logiciels qui permettent d’établir une communication sécurisée avec un serveur, en passant par des réseaux qui ne sont pas sécurisés. OpenSSH est une implémentation du protocole SSH (Secure Shell), et est très largement utilisé pour administrer des serveurs Linux : une recherche sur Shodan.io révèle par exemple la présence de plus de 23 millions de ports OpenSSH exposés publiquement sur Internet.
Qu’est-ce que la vulnérabilité CVE-2024-6387 ?
La vulnérabilité CVE-2024-6387 est une vulnérabilité de sévérité élevée (score CVSSv3.1 de 8.1 sur 10), mentionnée par une alerte de l’ANSSI (Agence Nationale de la Sécurité des Systèmes d’Information) dans son bulletin CERTFR-2024-ALE-009.
Cette CVE est liée à une Race Condition, c’est-à-dire une situation où un pirate peut manipuler la manière dont plusieurs processus s’exécutent afin de forcer un programme à se comporter d’une façon non prévue.
Comment fonctionne la CVE-2024-6387 ?
La CVE-2024-6387 est une Race Condition. Cette vulnérabilité utilise le fait qu’un client OpenSSH qui établit une communication avec un serveur OpenSSH dispose normalement d’un certain délai pour s’authentifier. Ce délai est configuré à l’aide d’un paramètre nommé LoginGraceTime. Lorsque ce délai est dépassé, un signal SIGALRM (signal de limite de temps dépassée) est déclenché de manière asynchrone par OpenSSH. Pour rappel, un signal est un système de communication asynchrone, entre processus, qui permet d’indiquer qu’un évènement a eu lieu.
Le signal SIGALRM généré par le LoginGraceTime est ensuite repris par des processus qui ne sont pas « async-signal-safe », c’est-à-dire que ces processus ne vérifient pas si l’état de la mémoire est resté cohérent entre le moment où le signal a été émis et le moment où le signal a été reçu. Ici, le processus syslog intercepte SIGALRM et utilise des fonctions d’allocation et libération de mémoire (malloc et free).
Un attaquant peut alors envoyer des données sur le serveur ciblé, avec une clé publique SSH spécialement conçue à cet effet. Lors de la lecture de cette clé publique, le serveur va allouer des données en mémoire (avec la fonction malloc). Si un signal SIGALRM se produit pendant cette allocation de mémoire, alors il est possible de déclencher les appels sur malloc et free au sein de syslog de sorte à provoquer un état incohérent de la mémoire qui mène à une exécution de code.
Notons que l’exploitation de cette vulnérabilité nécessite de nombreuses tentatives, et prend donc beaucoup de temps (environ 8 heures sur un système 32 bits).
Comment exploiter la CVE-2024-6387 sur OpenSSH ?
L’exploitation de la CVE-2024-6387 nécessite une approche statistique où l’attaquant envoie de nombreuses séries d’authentification SSH, et fait en sorte que le signal SIGALRM (lié au dépassement de la valeur LoginGraceTime) se déclenche alors que le serveur est en train de charger en mémoire la clé publique de l’attaquant.
Au moment de la rédaction de cet article, aucun exploit public simple n’est reconnu par la communauté.
CVE-2024-6387 : quels systèmes sont impactés ?
La CVE-2024-6387 impacte une large famille de versions d’OpenSSH, selon leurs configurations :
- Certaines configurations des versions inférieures strictement à 4.4p1 d’OpenSSH sont vulnérables ;
- OpenSSH de la version 8.5p1 incluse à la version 9.8p1 exclue.
En pratique, comme OpenSSH est rarement utilisé directement dans une de ces versions, mais plutôt installé à l’aide des gestionnaires de paquets des distributions Linux, nous pouvons établir la liste suivante :
- Debian (source) :
- Debian 11 : non impacté ;
- Debian 12 : sont vulnérables les versions OpenSSH inférieures strictement à 1:9.2p1-deb12u3 ;
- Debian SID : sont vulnérables les versions OpenSSH inférieures strictement à 1:9.7p1-7.
- Alpine Linux :
- Edge : sont vulnérables les versions OpenSSH inférieures strictement à 9.8_p1-r0 ;
- 3.17 : sont vulnérables les versions OpenSSH inférieures strictement à 9.8_p1-r6 ;
- 3.18 : sont vulnérables les versions OpenSSH inférieures strictement à 9.3_p2-r2 ;
- 3.19 : sont vulnérables les versions OpenSSH inférieures strictement à 9.6_p1-r1 ;
- Amazon Linux (source) :
- Amazon Linux 2023 : sont vulnérables les versions OpenSSH inférieures strictement à 8.7p1-8.amzn2023.0.11.
- ArchLinux (source) :
- Sont vulnérables les versions OpenSSH inférieures strictement à 9.8p1-1.
- Oracle Linux (source) :
- Oracle Linux 6 : non impacté ;
- Oracle Linux 7 : non impacté ;
- Oracle Linux 8 : non impacté ;
- Oracle Linux 9 : sont vulnérables les versions OpenSSH inférieures strictement à 8.7p1-38.0.2.el9.
- Palo Alto (source) :
- Aucun produit impacté.
- Red Hat (source) :
- RHEL 6 : non impacté ;
- RHEL 7 : non impacté ;
- RHEL 8 : non impacté ;
- RHEL 9 : sont vulnérables les versions OpenSSH inférieures strictement à 8.7p1-38.el9_4.1.
- SUSE (source) :
- SUSE 15 SP6 : sont vulnérables les versions OpenSSH inférieures strictement à 9.6p1-150600.6.3.1.
- Ubuntu (source) :
- Ubuntu 22.04 : sont vulnérables les versions OpenSSH inférieures strictement à 1:8.9p1-3ubuntu0.10 ;
- Ubuntu 23.10 : sont vulnérables les versions OpenSSH inférieures strictement à 1:9.3p1-1ubuntu3.6 ;
- Ubuntu 24.04 : sont vulnérables les versions OpenSSH inférieures strictement à 1:9.6p1-3ubuntu13.3.
- VMware PhotonOS (source) :
- PhotonOS 4 : sont vulnérables les versions OpenSSH inférieures strictement à 8.9p1-8.ph4.x86_64 ;
- PhotonOS 5 : sont vulnérables les versions OpenSSH inférieures strictement à 9.3p2-9.ph5.x86_64.
D’autres distributions se prononceront très certainement dans les prochaines heures sur leur exposition à cette vulnérabilité, et cette page sera alors actualisée en conséquence.
J’utilise un système affecté par CVE-2024-6387, que dois-je faire ?
Cyberwatch recommande d’appliquer dans les plus brefs délais les correctifs de sécurité mis à disposition par votre distribution.
De plus, Cyberwatch recommande de vérifier les journaux SSHD pour contrôler toutes les connexions entrantes.
Le cas échéant, si une mise à jour est impossible, mettre le LoginGraceTime à 0 permet de neutraliser la vulnérabilité, mais peut entraîner une perte de disponibilité du serveur. Le déploiement des correctifs de sécurité est donc réellement recommandé.
Comment détecter la CVE-2024-6387 ?
Vérifiez si vous utilisez l’une des versions d’OpenSSH mentionnées plus haut dans cet article.
Les utilisateurs de Cyberwatch Vulnerability Manager peuvent d’ores et déjà détecter cette vulnérabilité depuis le 1er juillet 2024. N’hésitez pas à contacter notre équipe pour toute demande d’information.
Suivi des modifications
01/07/2024 à 23h33 GMT+2 : version initiale
02/07/2024 à 11h30 GMT+2 : ajout de systèmes vulnérables
03/07/2024 à 01h25 GMT+2 : ajout de systèmes vulnérables suite nouvelles publications des éditeurs
03/07/2024 à 21h15 GMT+2 : ajout du bulletin de sécurité de Red Hat avec correctif.