Alta

ApostropheCMS: Las solicitudes no autenticadas de importación de CSV dejan cargas rechazadas en el directorio temporal del sistema

  • Publicada: 20.10.2026
  • Actualizado: 20.10.2026 21:26

Resumen

Una carga rechazada puede permanecer en el directorio temporal del sistema operativo.

Multer escribe el archivo antes de que se verifique su extensión, y la ruta de rechazo no elimina dicho archivo temporal. Un solicitante no autenticado puede repetir esto con archivos grandes y consumir progresivamente el espacio en disco temporal.

Detalles

El endpoint es:

POST /api/v1/@apostrophecms/rich-text-widget/generate-csv-table

En packages/apostrophe/modules/@apostrophecms/rich-text-widget/lib/apiRoutes.js, Multer escribe primero la carga en os.tmpdir(). Luego, el controlador rechaza los nombres de archivo cuya extensión no sea csv, pero no hay limpieza del archivo de Multer en esta ruta de error.

La ruta no requiere un usuario autenticado. Una cookie CSRF estándar es suficiente.

Durante las pruebas, la solicitud devolvió HTTP 400 con Only csv files are supported, mientras que el contenido completo cargado permaneció en un archivo con nombre aleatorio en el directorio temporal configurado tras emitirse la respuesta.

Relación con trabajos públicos anteriores

Se revisó el PR #5013,, el cual migró la ruta de subida de CSV en texto enriquecido de connect-multiparty a Multer. Este informe concierne a la limpieza posterior a dicha migración: el archivo rechazado por Multer permanece en el disco, un comportamiento que no fue descrito en el PR ni en la discusión de su revisión.

Prueba de concepto (PoC)

Cree un archivo de prueba pequeño. Se puede usar un archivo más grande para demostrar el crecimiento del disco, pero 1 MiB es suficiente para una reproducción local segura:

bash
dd if=/dev/zero of=rejected.txt bs=1M count=1

Obtenga las cookies normales del sitio y envíe la carga rechazada:

bash
curl -c cookies.txt 'http://127.0.0.1:3000/' > /dev/null

curl -i -b cookies.txt \
  -F 'file=@rejected.txt;filename=rejected.txt;type=text/plain' \
  'http://127.0.0.1:3000/api/v1/@apostrophecms/rich-text-widget/generate-csv-table'

La respuesta es HTTP 400. Compare el contenido del directorio temporal del sistema antes y después de la solicitud:

bash
ls -lt /tmp

Permanece un nuevo archivo con un nombre aleatorio que contiene los bytes cargados.

No se requiere inicio de sesión. La repetición de la solicitud multipart genera archivos temporales persistentes adicionales.

Impacto

Un atacante remoto no autenticado puede llenar la partición utilizada por el directorio temporal del sistema operativo. Una vez agotada esa partición, es posible que Apostrophe y otros servicios no relacionados en el mismo host no puedan cargar archivos, crear datos temporales o continuar funcionando normalmente.

El ataque requiere únicamente solicitudes HTTP repetidas y los archivos almacenados permanecen tras cada respuesta rechazada.

Qué hacer

Actualice a ApostropheCMS versión 4.33.0 o posterior.

Software afectado

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

PlataformaPaqueteVersiones vulnerablesCorregida en
Paquete de npm apostrophe < 4.33.0 4.33.0

Referencias

Puntuación CVSS 7.5/10
Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Debilidad (CWE)
CWE-400, CWE-459, CWE-770
Plataforma
npm
Paquete
apostrophe
Publicada
20.10.2026
Actualizado
20.10.2026 21:26

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

OSV / GitHub Advisory Database - GHSA-qhcq-9pm2-c9w9 - CC BY 4.0

Historial de vulnerabilidades: apostrophe

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 (27) en el archivo
Entradas en total
27
Primera → última
09.2020 10.2026
Sin corrección
4
Explotada en ataques
0

Distribución por gravedad

  • Crítica 2
  • Alta 8
  • Media 13
  • Baja 4

Divulgaciones por año

  1. 2020: 2
  2. 2021: 2
  3. 2022: 0
  4. 2023: 0
  5. 2024: 0
  6. 2025: 0
  7. 2026: 23
Gravedad:
  1. ApostropheCMS: Las solicitudes no autenticadas de importación de CSV dejan cargas rechazadas en el directorio temporal del sistema esta entrada
    Alta · 7.5 CVE-2026-113658 < 4.33.0 4.33.0
  2. Alta · 7.3 CVE-2026-45011 = 4.29.0 sin corrección
  3. Crítica · 9.8 CVE-2021-25979 >= 2.63.0, < 3.4.0 3.4.0

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.