
CraftCMS présente une vulnérabilité RCE via des conditionnels relationnels dans le panneau de contrôle
CVE-2026-31857 est une vulnérabilité d'exécution de code à distance dans les règles de condition relationnelle de Craft CMS. BaseElementSelectConditionRule::getElementIds() rend une entrée contrôlée par l'utilisateur sous forme de template Twig non sandboxé. Un utilisateur authentifié du panneau de contrôle peut soumettre une condition forgée via un endpoint de liste d'éléments et exécuter des commandes sur le serveur. Les privilèges d'administrateur ne sont pas requis.
Craft CMS 4.0.0-beta.1 jusqu'à 4.17.3 et 5.0.0-RC1 jusqu'à 5.9.8 sont affectés. Ce PoC utilise le format de requête element-index de Craft 5.
Python 3 avec uniquement la bibliothèque standard est requis. Fournissez l'URL de base et un nom d'utilisateur du panneau de contrôle ; le script demande le mot de passe :
python3 poc.py https://craft.example editor
Saisissez des commandes à l'invite cmd>, ou saisissez exit pour quitter. Le répertoire de travail courant persiste entre les commandes. Pour lancer une commande de longue durée, terminez-la par & ; son entrée et sa sortie sont détachées de la requête HTTP et sa sortie est ignorée. La sortie de commande renvoyée via l'en-tête de réponse est limitée aux 1200 derniers octets.