PuTTY : une faille de sécurité dans le client SSH permet de récupérer les clés privées
-
Vous connaissez probablement l’application PuTTY. Sachez que de nombreuses versions sont affectées par une nouvelle vulnérabilité pouvant permettre de deviner votre clé privée. D’autres applications sont impactées. Faisons le point sur cette menace.
Pour rappel, PuTTY est une application open source permettant de se connecter à des équipements réseaux ou des serveurs distants, généralement sous Linux, par l’intermédiaire de plusieurs protocoles, dont le SSH et le Telnet. Même s’il existe de nombreuses alternatives et des gestionnaires de connexions plus complets, PuTTY reste un “client SSH” populaire et très utilisé par les administrateurs systèmes sous Windows.
Cette vulnérabilité, associée à la référence CVE-2024-31497, a été découverte par Fabian Bäumer et Marcus Brinkmann de l’Université de la Ruhr à Bochum, en Allemagne.
Elle est liée à la manière dont l’application PuTTY génère les nonces ECDSA pour la courbe NIST P-521 utilisée dans le cadre de l’authentification SSH. Un nonce ECDSA est un nombre aléatoire utilisé dans le processus de création de la signature ECDSA. Un nonce est unique pour chaque signature. Dans le cas présent, nous pouvons dire que la fonction de génération de signatures est biaisée à cause de ce problème de sécurité lié à la génération des nonces.
Cette signature numérique est créée à partir de la clé privée de l’utilisateur, et cette clé, comme son nom l’indique, doit rester uniquement en possession de son propriétaire. La signature doit être vérifiée à partir de la clé publique (on parle d’une paire de clés) afin de garantir l’identité de l’utilisateur et sécuriser la connexion.
Calculer la clé privée grâce à la CVE-2024-31497
En exploitant cette vulnérabilité, un attaquant peut parvenir à calculer la clé privée utilisée par l’utilisateur, sans en avoir connaissance à la base.
Pour cela, comme l’explique Marcus Brinkmann sur X (Twitter) :
L’attaque de l’ECDSA avec des nonces biaisés est une technique standard. Un attaquant collecte au moins 521/9≈58 signatures à partir de commits Git signés ou de connexions de victimes au serveur SSH de l’attaquant. Un peu de mathématiques permet à l’attaquant de calculer la clé privée hors ligne.
Ceci implique la collecte de 58 signatures effectuées à partir de la même clé privée pour que celle-ci puisse être découverte. La collecte de ces informations à partir de commits Git signés est certainement plus réaliste et plus “pratique” pour les attaquants.
Pour avoir des techniques, je vous recommande de lire le bulletin de sécurité de PuTTY.
Qui est affecté ? Comment se protéger ?
Cette vulnérabilité, associée à la référence CVE-2024-31497, affecte toutes les versions de PuTTY de la 0.68 à la 0.80, publiée en décembre 2023. La dernière version, à savoir PuTTY 0.81, a été développée et publiée ce lundi 15 avril 2024 dans l’unique but de corriger cette faille de sécurité.
Cependant, il est essentiel de préciser que toutes les clés privées P-521 générée à l’aide d’une version vulnérable de l’outil pourraient être compromises et elles représentent un risque. Dans ce cas, ces clés doivent être renouvelées pour éliminer tous les risques de compromission, et elles sont également à retirer de la liste
authorized_keys
de vos serveurs et équipements.D’autres logiciels s’appuie directement sur PuTTY et sont également affectés.
– Voici une liste, probablement pas exhaustive, de logiciels et des versions impactées :
- FileZilla 3.24.1 - 3.66.5 (corrigé dans 3.67.0)
- WinSCP 5.9.5 - 6.3.2 (corrigé dans 6.3.3)
- TortoiseGit 2.4.0.2 - 2.15.0 (corrigé en 2.15.0.1)
- TortoiseSVN 1.10.0 - 1.14.6 (atténuation possible en configurant TortoiseSVN pour utiliser Plink)
D’autres logiciels sont potentiellement affectés, ce qui pourrait être le cas si un outil s’appuie sur PuTTY (à voir, selon la version).
– Sources:
-
Windows 10 et 11 intègrent le client OpenSSH (Super+R, powershell, ssh.exe)
Il existe aussi Bitvise SSH Client qui est gratuit.La majeure partie des distributions Linux ont le client OpenSSH à disposition et macos l’a aussi.
Je recommande d’y jeter un coup d’œil et laisser PuTTY pour le passé.