flawopen.com/Teardowns/cve-2026-1731-beyondtrust-websocket-command-injection
CVE-2026-1731 : injection de commandes BeyondTrust
CVE-2026-1731 permet des commandes sans authentification via WebSocket sur BeyondTrust Remote Support/PRA. Corrigez et vérifiez les systèmes exposés.
Imaginez un accueil qui demande au visiteur un numéro de version, puis remet sa réponse à une calculatrice qui évalue des formules au lieu de vérifier les chiffres. La saisie peut alors devenir une instruction. CVE-2026-1731 exposait cette frontière dans un service BeyondTrust ; le correctif rejette toute valeur qui n’est pas une courte version décimale avant la comparaison.
Concepts Clés et Termes
CVE-2026-1731- Vulnérabilité critique d’injection de commandes système sans authentification dans BeyondTrust Remote Support et Privileged Remote Access.
thin-scc-wrapper- Wrapper shell BeyondTrust utilisé dans un chemin de protocole client. L’analyse du correctif par Rapid7 désigne le traitement de la version fournie par le pair comme frontière vulnérable.
Évaluation arithmétique Bash- Les opérateurs numériques de Bash évaluent leurs opérandes comme des expressions arithmétiques. Un texte non fiable peut ainsi franchir la frontière entre donnée et expression.
CWE-78- Neutralisation incorrecte d’éléments spéciaux utilisés dans une commande système, appelée injection de commandes système.
CISA KEV- Catalogue CISA recensant les vulnérabilités pour lesquelles une exploitation réelle est établie.
Correspondances de référentiels
- Référence CWE pour la faiblesse décrite dans ce guide : CWE-78
- CISA KEV — ajouté le 2026-02-13 — CVE-2026-1731
Analyse de Cause Racine
L’avis BeyondTrust de février 2026 décrit CVE-2026-1731 comme une exécution de code à distance avant authentification dans Remote Support et Privileged Remote Access, avec CWE-78 et un score CVSS 4.0 de 9,9. Des requêtes spécialement conçues pouvaient exécuter des commandes système dans le contexte de l’utilisateur du site. L’analyse du correctif fournisseur par Rapid7 situe la frontière dans le chemin WebSocket de thin-scc-wrapper : le script lit remoteVersion, contrôlé par le pair, puis le compare avec des opérateurs numériques Bash. Ces opérateurs déclenchent une évaluation arithmétique ; une valeur qui n’est pas un nombre simple peut donc être interprétée comme une expression. Le correctif impose un ou deux chiffres ASCII (^[0-9]{1,2}$) avant la comparaison. Le code ci-dessous est une illustration réduite fondée sur les sources, pas un script produit complet ni une preuve d’exploitation. BeyondTrust a signalé les premières tentatives le 10 février et une activité limitée visant les systèmes auto-hébergés exposés à Internet et encore non corrigés avant le 9 février. Google Threat Intelligence Group a ensuite signalé plusieurs groupes exploitant la CVE et diverses actions ultérieures. Ces rapports établissent une activité observée, sans impliquer que toutes les victimes ont subi la même chaîne.
Déroulement de l'Attaque Étape par Étape
Une appliance exposée accepte la connexion protocolaire
Le service concerné expose un chemin WebSocket utilisé par le protocole du client léger. Rapid7 indique que le chemin vulnérable est accessible sans authentification ; BeyondTrust qualifie le problème de RCE pré-authentification.
Le pair fournit une version du protocole
Le wrapper lit une version distante depuis la connexion. Cette valeur est contrôlée par le demandeur, et non une configuration locale de confiance.
Bash traite la valeur comme opérande arithmétique
La comparaison vulnérable utilise des opérateurs numériques Bash. Comme Bash évalue les opérandes numériques comme des expressions, une entrée non validée ne reste pas nécessairement une donnée inerte.
L’injection atteint le compte de service
Une exploitation réussie peut lancer des commandes système dans le contexte de l’utilisateur du site BeyondTrust. Le fournisseur évalue à élevé l’impact sur confidentialité, intégrité et disponibilité.
L’exploitation observée crée un risque de suite
BeyondTrust a signalé des tentatives initiales et une activité limitée contre des appliances auto-hébergées exposées et non corrigées. GTIG a ensuite rapporté plusieurs groupes et actions ultérieures ; chaque rapport décrit des campagnes précises, pas une chaîne universelle.
Le correctif valide avant la comparaison
Le correctif rejette toute version distante invalide et termine le wrapper ; seule une valeur valide poursuit la négociation du protocole. Appliquez le correctif ou la version corrigée et examinez les systèmes exposés pendant leur période de vulnérabilité.
Code Source : Vulnérable vs Sécurisé
Rapid7 indique que le correctif BT26-02 ajoute cette validation à un ou deux chiffres avant la comparaison de remoteVersion. Les extraits sont réduits et omettent le protocole du produit et les détails des requêtes. L’invariant essentiel est de valider avant l’évaluation arithmétique de Bash ; les guillemets seuls ne sécurisent pas les opérandes arithmétiques. Préférez analyser et comparer dans un composant typé sans shell et rejetez les valeurs invalides à la frontière du protocole.
Extrait source: thin-scc-wrapper — illustration réduite fondée sur l’analyse Rapid7 du correctif fournisseur
# Exemple réduit : remoteVersion vient du pair.
read -r remoteVersion || exit 1
if [[ "$localVersion" -lt "$remoteVersion" ]]; then
version=$localVersion
else
version=$remoteVersion
fi
# Rejeter toute entrée inattendue avant une comparaison arithmétique.
read -r remoteVersion || exit 1
if [[ ! "$remoteVersion" =~ ^[0-9]{1,2}$ ]]; then
exit 1
fi
if [[ "$localVersion" -lt "$remoteVersion" ]]; then
version=$localVersion
else
version=$remoteVersion
fi
Liste de Contrôle de Sécurité pour l'Ingénierie
- ✓Recensez toutes les appliances Remote Support et Privileged Remote Access, y compris les systèmes auto-hébergés sans mises à jour automatiques.
- ✓Appliquez BT26-02-RS ou passez Remote Support en version 25.3.2 ou ultérieure ; appliquez BT26-02-PRA ou passez Privileged Remote Access en version 25.1.1 ou ultérieure, selon l’avis BeyondTrust en vigueur.
- ✓Pour tout système auto-hébergé exposé à Internet et non corrigé au 9 février 2026, suivez les consignes d’intervention de BeyondTrust et recherchez les accès non autorisés, la persistance, l’élévation de privilèges et les accès aux données.
- ✓Examinez la télémétrie réseau et applicative afin de repérer les sessions WebSocket inattendues et les processus ou commandes enfants inhabituels lancés par le compte du service ; comparez les alertes au comportement normal de l’appliance.
- ✓À chaque frontière shell, validez les champs du protocole avec une liste stricte avant toute comparaison numérique ; ne transmettez pas de texte non fiable à l’arithmétique Bash, à
evalni à une chaîne de commandes. - ✓Ajoutez des tests de régression pour les versions vides, trop longues, signées, contenant des espaces ou des caractères non décimaux ; exigez leur rejet avant toute comparaison ou création de processus.