
O CraftCMS possui uma vulnerabilidade de RCE por meio de condicionais relacionais no painel de controle
CVE-2026-31857 é uma vulnerabilidade de execução remota de código nas regras de condição relacional do Craft CMS. BaseElementSelectConditionRule::getElementIds() renderiza entrada controlada pelo usuário como um template Twig sem sandbox. Um usuário autenticado do Painel de Controle pode enviar uma condição elaborada através de um endpoint de listagem de elementos e executar comandos no servidor. Privilégios de administrador não são necessários.
Craft CMS 4.0.0-beta.1 até 4.17.3 e 5.0.0-RC1 até 5.9.8 são afetados. Este PoC usa o formato de requisição do índice de elementos do Craft 5.
É necessário Python 3 apenas com a biblioteca padrão. Informe a URL base e um nome de usuário do Painel de Controle; o script solicita a senha:
python3 poc.py https://craft.example editor
Digite comandos em cmd>, ou digite exit para sair. O diretório de trabalho atual persiste entre os comandos. Para iniciar um comando de longa duração, termine-o com &; sua entrada e saída são desvinculadas da requisição HTTP e sua saída é descartada. A saída de comando retornada através do cabeçalho de resposta é limitada aos últimos 1200 bytes.