Reports
BAJA[AUTENTICACIÓN]#2388183

Nextcloud Deck: clonar un tablero permitía crear tableros nuevos aunque el administrador lo hubiera prohibido

En Nextcloud Deck, un usuario sin permiso para crear tableros podía saltarse la restricción clonando uno existente y renombrando la copia, desde el menú o con POST a /boards/<id>/clone.

Resumen
Resumen en castellano de un reporte público, no una traducción literal. El código y los comandos se mantienen como en el original.

Resumen

Deck, la aplicación de tableros tipo kanban de Nextcloud, permite al administrador limitar la creación de tableros a ciertos grupos. Según el propio texto de la configuración, quien quede fuera de esos grupos no podrá crear tableros propios, aunque sí trabajar en los que le compartan.

La restricción solo se aplicaba a la acción de crear un tablero. La función de clonar tablero no la comprobaba: un usuario sin permiso podía duplicar un tablero al que tuviera acceso (por ejemplo, su tablero "Personal") y renombrar la copia, con lo que obtenía un tablero nuevo con todas las opciones normales. El endpoint afectado es:

POST /nextcloud/apps/deck/boards/board_number/clone

HackerOne lo clasifica como Improper Access Control - Generic. El reporte se envió el 23 de febrero de 2024, se resolvió con recompensa (importe no público) y se divulgó el 16 de enero de 2026.

Pasos de reproducción

  1. Como administrador, crear user1, group1 y group2, y añadir user1 a group1.
  2. En la aplicación Deck, abrir Deck settings y añadir group2 al campo Limit board creation to some groups. La propia interfaz avisa: "Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them."
  3. Entrar como user1 en Deck. El botón + Add board no aparece, como se espera. Si se envía directamente la petición de creación, el servidor responde con un 403 y el mensaje:
Creating boards has been disabled for your account.
  1. Abrir las opciones del tablero Personal y elegir Clone board. Se crea una copia del tablero, que se puede renombrar y usar como un tablero nuevo cualquiera. El mismo resultado se obtiene enviando directamente:
POST /nextcloud/apps/deck/boards/board_number/clone

Impacto

Un usuario al que el administrador ha prohibido crear tableros puede crearlos igualmente, lo que deja sin efecto la opción "Limit board creation to some groups". El reporte no describe acceso a datos de otros usuarios: el efecto es saltarse esa política de creación.

Qué aprender de este caso

  • Cuando una aplicación restringe "crear X", revisa todas las rutas que acaban creando un X: clonar, duplicar, importar, restaurar desde plantilla o desde la papelera. En Deck, crear devolvía 403 y clonar no.
  • Ocultar el botón en la interfaz no es un control: aquí el botón "+ Add board" desaparecía, pero había otra acción en el menú del tablero y su endpoint directo que hacían lo mismo.
  • Al programar, conviene centralizar la comprobación del permiso en la capa que crea la entidad (el servicio que inserta el tablero) y no en cada controlador, para que una función nueva como "clonar" la herede sin acordarse de añadirla.