Article

Explication technique

Une vulnérabilité SSH affectant toutes les versions d’OpenSSH à partir de la 2.3, a récemment été publiée par des chercheurs « Qualys Security ». Celle-ci, ne possédant aucun correctif, permet d’énumérer les noms d’utilisateurs présents sur le serveur sous-jacent.

Pour cela, un attaquant doit envoyer un paquet mal formé au serveur OpenSSH.

  • Lorsque le nom d’utilisateur n’existe pas, le serveur répond par un message de type « SSH2_MSG_USERAUTH_FAILURE».
  • Lorsqu’il existe, le serveur fait appelle à la fonction « fatal()» et ferme la connexion de l’attaquant.

Le code d’OpenSSH gérant cette partie de préauthentification se présente comme suit :

Plus précisément, on remarque que lorsqu’un nom d’utilisateur n’est pas valide, la fonction « userauth_pubkey » réalise un « return 0 ». Suite à cela, le message d’erreur est renvoyé par le serveur.

Toutefois, lorsque l’utilisateur existe, la fonction « sshpkt_get_* » est appelée selon la taille du paquet. Dans le cas d’un paquet u8 (unsigned 8-bit), la fonction « sshpkt_get_u8 » est définie comme suit :

Cette fonction appelle « sshbuf_get_u8 » pour réaliser un contrôle sur la taille du paquet envoyé, grâce à la fonction « sshbuf_consume » :

La fonction « sshbuf_consume » retourne quant à elle un message d’erreur de type « message incomplet » lorsque la taille du paquet est supérieure à celle du buffer :

Ainsi, la première fonction « sshpkt_get_u8 » est différente de 0 et la fonction fatal() est donc appelée, déclenchant un évènement d’erreur de type « Incomplete message ».

Un exploit a été publié par le chercheur Matthew Daley. Celui-ci permet d’envoyer un paquet SSH modifié, de telle sorte à ce que sa taille excède celle du buffer SSH (en rajoutant un booléen au message SSH).

Le script utilise les cas de figure décrits précédemment afin de retourner deux messages de type « valide » ou « invalide » en fonction de l’existence ou non de l’utilisateur.

Illustration de la vulnérabilité

Afin d’illustrer le résultat de cet exploit, une preuve de concept a été réalisée en utilisant un serveur OpenSSH 7.6p1 Debian 3 (protocole 2.0) :

Dans le cadre d’un test d’intrusion, ces informations sont souvent très intéressantes pour un attaquant lui permettant de focaliser ses attaques de « brute-force » sur des comptes valides.

Dans le cadre d’une investigation, la ligne suivante sera présente au sein des fichiers de logs :

Il est intéressant de noter que cet évènement n’affiche pas l’adresse IP source de l’attaquant.

Conclusion

À l’heure de la rédaction de cet article, cette vulnérabilité ne s’est pas encore vu attribuer un numéro CVE. De plus, les éditeurs n’ont pas encore publié de correctifs associés alors que la couverture des versions vulnérables semble large.

Afin de pallier cette attaque, il est possible de vous référer à notre l’un de nos précédents articles : Interface SSH exposée ? Quels sont les risques ? Il est néanmoins important de garder en tête qu’une authentification par clés ne permet pas de contrer cette vulnérabilité.

Ecrire un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Catégories
Twitter

TeamViewer bans your ID if you will try to connect with the wrong password and close the connection 10 times, but if you don't finalization a connection (on the screen "Cancel" button), you can brute 4-digit PIN-code.
cmd "C:\PF\TeamViewer\TeamViewer.exe" -i %ID% -P %PIN%

Le 26/09 l'EBG remettra à l'ensemble de la communauté le livre blanc "Cybersécurité et Confiance Numérique" réalisé en partenariat avec @AFNOR, @Certigna et @CESIN_France Pour vous inscrire à la conference @ebg https://t.co/fWQSZHf7Jy … #cybersécurité #EBG

BSSI continue son développement et recherche des compétences en cybersécurité sur Paris et Toulouse. https://t.co/hj4uJ53EVM

La Californie possède sa version du RGPD. #rgpd #privacy #europefirst https://t.co/CtJilpW0z3

Load More...

© 2017 Blog BSSI, inc. All rights reserved.