
CraftCMS presenta una vulnerabilità RCE tramite condizionali relazionali nel pannello di controllo
CVE-2026-31857 è una vulnerabilità di esecuzione di codice in remoto nelle regole di condizione relazionali di Craft CMS. BaseElementSelectConditionRule::getElementIds() renderizza input controllato dall'utente come template Twig non sandboxed. Un utente autenticato del pannello di controllo può inviare una condizione appositamente costruita tramite un endpoint di elenco elementi ed eseguire comandi sul server. Non sono richiesti privilegi di amministratore.
Craft CMS dalla versione 4.0.0-beta.1 alla 4.17.3 e dalla 5.0.0-RC1 alla 5.9.8 sono interessate. Questo PoC utilizza la forma della richiesta element-index di Craft 5.
È richiesto Python 3 con la sola libreria standard. Fornire l'URL di base e un nome utente del pannello di controllo; lo script richiede la password:
python3 poc.py https://craft.example editor
Inserire i comandi al prompt cmd>, oppure digitare exit per uscire. La directory di lavoro corrente persiste tra i comandi. Per avviare un comando di lunga durata, terminarlo con &; il suo input e output sono scollegati dalla richiesta HTTP e il suo output viene scartato. L'output dei comandi restituito tramite l'header della risposta è limitato agli ultimi 1200 byte.