ApostropheCMS: la ruta REST :_id/locales omite la barrera de autorización de la API pública que aplican sus rutas de lectura hermanas (divulgación de existencia de documento y metadatos de configuración regional)
Resumen
La ruta REST GET /api/v1/<piece-type>/:_id/locales (y la ruta de página equivalente) no aplica la barrera publicApiCheckAsync que imponen las demás rutas de lectura de ApostropheCMS. Un atacante no autenticado puede consultar esta ruta para cualquier documento _id y descubrir si el documento existe y en qué configuraciones regionales está publicado, lo que constituye una divulgación de existencia de documentos y metadatos de configuración regional que la API de lectura debería restringir.
Componentes afectados
- Repositorio:
apostrophecms/apostrophe(paquete monorepoapostrophe). - Confirmado en 4.32.2 (commit
d3ff8c9== el publicado 4.32.2; sin cambios en el HEAD actual al momento del reporte). Sin corrección al momento del reporte. - Pila tecnológica: Node.js / Express + MongoDB.
- Endpoints:
GET /api/v1/<piece-type>/:_id/localesyGET /api/v1/@apostrophecms/page/:_id/locales.
Detalle técnico
- No seguro:
modules/@apostrophecms/piece-type/index.js:397registra la ruta:_id/localessinpublicApiCheckAsync. El módulo de página presenta la misma omisión enmodules/@apostrophecms/page/index.js:925. - Rutas hermanas protegidas: las rutas de lectura en el mismo módulo (por ejemplo,
getAllenpiece-type/index.js:256-263) llaman apublicApiCheckAsync(:263) para aplicar la directiva de acceso a la API pública. - De este modo, el manejador
locales(que invocagetLocales()para el documento) se ejecuta para cualquier cliente, independientemente del control de API pública que aplican las demás rutas de lectura, devolviendo los metadatos de configuración regional y publicación del documento sin autorización.
Impacto
Un cliente no autenticado puede confirmar la existencia de un documento mediante _id y enumerar sus configuraciones regionales y estado de publicación, información que la API de lectura está diseñada para restringir. Se evalúa razonablemente como 4.3 (AC:H) dada la precondición del identificador opaco _id (el cliente necesita conocer el ID del documento).
Verificación (solo local)
Reproducido localmente contra apostrophe@4.32.2 (== commit d3ff8c9) con contenido sintético:
- La revisión del código fuente confirmó que la ruta
:_id/localescarece depublicApiCheckAsync, mientras que las rutas de lectura hermanas sí lo tienen. - Una solicitud no autenticada a
GET /api/v1/<piece-type>/<_id>/localesdevolvió los metadatos de configuración regional del documento (existencia + locales), mientras que las rutas protegidas (por ejemplo,getAll) exigieron correctamente la política de API pública. - Control: la misma ruta con la comprobación
publicApiCheckAsyncañadida (igualando a las rutas hermanas) deniega la petición no autenticada, aislando la falta del control como la causa. Solo se empleó contenido sintético; no se interactuó con ningún entorno alojado.
Créditos
Crédito a Santosh Kumar Puppala (https://github.com/Santoshkumarpuppala).).
Qué hacer
Agregue la barrera de autorización publicApiCheckAsync (o equivalente) a la ruta :_id/locales tanto en el módulo piece-type como en el módulo page, coincidiendo con las rutas de lectura hermanas, de modo que los metadatos de existencia y configuración regional solo se devuelvan a los clientes autorizados por la directiva de la API pública.
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida en |
|---|---|---|---|
| Paquete de npm | apostrophe | < 4.33.0 | 4.33.0 |
Referencias
- https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-gqh3-7856-rjjg
- https://github.com/apostrophecms/apostrophe/commit/9500b8b0e1d630d5e07fbb5fd2c25ed0943845ce
- https://github.com/apostrophecms/apostrophe/commit/f84fd41cbf6c22eb8d0008fc9c25df1f7130b350
- https://github.com/apostrophecms/apostrophe
- https://github.com/apostrophecms/apostrophe/releases/tag/apostrophe@4.33.0
- Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N- Debilidad (CWE)
CWE-200, CWE-862- 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-gqh3-7856-rjjg - 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.
- 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
- 2020: 2
- 2021: 2
- 2022: 0
- 2023: 0
- 2024: 0
- 2025: 0
- 2026: 23
-
ApostropheCMS: la ruta REST :_id/locales omite la barrera de autorización de la API pública que aplican sus rutas de lectura hermanas (divulgación de existencia de documento y metadatos de configuración regional) esta entrada
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.