El CVE-2026-39397 es una vulnerabilidad crítica de bypass de control de acceso en el plugin @delmaredigital/payload-puck para PayloadCMS, con una puntuación CVSS de 9.4. Analizamos en detalle esta vulnerabilidad CVE-2026-39397 payload-puck, que permite a cualquier atacante remoto, sin autenticación, ejecutar operaciones CRUD en los endpoints del constructor visual Puck, ignorando por completo las reglas de acceso definidas en las colecciones.
| CVE ID | CVE-2026-39397 |
| Severidad (CVSS) | 9.4 – CRÍTICA |
| Vector CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L |
| Productos afectados | Plugin @delmaredigital/payload-puck para PayloadCMS (versiones anteriores a 0.6.23) |
| Exploit público | No |
| Fecha publicación | 2026-04-07 |
Puntos clave sobre la vulnerabilidad CVE-2026-39397 en payload-puck
- Gravedad extrema: Puntuación CVSS 9.4, clasificada como crítica.
- Vector de ataque: Remoto, sin necesidad de autenticación ni interacción del usuario.
- Impacto: Confidencialidad e integridad comprometidas (C:H/I:H), permitiendo lectura, creación, modificación y eliminación de contenidos sin autorización.
- Ámbito: Afecta exclusivamente a proyectos PayloadCMS que utilicen el plugin @delmaredigital/payload-puck en versiones vulnerables.
- Remediación: Actualizar a la versión 0.6.23 o superior del plugin.
¿En qué consiste la vulnerabilidad CVE-2026-39397 en payload-puck?
El fallo reside en la función createPuckPlugin() del plugin. Todos los handlers de los endpoints CRUD bajo la ruta /api/puck/* llamaban a la API local de PayloadCMS con el parámetro overrideAccess: true por defecto. Este parámetro, según la documentación de Payload, omite por completo cualquier control de acceso definido a nivel de colección. vulnerabilidad CVE-2026-39397 payload-puck es clave para entender el alcance de esta amenaza.
En la práctica, esto significa que las reglas de acceso (access) que un desarrollador configure al registrar colecciones con Puck, o las pasadas como opción al propio plugin, eran silenciosamente ignoradas. Un atacante remoto podría, por tanto, interactuar con estos endpoints como si tuviera privilegios administrativos totales. vulnerabilidad CVE-2026-39397 payload-puck es clave para entender el alcance de esta amenaza.
El vector CVSS (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L) nos indica precisamente eso: ataque desde red, baja complejidad, sin privilegios previos ni interacción del usuario, con impacto alto en confidencialidad e integridad, y bajo en disponibilidad.
Análisis técnico del bypass de control de acceso
PayloadCMS estructura su seguridad en torno a funciones access a nivel de colección y operación (create, read, update, delete). El plugin payload-puck genera automáticamente endpoints para gestionar el contenido visual. El error de implementación hizo que, internamente, cada petición a estos endpoints ejecutase una llamada a req.payload.API con la bandera overrideAccess activa, anulando así cualquier lógica personalizada de admin, user o public.
Según el commit de correción, el problema se solucionó eliminando el valor por defecto true y permitiendo que las reglas de acceso configuradas fluyan correctamente.
Sistemas y versiones afectadas por CVE-2026-39397
La vulnerabilidad es específica del ecosistema de PayloadCMS y su integración con el constructor visual Puck. La tabla siguiente detalla el alcance exacto.
| Producto / Plugin | Versiones vulnerables | Versión parcheada |
|---|---|---|
| @delmaredigital/payload-puck | Todas las versiones anteriores a 0.6.23 | 0.6.23 y superiores |
Atención: Cualquier sitio web o aplicación construida con PayloadCMS que utilice una versión vulnerable del plugin es potencialmente explotable si los endpoints /api/puck/* están expuestos públicamente (lo habitual en despliegues estándar).
Cómo parchear CVE-2026-39397: guía paso a paso
La remediación es directa: actualizar el plugin a su versión corregida. A continuación, detallamos el proceso según el gestor de paquetes utilizado.
Paso 1: Verificar la versión actual instalada
En el directorio raíz de tu proyecto PayloadCMS, ejecuta:
npm list @delmaredigital/payload-puck
O revisa directamente tu archivo package.json. Si la versión es menor a 0.6.23, estás vulnerable.
Paso 2: Actualizar a la versión parcheada
Para actualizar usando npm (asegúrate de tener permisos de escritura):
npm update @delmaredigital/payload-puck@0.6.23
Si usas yarn:
yarn upgrade @delmaredigital/payload-puck@0.6.23
Si la versión está fijada en package.json, modifícala manualmente a "@delmaredigital/payload-puck": "^0.6.23" y luego ejecuta npm install o yarn install.
Paso 3: Revisar cambios y reiniciar
Tras la actualización, es crucial reiniciar el servidor de PayloadCMS (o el proceso de despliegue) para que los cambios en el código del plugin se carguen. Recomendamos también ejecutar cualquier suite de pruebas existente para verificar que la integración de Puck sigue funcionando correctamente.
Medidas adicionales de mitigación para CVE-2026-39397
Si, por algún motivo, no puedes aplicar el parche de inmediato, considera estas medidas temporales para reducir la superficie de ataque. Estas no sustituyen a la actualización.
1. Restringir el acceso a los endpoints /api/puck/*
Puedes utilizar reglas de firewall a nivel de aplicación (middleware) o de red para bloquear el acceso externo a las rutas afectadas. Por ejemplo, en un middleware de Express (PayloadCMS se basa en Express):
app.use('/api/puck', (req, res, next) => {
// Permitir solo desde IPs internas o redes de administración
const clientIp = req.ip;
if (!clientIp.startsWith('10.0.') && !clientIp.startsWith('192.168.')) {
return res.status(403).send('Acceso prohibido');
}
next();
});
2. Desactivar el plugin temporalmente
Si la funcionalidad de Puck no es crítica, puedes comentar su registro en la configuración de Payload (payload.config.ts o similar) hasta que puedas parchar. Esto eliminará por completo los endpoints vulnerables.
3. Implementar un Web Application Firewall (WAF)
Configurar reglas en tu WAF para monitorizar y bloquear peticiones inusuales a las rutas de API de Puck puede ayudar a detectar intentos de explotación. Reglas basadas en ratio de peticiones o patrones de inyección son útiles.
Consecuencias de no parchear la vulnerabilidad en payload-puck
Ignorar esta vulnerabilidad expone tu proyecto PayloadCMS a riesgos severos. Un atacante podría, sin ninguna credencial:
- Robar todo el contenido gestionado por Puck: Artículos, páginas, bloques de texto, imágenes y metadatos.
- Modificar o eliminar contenido a voluntad: Alterando la información pública del sitio, lo que conlleva daño reputacional y de confianza.
- Inyectar código malicioso: Si Puck permite contenido HTML/JS, podría ser un vector para ataques de cross-site scripting (XSS) persistente contra los visitantes.
- Comprometer la integridad de la base de datos: Dado que las operaciones CRUD son completas, el atacante tiene un control casi administrativo sobre las colecciones registradas.
En contextos de comercio electrónico, medios de comunicación o administración de contenidos corporativos, el impacto podría ser catastrófico.
- Confirmar que la versión de
@delmaredigital/payload-puckenpackage.jsonypackage-lock.jsones 0.6.23 o superior. - Realizar pruebas de funcionalidad en el constructor visual Puck para asegurar que el parche no ha roto funcionalidades clave.
- Verificar que las reglas de acceso personalizadas en las colecciones de Puck ahora se aplican correctamente, intentando operaciones sin los permisos adecuados.
- Consultar las referencias oficiales: GHSA-65w6-pf7x-5g85 y el commit de fix.
Referencias y recursos oficiales
- NVD – CVE-2026-39397 — Base de datos nacional de vulnerabilidades (NIST)
- Referencia: github.com
- Referencia: github.com
- Referencia: github.com
Recursos y fuentes oficiales:
¿Tu organización está preparada ante las ciberamenazas?
En Iberia Intelligence combinamos Ciberinteligencia y Automatización con IA para anticipar amenazas, proteger activos digitales y blindar la operativa de empresas e instituciones hispanohablantes.