FlawOpen

flawopen.com/Teardowns/cve-2026-1731-beyondtrust-websocket-command-injection

● CVE-2026-1731 · CVSS v4 9.9[1] · Critique
Recherche · FlawOpen

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.

Vecteur CVSSCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:L/SI:H/SA:L[1]
💡 Explication en Langage Simple (ELI5)

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

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

Étape 1

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.

Étape 2

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.

Étape 3

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.

Étape 4

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é.

Étape 5

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.

Étape 6

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

IMPLÉMENTATION VULNÉRABLE
# Exemple réduit : remoteVersion vient du pair.
read -r remoteVersion || exit 1
if [[ "$localVersion" -lt "$remoteVersion" ]]; then
    version=$localVersion
else
    version=$remoteVersion
fi
PATCH SÉCURISÉ ET ROBUSTE
# 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

Sources