Source: RainPwn (blog). Le billet présente une analyse technique de CVE-2025-9133 affectant les appliances Zyxel ATP/USG, montrant comment le CGI zysh-cgi autorise un contournement d’autorisation durant la vérification 2FA, exposant la configuration système.
• Vulnérabilité: bypass d’autorisation dans le flux 2FA via zysh-cgi, dû à une validation par préfixe (strncmp) des commandes et l’absence de tokenisation. En chaînant des commandes avec «;», un utilisateur partiellement authentifié peut exécuter des commandes non autorisées comme show running-config, malgré une allowlist restrictive pour le profil usr_type 0x14.
• Détails techniques: le paramètre cmd est validé uniquement sur son préfixe (ex. «show version»), puis transmis tel quel au backend CLI, permettant l’exécution séquentielle de commandes chaînées («show version;show running-config;»). Le mode filter=js2 influence la sérialisation de la réponse en fragments JS (zyshdata*), et write=0 maintient un chemin en lecture seule. Lorsque la commande ne matche pas l’allowlist, elle est réécrite vers une forme spéciale qui n’expose pas de données utiles (zyshdata0=[]).
• Impact: exfiltration de configurations sensibles (mots de passe, clés, secrets) et contournement des politiques appliquées aux profils restreints (usr_type == 0x14). Les CGIs classiques d’export/upload renvoient des 302 tant que l’utilisateur n’est pas totalement validé 2FA, mais zysh-cgi reste exploitable dans cet état semi-authentifié.
• Correctifs proposés (côté éditeur): tokeniser et valider chaque sous-commande, bloquer le chaînage «;» au niveau CGI, maintenir une allowlist stricte et complète, abandonner la réécriture magique (fail hard), et renforcer la parsing/normalisation et la défense en profondeur (journalisation, rate-limiting, CSRF).
• Divulgation: signalé à Zyxel le 2025-08-15, CVE-2025-9133 attribué le 2025-08-19; publication de l’avis de sécurité le 2025-10-21, après la sortie du firmware correctif le 2025-10-20.
TTPs observées:
- Chaînage de commandes via «;» pour bypasser une allowlist par préfixe ✅
- Exploitation d’un état semi-authentifié 2FA dans l’interface Web
- Utilisation de zysh-cgi avec paramètres filter=js2, cmd=«show version;show running-config;», write=0
- Contrôle d’accès basé sur usr_type (0x14) influençant l’allowlist
IOCs:
- Aucun IOC concret fourni (hôtes/IPs masqués).
Conclusion: article de recherche technique documentant une vulnérabilité et sa cause racine (validation par préfixe + forwarding brut + réécriture), avec preuve de compréhension et recommandations de remédiation.
🧠 TTPs et IOCs détectés
TTP
Chaînage de commandes via «;» pour bypasser une allowlist par préfixe, Exploitation d’un état semi-authentifié 2FA dans l’interface Web, Utilisation de zysh-cgi avec paramètres filter=js2, cmd=«show version;show running-config;», write=0, Contrôle d’accès basé sur usr_type (0x14) influençant l’allowlist
IOC
Aucun IOC concret fourni (hôtes/IPs masqués)
🔗 Source originale : https://rainpwn.blog/blog/cve-2025-9133/