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/