Quel est le problème ?
Le 9 juillet, SolarWinds a publié un avis concernant une vulnérabilité critique dans Serv-U (CVE-2021-35211) qui lui a été signalée par Microsoft. Selon Microsoft, dans un billet de blog daté du 13 juillet, le problème est activement exploité dans la nature. La vulnérabilité est présente dans le composant SSH de Serv-U, qui est utilisé pour les transferts sécurisés utilisant SCP.
SolarWinds a publié un correctif pour ce problème, qui est disponible pour les clients sous licence dans leur portail d'assistance.
Une analyse de l'internet
Censys peut voir plus de 8 300 services SSH SolarWinds supposés exposés à l'Internet, sur la base d'une empreinte digitale de bannière SSH. Un grand nombre d'entre eux se trouvent en Chine et aux États-Unis :
Au moment de la rédaction du présent document, plusieurs services appartenaient également à des administrations locales et étatiques basées aux États-Unis.
Clés de chiffrement partagées pour SSH
En recherchant ce problème, Censys a découvert une autre bizarrerie avec les hôtes Serv-U. Ils présentent souvent la même clé d'hôte SSH : Ils présentent fréquemment la même clé hôte SSH. Au départ, cela nous a laissés perplexes, car les hôtes sont répartis sur divers réseaux (sans point commun évident). Lorsque les clés d'hôte sont échangées avec plusieurs entités, elles sont effectivement publiques et permettent d'usurper l'identité des serveurs. Une attaque réaliste est difficile à réaliser, bien que quelqu'un puisse théoriquement capturer et décrypter le trafic SSH/SCP s'il se trouve à un emplacement privilégié sur le réseau et peut s'immiscer dans une connexion.
Un rapport Censys de notre plateforme de recherche montre qu'il y a beaucoup d'hôtes partageant la même clé d'hôte qui correspond à une bannière SSH Serv-U :
À l'heure où nous écrivons ces lignes, 4 344 hôtes sur Internet partagent la même clé hôte SSH 53b8131ea00459671cf6ce1169a7c5bacec88ec76fa9b77fdc84bc26e8a1df2b. Ce problème est similaire à celui de Western Digital, qui a fait l'objet d'un rapport sur Censys avec Dan Goodin d'Ars : Les hôtes qui partagent le même matériel de cryptage sont plus faciles à identifier et risquent de laisser filtrer des informations.
Enquêter sur les raisons de l'échange de clés
Pour comprendre la raison de ce phénomène, Censys a téléchargé et installé une version d'essai de Serv-U et a examiné le contenu de l'installation. Il s'avère qu'un certificat et une clé privée par défaut sont livrés avec l'installateur et semblent être utilisés dans de nombreuses installations à travers le monde. Nous pouvons extraire la somme sha256 de la clé hôte du certificat par défaut et la valider :
# pwd
/usr/local/Serv-U
# ls *.crt *.key
Serv-U-DefaultCertificate.crt Serv-U-DefaultCertificate.key
# ssh-keygen -l -f /dev/stdin <<< $(ssh-keygen -i -m PKCS8 -f /dev/stdin <<< $(openssl x509 -pubkey -noout -in Serv-U-DefaultCertificate.crt)) | awk '{print $2 "="}' | cut -c 8- | base64 -d | xxd -p | tr -d '\n' && echo
e9d8efd43200bf3780c3bff6e45601e69f05089c93a1ff36fc2e552a5da3b935
La clé e9d8efd43200bf3780c3bff6e45601e69f05089c93a1ff36fc2e552a5da3b935 apparaît comme la deuxième empreinte de clé hôte réutilisée la plus populaire dans le tableau ci-dessus. À l'heure où nous écrivons ces lignes, Censys la recherche montre 928 appareils utilisant les clés d'hôte actuelles (par empreinte digitale) dans le programme d'installation de SolarWinds Serv-U.. Bien qu'il s'agisse principalement d'un problème de configuration de l'utilisateur, SolarWinds a sa part de responsabilité et peut y remédier en générant de nouveaux certificats au démarrage ou lors d'une nouvelle installation. Ces certificats sont simplement auto-signés.
Nous pouvons aller un peu plus loin et laisser tomber le composant de la bannière SSH mentionné ci-dessus lorsque nous recherchons des hôtes Serv-U exposés. Si nous faisons cela, et que nous recherchons simplement l'empreinte de la clé de l'hôte, nous trouvons beaucoup plus d'hôtes. Cela signifie que certains hôtes ont caché Serv-U dans leurs informations de bannière. Ces hôtes répondent généralement avec une bannière qui ressemble à "SSH-2.0-2.0", au lieu d'une bannière ressemblant à "SSH-2.0-Serv-U_###" (où ### est une version). En comparant cette recherche à la précédente, nous avons trouvé 1 311 hôtes utilisant les clés d'hôtes d'expédition, soit 383 hôtes supplémentaires par rapport à la recherche précédente lorsque nous avions inclus le filtre de bannière SSH Serv-U.
C'est plus qu'un simple SSH
Lors de nos recherches sur les clés des hôtes partagés, nous avons décidé de creuser un peu plus pour savoir si d'autres services partagés utilisaient également le certificat (fichier .crt). Si nous vidons les détails de ce certificat, nous obtenons des informations intéressantes :
$ openssl x509 -noout -text -in Serv-U-DefaultCertificate.crt -fingerprint -sha256
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 0 (0x0)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C = US, ST = WI, L = Helenville, O = "Rhino Software, Inc.", OU = Software Development, CN = ftp.Serv-U.com
Validity
Not Before: May 13 17:27:39 2020 GMT
Not After : May 11 17:27:39 2030 GMT
Subject: C = US, ST = WI, L = Helenville, O = "Rhino Software, Inc.", OU = Software Development, CN = ftp.Serv-U.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:b1:71:4f:17:61:bb:11:b2:91:94:24:96:6f:72:
89:8b:f5:eb:af:12:1a:a5:c1:35:d5:18:70:51:bc:
ae:6c:1c:71:8c:8e:3d:fb:71:e3:d2:c2:cc:79:52:
c6:05:2e:8a:aa:c8:a7:27:b9:ef:c6:93:ff:c1:53:
05:00:4a:2a:41:e1:36:8b:de:08:71:7b:aa:86:17:
f2:cd:27:92:a6:ac:69:ea:8c:f2:9c:92:b4:c3:7e:
ea:d3:d2:c7:20:0d:00:76:42:2f:66:8c:ae:ce:88:
51:6b:a4:d3:45:c5:e9:72:e9:d2:43:e7:dc:5e:15:
ad:6e:57:d9:54:ea:9e:df:ea:41:e7:5c:0f:64:c7:
9e:b5:62:48:48:4f:00:d6:bc:f3:93:3c:17:d8:c5:
3e:22:d5:a0:5e:66:74:be:9a:62:40:0a:a0:30:34:
04:c0:48:e8:c9:3d:76:81:87:f1:54:41:a3:d8:ba:
6d:5a:c6:b5:dc:ff:bb:46:04:1c:0d:df:35:d6:f1:
b9:c5:5b:a0:ee:4f:ca:3d:ef:0c:f2:fe:fe:f3:16:
0e:8e:a1:6f:f6:08:27:45:f3:5e:b6:16:52:b7:d7:
c8:0e:8a:d6:ec:48:b6:54:f7:d7:f9:b8:e2:f1:3f:
b5:77:d5:ab:00:04:45:7d:df:79:42:7b:31:7f:02:
3d:73
Exponent: 65537 (0x10001)
Signature Algorithm: sha1WithRSAEncryption
5b:75:e7:49:03:35:f6:03:94:fc:d5:9d:81:a6:f3:12:8f:81:
74:c8:89:7d:1f:f0:d2:ec:50:f2:b1:18:be:53:ea:68:9d:7f:
63:29:56:4f:f3:12:23:15:da:52:ae:0d:e0:c1:e5:5c:c3:c4:
56:df:4c:c0:56:5b:2b:02:b9:a5:93:bc:c3:7d:c9:74:1a:22:
61:c3:42:42:62:ea:91:bc:81:5f:ee:8c:fc:18:bb:1a:d2:ea:
06:9e:a7:e2:06:17:af:61:6e:57:7a:49:fd:a7:2b:38:b1:53:
26:d1:be:9d:e8:f5:26:3c:fa:18:c6:2b:35:ee:b8:f5:a5:d0:
97:86:cb:ff:17:40:38:9e:40:34:18:73:ff:7b:80:f9:69:64:
03:f6:07:b9:4d:76:48:a6:aa:07:f5:ce:fb:cd:0d:e5:d5:7a:
2c:94:8a:cf:b7:bc:0a:20:4c:da:72:db:a6:5b:ed:26:a0:c0:
d7:0c:21:1c:0f:3e:80:96:e2:30:80:dd:9f:2b:b2:e2:63:a1:
f4:83:02:b2:c6:4c:bd:58:a2:c0:55:68:99:26:c9:18:ab:79:
bf:10:1b:06:37:9f:eb:e2:1d:9e:3c:5c:67:18:8f:56:65:6d:
a3:fe:cd:fa:0d:7f:0d:69:67:ae:da:db:18:7b:58:49:5d:19:
5f:3c:37:f9
SHA256 Fingerprint=C2:AE:DB:13:CC:A1:37:9A:F5:7C:4E:09:A8:7F:20:ED:34:69:49:20:34:A6:B8:A0:FB:8E:26:D0:44:80:84:79
L'empreinte unique du certificat semble intéressante. Pouvons-nous trouver d'autres services sur l'internet par le biais de la recherche Censys qui partagent cette empreinte digitale ? Il s'avère que oui. En recherchant l'empreinte digitale du certificat, nous pouvons trouver 3 293 hôtes qui utilisent ce certificat pour le FTP, le HTTP et le SMTP. Il s'agit de services supplémentaires que Serv-U utilise pour le transfert, et ils sont tous exposés à un risque similaire.
Pourquoi est-ce important ?
Selon Microsoft, "si le SSH de Serv-U est exposé à l'internet, une exploitation réussie donnerait aux attaquants la possibilité d'exécuter à distance un code arbitraire avec des privilèges, ce qui leur permettrait d'effectuer des actions telles que l'installation et l'exécution de charges utiles malveillantes, ou la visualisation et la modification de données". Microsoft poursuit en attribuant la campagne d'exploitation active à un groupe appelé DEV-0322, basé en Chine. Ce groupe a principalement ciblé les entreprises américaines de défense et de logiciels, selon leur billet de blog.
Des milliers d'hôtes SolarWinds Serv-U sont exposés à l'Internet. Ces hôtes sont facilement repérables car ils partagent tous des caractéristiques communes (clés d'hôte et bannières). De plus, la découverte de milliers de clés SSH par défaut signifie que des milliers d'hôtes Serv-U ont un chiffrement fragile. Comme l'a dit HD Moore, "c'est essentiellement du telnet à ce stade". Il est clair que le problème signalé par Microsoft a un impact considérable si l'on se base sur le nombre d'hôtes Serv-U en contact avec le public. Un exploit sera inévitablement mis au jour, car les chercheurs diffèrent binairement le correctif pour voir ce que les chercheurs de SolarWinds ont corrigé. Il est important que les organisations corrigent rapidement ce problème pour éviter une brèche, car les hôtes Serv-U sont facilement repérables.
Que dois-je faire ?
Ressources