SSH chiffre la session avec un chiffrement négocié, et les vieux serveurs en proposent encore de faibles. Les chiffrements en mode CBC (par exemple aes128-cbc, 3des-cbc) ont été sujets à une attaque classique de récupération de texte clair dans SSH qui exploitait la manière dont CBC interagit avec la gestion de la longueur des paquets par SSH, permettant à un attaquant de récupérer un texte clair limité à partir d'une session observée. Le chiffrement de flux arcfour (RC4) est cryptographiquement cassé, et le single-DES est trivialement faible. Un serveur annonçant l'un de ces éléments signale une configuration faible et, pour un attaquant capable de capturer ou de se positionner sur la connexion, un chemin vers l'affaiblissement ou l'altération du canal.
# which ciphers are offered?
nmap -p22 --script ssh2-enum-algos <target> | grep -A20 encryption_algorithms
# force a weak/CBC cipher to confirm acceptance
ssh -c aes128-cbc user@<target>
ssh -c 3des-cbc user@<target>
ssh -c arcfour user@<target> # RC4, if offered
Notes d'exploitation#
- La liste
encryption_algorithmsproposée est l'indice : toute entrée-cbc,arcfour*,3desoudesmarque une configuration de serveur faible. - La faiblesse de récupération de texte clair en CBC nécessite une position on-path ou de capture et des conditions spécifiques ; son rendement pratique est un texte clair limité, mais elle signale un serveur qui mérite d'être attaqué cryptographiquement plutôt que seulement par l'authentification.
- Les chiffrements faibles sont rarement isolés ; un serveur qui les propose propose aussi généralement des MAC et un KEX faibles, aggravant l'exposition, voir algorithmes MAC faibles et downgrade d'échange de clés.
- Même là où l'exploitation est impraticable, la présence de chiffrements faibles identifie un build SSH ancien, probablement vulnérable, qu'il vaut la peine de vérifier pour des CVE d'implémentation.