Baja

ApostropheCMS: Falta de autenticación en la ruta `cleanExport`

  • Publicada: 21.10.2026
  • Actualizado: 21.10.2026 20:24

1. Resumen

El endpoint de API POST /api/v1/@apostrophecms/import-export/clean-export en @apostrophecms/import-export carece de comprobaciones de autenticación y autorización. Cualquier cliente —incluidos los usuarios anónimos no autenticados que hayan obtenido la cookie CSRF estándar al visitar el sitio— puede invocar directamente esta ruta y activar el método subyacente self.cleanExport(req).


2. Archivos y endpoints afectados

  • Endpoint: POST /api/v1/@apostrophecms/import-export/clean-export
  • Definición de ruta: packages/import-export/lib/apiRoutes.js (líneas 32–34)
  • Implementación del método: packages/import-export/lib/methods/import.js (líneas 1271–1324)

3. Análisis de causa raíz

En packages/import-export/lib/apiRoutes.js, el manejador get.related valida explícitamente que el solicitante haya iniciado sesión:

js
get: {
  async related(req) {
    if (!req.user) {
      throw self.apos.error('forbidden');
    }
    // ...
  }
}

Por el contrario, post.cleanExport (así como post.overrideDuplicates) carece de cualquier verificación de req.user:

js
post: {
  async overrideDuplicates(req) {
    return self.overrideDuplicates(req);
  },

  async cleanExport(req) {
    return self.cleanExport(req); // <-- No authentication check
  }
}

Dado que ApostropheCMS no aplica la autenticación globalmente en todos los apiRoutes, omitir una protección explícita mediante if (!req.user) permite que las solicitudes anónimas pasen directamente a la capa de lógica de negocio.


4. Evidencia

Al enviar una solicitud POST no autenticada con la cookie CSRF del sitio (emitida a cualquier visitante en GET /), la solicitud elude el control de acceso por completo y ejecuta self.cleanExport(req), como se demuestra en el seguimiento de pila del servidor:

at Object.cleanExport (.../packages/import-export/lib/methods/import.js)
at .../packages/apostrophe/modules/@apostrophecms/module/index.js:193:30

Esto confirma que la ejecución llega directamente al manejador principal de importación/exportación sin una sesión autenticada.


5. Impacto

  1. Control de acceso roto: Los usuarios no autenticados pueden invocar operaciones de limpieza y eliminar archivos temporales de exportación y artefactos almacenados en el servidor.
  2. Mutación de estado no autorizada: El endpoint permite modificar registros de tareas en la base de datos a través de req.body.jobId (forzándolos a ended: true, status: 'completed') y descartar notificaciones mediante req.body.notificationId sin verificar si los recursos pertenecen al solicitante.

6. Mitigación sugerida (parche)

Aplique una comprobación de autenticación en packages/import-export/lib/apiRoutes.js antes de ejecutar los métodos subyacentes:

diff
--- a/packages/import-export/lib/apiRoutes.js
+++ b/packages/import-export/lib/apiRoutes.js
@@ -26,10 +26,16 @@ module.exports = self => {
     get: { ... },
     post: {
       async overrideDuplicates(req) {
+        if (!req.user) {
+          throw self.apos.error('forbidden');
+        }
         return self.overrideDuplicates(req);
       },
 
       async cleanExport(req) {
+        if (!req.user) {
+          throw self.apos.error('forbidden');
+        }
         return self.cleanExport(req);
       }
     }

Qué hacer

Actualice @apostrophecms/import-export a la versión 3.7.1 o posterior. Alternativamente, implemente una comprobación de autenticación en packages/import-export/lib/apiRoutes.js antes de ejecutar los métodos subyacentes.

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Paquete de npm @apostrophecms/import-export < 3.7.1 3.7.1

Referencias

Puntuación CVSS 3.1/10
Vector CVSS
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N
Debilidad (CWE)
CWE-306, CWE-862
Plataforma
npm
Paquete
@apostrophecms/import-export
Publicada
21.10.2026
Actualizado
21.10.2026 20:24

Fuentes y licencias · Editado o traducido por DockRay; se mantienen los derechos y las licencias de las fuentes.

OSV / GitHub Advisory Database - GHSA-rw26-wwfc-9wvm - CC BY 4.0

Historial de vulnerabilidades: @apostrophecms/import-export

Todas las vulnerabilidades publicadas de este paquete (Paquete de npm), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (9) en el archivo
Entradas en total
9
Primera → última
03.2026 10.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Crítica 1
  • Alta 1
  • Media 6
  • Baja 1

Divulgaciones por año

  1. 2026: 9
Gravedad:
  1. ApostropheCMS: Falta de autenticación en la ruta `cleanExport` esta entrada
    Baja · 3.1 CVE-2026-113648 < 3.7.1 3.7.1

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.