CVE-2026-71291
Full vulnerability record from the local CVENow database.
Description
Bolt CMS renders content field values through Twig's full application-level Environment with no SandboxExtension registered anywhere in the codebase. In src/Entity/Field.php, getTwigValue calls shouldBeRenderedAsTwig, which gates rendering only on the field definition's allow_twig flag and a regex checking for , , or ; when true, the raw field value is compiled and rendered via with no sandboxing.
Severity
HIGH
CVSS score
8.8
(v3.1)
Vulnerability status
Deferred
Source identifier
309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c
Published
2026-08-05 13:24:53.820000
Last modified
2026-10-23 21:10:00.157000
View original CVE JSON
{
"id": "CVE-2026-71291",
"sourceIdentifier": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
"published": "2026-08-05T13:24:53.820",
"lastModified": "2026-10-23T21:10:00.157",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Bolt CMS renders content field values through Twig's full application-level Environment with no SandboxExtension registered anywhere in the codebase. In src/Entity/Field.php, getTwigValue calls shouldBeRenderedAsTwig, which gates rendering only on the field definition's allow_twig flag and a regex checking for , , or ; when true, the raw field value is compiled and rendered via with no sandboxing."
},
{
"lang": "es",
"value": "Bolt CMS renderiza los valores de los campos de contenido a través del entorno completo a nivel de aplicación de Twig sin ninguna SandboxExtension registrada en ninguna parte del código base. En src/Entity/Field.php, getTwigValue() llama a shouldBeRenderedAsTwig(), que restringe la renderización solo al indicador allow_twig de la definición del campo y a una expresión regular que verifica ’{{’, ’{%’ o ’{#’; cuando es verdadero, el valor del campo en bruto se compila y renderiza a través de ’self::getTwig() -> createTemplate($value) -> render([’record’ => $this -> getContent()])’ sin sandboxing. El propio paquete de Bolt config/bolt/contenttypes.yaml establece ’allow_twig: true’ en el campo de contenido del tipo de contenido predeterminado ’pages’ de forma predeterminada. Cualquier usuario con acceso de edición a ese tipo de contenido (un rol de editor estándar, no solo un administrador) puede inyectar una carga útil de Twig como ’{{ [’id’]|map(’passthru’)|join }}’ que ejecuta comandos arbitrarios del sistema operativo cuando el contenido se guarda y se renderiza, logrando ejecución remota de código como el usuario del servidor web."
}
],
"affected": [
{
"source": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
"affectedData": [
{
"vendor": "bolt",
"product": "core",
"defaultStatus": "unaffected",
"programFiles": [
"src/Entity/Field.php",
"config/bolt/contenttypes.yaml"
],
"versions": [
{
"version": "0",
"lessThanOrEqual": "6.1",
"versionType": "custom",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"baseScore": 8.8,
"baseSeverity": "HIGH",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 2.8,
"impactScore": 5.9
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-08-05T15:46:43.858659Z",
"id": "CVE-2026-71291",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-1336"
}
]
}
],
"references": [
{
"url": "https://github.com/bolt/core",
"source": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c"
},
{
"url": "https://github.com/bolt/core/blob/6.1/src/Entity/Field.php",
"source": "309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c"
}
]
}