Media

ApostropheCMS import-export: Inyección NoSQL mediante el valor update-key permite hacer coincidir y sobrescribir un documento no identificado

  • Publicada: 20.10.2026
  • Actualizado: 20.10.2026 21:27

Resumen

La función de actualización por clave de @apostrophecms/import-export permite que un documento importado incluya una propiedad <field>:key (por ejemplo, slug:key) cuyo valor se utiliza para buscar un documento existente que actualizar en lugar de insertar uno nuevo. getUpdateKey()/insertOrUpdateDocWithKey() (lib/methods/import.js) utilizan ese valor directamente como valor de consulta en MongoDB sin ningún tipo de saneamiento:

js
const matchingDraftPromise = manager.findForEditing(
  req.clone({ mode: 'draft' }),
  {
    aposMode: 'draft',
    [updateField]: doc[updateKey]
  }).toObject();

Los documentos del archivo se analizan con EJSON (consulte lib/formats/gzip.js), que revive objetos como { $ne: null } como valores activos; se trata de la misma fuente de datos no confiable y del mismo mecanismo de reactivación que ya se corrigió en este módulo para findSingletonAposDocId/findParkedAposDocId en GHSA-79qf-vqgc-7xx3. Esa corrección no modificó insertOrUpdateDocWithKey, por lo que la misma clase de error persiste aquí: una entrada manipulada de "slug:key": { "$ne": null } en el aposDocs.json de un archivo hace que la importación coincida con un documento existente (y luego lo actualice) que el autor del archivo nunca identificó realmente, en lugar de no encontrar ninguna coincidencia.

Impacto

Para explotar esto solo se necesita una sesión autenticada con acceso de importación al tipo de destino (el rol predeterminado de colaborador cuenta con esto, cumpliendo la condición previa de GHSA-79qf-vqgc-7xx3), sin requerir interacción de un administrador. Dado que la coincidencia utiliza un operador de MongoDB en lugar de un valor exacto, no se limita a un documento del cual el importador ya conozca el campo identificador: cualquier documento existente sobre el que el importador tenga permisos genéricos de edición y que satisfaga el operador (lo que { $ne: null } cumple de forma trivial para cualquier documento con un valor no nulo en dicho campo) es candidato. El filtro de permisos findForEditing de Apostrophe, y no la lógica de la clave de actualización, es lo único que restringe qué documento coincide y se sobrescribe realmente.

Comprobado en un entorno activo: una solicitud con rol de colaborador que importaba un documento con "slug:key": { "$ne": null } aplicó su contenido a un borrador de artículo existente y no relacionado, sobrescribiendo su título, sin que el importador hubiera especificado en ningún momento el slug real de ese artículo.

Versiones afectadas

Confirmado en el HEAD de la rama main a fecha de 2026-09-04, packages/import-export/lib/methods/import.js.

Corrección sugerida

Sanear doc[updateKey] para convertirlo en una cadena simple (replicando la solución ya aplicada a type/aposLocale/parkedId en GHSA-79qf-vqgc-7xx3) antes de utilizarlo como valor de consulta, y recurrir a la vía de inserción cuando no se trate de una cadena utilizable.

Qué hacer

Actualice a @apostrophecms/import-export versión 3.7.0 o posterior.

Software afectado

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

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

Referencias

Puntuación CVSS 5.4/10
Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L
Debilidad (CWE)
CWE-284, CWE-943
Plataforma
npm
Paquete
@apostrophecms/import-export
Publicada
20.10.2026
Actualizado
20.10.2026 21:27

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

OSV / GitHub Advisory Database - GHSA-jqw5-w6h3-44g6 - 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.

Entradas en total
4
Primera → última
03.2026 10.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Crítica 1
  • Media 3

Divulgaciones por año

  1. 2026: 4
  1. ApostropheCMS import-export: Inyección NoSQL mediante el valor update-key permite hacer coincidir y sobrescribir un documento no identificado esta entrada
    Media · 5.4 CVE-2026-113662 < 3.7.0 3.7.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.