# Seguridad en Craft CMS tras PHP2Shell: cómo proteger los sitios web de agencias

> Proteja Craft CMS frente a PHP2Shell: compruebe PHP en el informe del sistema, resguarde .env y la security key, desactive devMode y contraste la Project Config.

Fuente: https://phpsos.de/es/plattformen/craft-cms/  
Actualizado: 25/10/2026  
Proveedor: PHP SOS, Ayuda de emergencia para PHP y seguridad de servidores. Ayuda inmediata por WhatsApp: https://wa.me/491736494914?text=Hola%20PHP%20SOS%2C%20necesitamos%20ayuda%20con%20nuestro%20servidor%20PHP.%20Empresa%3A%20%E2%80%A6%20Sitio%20web%3A%20%E2%80%A6

**En resumen:** tras PHP2Shell, la seguridad en Craft CMS depende del PHP del servidor, no de Craft. Precisamente las agencias con muchos sitios Craft deberían revisar ahora cada servidor por separado. Tras el parche y el reinicio, conviene revisar `.env`, la security key, `devMode`, la raíz de documentos y el contraste de la Project Config.

## Qué significa PHP2Shell para los sitios Craft

Craft CMS es popular entre las agencias porque ofrece modelos de contenido flexibles y plantillas limpias. En consecuencia, muchas agencias atienden decenas de sitios Craft en distintos servidores y paquetes de hosting. Según el equipo de PHP, las vulnerabilidades de PHP CVE-2026-109618 y CVE-2026-109619 permiten ejecutar código malicioso de forma remota y sin autenticación, con independencia de la versión de Craft.

Para las agencias, la cuestión más importante es por tanto organizativa: ¿qué sitio web funciona dónde, con qué PHP y quién es responsable de la actualización? Una lista de todas las instalaciones con proveedor de hosting, estado de PHP y persona de contacto es el primer paso. Cómo apoyamos a las agencias en ello se describe en [Socio de seguridad para agencias](https://phpsos.de/es/branchen/agenturen-white-label/).

## Seguridad en Craft CMS: comprobar la versión de PHP

En el Control Panel, **Herramientas > Informe del sistema** muestra la versión de PHP, la base de datos y los plugins instalados. Es la versión con la que el sitio web se ejecuta en la web. En cambio, la consola de Craft `php craft`, el procesamiento de la cola y los cron jobs usan el PHP de línea de comandos. Ambos deben estar parcheados.

Las versiones corregidas de origen son 8.5.12, 8.4.27, 8.3.36 y 8.2.35. Muchos proveedores de hosting aplican las correcciones como backport; entonces el número no cambia. Qué versiones están afectadas se muestra en [¿Qué versiones de PHP están afectadas?](https://phpsos.de/es/php2shell/betroffene-php-versionen/). Qué versiones de PHP admite su versión de Craft puede consultarlo, según los requisitos del sistema, en la documentación de craftcms.com.

Craft procesa las tareas en segundo plano en una cola. Si funciona como proceso permanente bajo un gestor de procesos, este también debe reiniciarse tras la actualización de PHP.

## Directorios y configuración en Craft

| Lugar | Contenido | Punto de control |
|---|---|---|
| `.env` | Acceso a la base de datos, `CRAFT_SECURITY_KEY`, otras claves | Renovar los valores ante una sospecha |
| `config/general.php` | `devMode`, `allowAdminChanges`, ruta del Control Panel | Código PHP añadido |
| `config/project/` | Project Config en YAML | Contraste con Git |
| `web/` | Raíz de documentos con `index.php`, `cpresources/`, a menudo subidas | Archivos PHP adicionales |
| `storage/` | Registros, archivos de ejecución, con frecuencia copias de seguridad de la base de datos | No accesible desde la web |
| `templates/` | Plantillas Twig | JavaScript ajeno |
| `modules/`, `vendor/` | Módulos y plugins propios | Archivos modificados, `composer audit` |

Un punto que se pasa por alto con frecuencia es `storage/backups/`. Craft guarda allí copias de seguridad de la base de datos que pueden contener datos completos de clientes y de formularios. Esta carpeta nunca debe estar por debajo de la raíz de documentos.

Comprobaciones inofensivas en la línea de comandos:

```bash
# Mostrar las diferencias entre la Project Config y la base de datos
php craft project-config/diff
# Archivos PHP en la raíz de documentos, salvo index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
```

> **Importante:**
> En producción, `devMode` debe estar en `false`. Con `devMode` activado, Craft muestra mensajes de error detallados con rutas y fragmentos de código que facilitan el trabajo a los atacantes.

## Control Panel, usuarios y plugins

El Control Panel está por defecto en `/admin`. Compruebe qué usuarios tienen derechos de administrador y elimine los accesos de antiguos empleados y freelancers. Craft admite autenticación en dos pasos; utilícela para todas las cuentas con derechos elevados.

Ponga `allowAdminChanges` en `false` en producción. Entonces los campos, las secciones y los ajustes de plugins solo se pueden modificar mediante la Project Config versionada, y cualquier desviación se nota al contrastar con Git. Los plugins del Plugin Store aportan código PHP propio; compruebe si todos siguen manteniéndose y si encajan con la versión de PHP prevista.

```php
// config/general.php, extracto para el entorno de producción
'devMode' => false,
'allowAdminChanges' => false,
```

## Lo que puede y no puede hacer una actualización de Craft

Una actualización de Craft o de un plugin cierra errores en ese código y puede permitir versiones más recientes de PHP. No parchea PHP, no reinicia ni PHP-FPM ni la cola, no renueva una security key filtrada y no elimina archivos ajenos de `web/` o `storage/`.

Para las agencias con muchas instalaciones de Craft, tras el parche cuenta sobre todo la repetibilidad. Deje constancia, por cada sitio web, de qué versión de PHP se ejecuta en la web y en la línea de comandos, cuándo se confirmó el reinicio y si las comprobaciones arrojaron anomalías. Este resumen ayuda ante consultas de clientes y en futuros avisos. Piense también en los entornos de staging y desarrollo accesibles públicamente. A menudo funcionan con `devMode`, versiones más antiguas y datos reales de clientes, y se olvidan fácilmente en las actualizaciones. Si hay dudas sobre si el sitio de un cliente está afectado, informe al cliente de forma objetiva en lugar de esperar.

## ¿Cómo ayuda PHP SOS en concreto?

- Registramos con usted todas las instalaciones de Craft con proveedor de hosting, estado de PHP y responsable.
- Hacemos que se confirmen el parche y el reinicio por servidor y guardamos los registros a partir del 20/10/2026.
- Revisamos la raíz de documentos, `storage`, la configuración, los usuarios y el contraste de la Project Config.
- Si lo desea, nos encargamos del mantenimiento de seguridad continuo de los sitios de sus clientes en el [contrato de mantenimiento de seguridad](https://phpsos.de/es/leistungen/security-wartungsvertrag/), también bajo su nombre.


## Preguntas frecuentes

**¿Está Craft CMS afectado por PHP2Shell?**  
Craft CMS en sí no tiene ninguna vulnerabilidad nueva. Pero se ejecuta sobre PHP, y PHP2Shell está en PHP. Por eso, cualquier instalación de Craft en un servidor sin parchear es potencialmente vulnerable, con independencia de la versión de Craft.

**¿Dónde muestra Craft la versión de PHP?**  
En el Control Panel, en Herramientas > Informe del sistema. Allí figuran la versión de PHP, la base de datos y los plugins instalados. Un backport aplicado no se reconoce por el número; lo confirma su proveedor de hosting.

**¿Qué es la security key en Craft y por qué renovarla?**  
La security key del archivo .env sirve para firmar y cifrar datos. Quien la conozca puede, en determinadas circunstancias, falsificar sesiones o datos de formularios. Ante una sospecha, debería renovarla de acuerdo con su agencia.

**¿Qué aporta poner allowAdminChanges en false?**  
Con ello, los campos, las secciones y los ajustes de plugins ya no se pueden modificar en producción desde el Control Panel. Los cambios solo llegan mediante la Project Config versionada, lo que hace las manipulaciones más difíciles y más visibles.

## Fuentes

- [php.net: avisos de seguridad](https://www.php.net/)
- [Craft CMS](https://craftcms.com/)
- [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/)
- [Versiones de PHP compatibles](https://www.php.net/supported-versions.php)
