TLDR : si vous avez un Zyxel USG, ATP, VPN, ZyWALL ou USG FLEX, vous devez mettre à jour la dernière version du micrologiciel aujourd'hui. Vous pouvez trouver la liste complète des appareils concernés ici et l'avis de sécurité de Zyxel ici.
Zyxel est une marque populaire de pare-feu destinés aux entreprises. Sa gamme de produits Unified Security Gateway (USG) est souvent utilisée comme pare-feu ou passerelle VPN. Comme beaucoup d'employés travaillent à domicile, les appareils compatibles avec les VPN se sont bien vendus ces derniers temps.
En faisant quelques recherches (rooting) sur notre Zyxel USG40, nous avons été surpris de trouver un compte utilisateur 'zyfwp' avec un mot de passe haché dans la dernière version du micrologiciel(4.60 patch 0). Le mot de passe en clair était visible dans l'un des binaires du système. Nous avons été encore plus surpris de constater que ce compte semblait fonctionner à la fois sur l'interface SSH et sur l'interface Web.
$ ssh zyfwp@192.168.1.252
Password: Pr*******Xp
Router> show users current
No: 1
Name: zyfwp
Type: admin
(...)
Router>
L'utilisateur n'est pas visible dans l'interface et son mot de passe ne peut pas être modifié. Nous avons vérifié la version précédente du micrologiciel (4.39) et bien que l'utilisateur soit présent, il n'avait pas de mot de passe. Il semble que la faille ait été introduite dans la dernière version du micrologiciel. Même si les anciennes versions n'ont pas cette faille, elles en ont d'autres (comme ce débordement de tampon), vous devez donc effectuer une mise à jour.
Comme le VPN SSL de ces appareils fonctionne sur le même port que l'interface Web, de nombreux utilisateurs ont exposé le port 443 de ces appareils à Internet. En utilisant les données publiques de Project Sonar, nous avons pu identifier environ 3 000 appareils Zyxel USG/ATP/VPN aux Pays-Bas. Globalement, plus de 100 000 appareils ont exposé leur interface Web à Internet.
D'après notre expérience, la plupart des utilisateurs de ces appareils ne mettent pas à jour le micrologiciel très souvent. Les appareils Zyxel n'exposent pas la version de leur logiciel aux utilisateurs non authentifiés, il est donc un peu plus difficile de déterminer si un appareil est vulnérable. Nous voulions avoir une idée du nombre d'appareils concernés, mais il n'était pas vraiment possible d'essayer simplement avec le mot de passe (éthiquement et légalement). Heureusement, certains fichiers Javascript et CSS peuvent être demandés depuis l'interface Web de ces appareils sans authentification. Ces fichiers semblent changer avec chaque version du micrologiciel. En utilisant cette information, nous pouvons obtenir une empreinte unique de la version vulnérable du micrologiciel. Nous avons utilisé cette information pour identifier la version de logiciel de 1 000 appareils aux Pays-Bas et avons constaté qu'environ 10 % d'entre eux utilisaient la version du micrologiciel affecté. Zyxel propose des mises à jour automatiques, mais celles-ci ne sont pas activées par défaut. Heureusement, nous avons pu découvrir cette faille quelques semaines seulement après son introduction, sinon le nombre d'appareils touchés aurait pu être beaucoup plus important.
Comme l'utilisateur zyfwp dispose de privilèges d'administrateur, il s'agit d'une vulnérabilité grave. Un attaquant pourrait compromettre complètement la confidentialité, l'intégrité et la disponibilité de l'appareil. Une personne pourrait par exemple modifier les paramètres du pare-feu pour autoriser ou bloquer certains trafics. Il pourrait également intercepter le trafic ou créer des comptes VPN pour accéder au réseau auquel l'appareil est relié. Combiné à une faille comme Zerologon, cela pourrait être dévastateur pour les entreprises.
En raison de la gravité de cette faille et de sa facilité d'exploitation, nous avons décidé de ne pas divulguer le mot de passe de ce compte pour le moment. D'autres personnes vont probablement le trouver et le publier, c'est pourquoi nous vous suggérons d'effectuera mise à jour du micrologiciel dès que possible.
Nous avons rapidement envoyé un e-mail à Zyxel pour signaler le compte utilisateur clandestin. Selon Zyxel, le compte a été conçu pour fournir des mises à jour automatiques du micrologiciel aux points d'accès connectés via FTP. Une version corrigée du micrologiciel a été publiée moins de deux semaines plus tard.
Voici l'entrée dans les notes de publication qui décrit cette faille :
[BUG FIX][CVE-2020-29583]
a. Vulnerability fix for undocumented user account.
Nous tenons à remercier l'équipe de sécurité de Zyxel pour sa réponse rapide et son correctif.
Chronologie de la divulgation
2020-11-29 : Signalement de la faille par Eye à la sécurité de Zyxel
2020-11-30 : Accusé de réception de Zyxel
2020-12-02 : Demande d'informations complémentaires de la part de Zyxel sur la façon dont la faille a été découverte.
2020-12-03 : Envoi d'informations de la part d'Eye
2020-12-08 : Publication par Zyxel du micrologiciel bêta 4.60-WK48 et suppression de la version vulnérable du micrologiciel de son site.
2020-12-15 : Publication par Zyxel du micrologiciel 4.60 patch 1 pour la plupart des appareils.
2020-12-18 : Publication par Zyxel du micrologiciel 4.60 patch 1 pour tous les autres dispositifs.
2020-12-23 : Publication de l'avis de sécurité de Zyxel.