Skip to content

About

Mapa multinorma en español: ENS, ISO/IEC 27001, NIS2, ISO/IEC 42001, DORA, RGPD, NIST CSF 2.0 y leyes LATAM. 594 requisitos sobre 152 controles, refuerzos del ENS, perfil regulatorio y 25 reglas de coherencia. En el navegador, sin servidor.

Topics

Resources

Security policy

Stars

13 stars

Watchers

2 watching

Forks

Repository files navigation

header

Herramienta de cumplimiento multinorma: relaciona los requisitos de dieciséis normas y leyes (ENS, ISO/IEC 27001, NIS2, ISO/IEC 42001, DORA, RGPD, leyes de Latinoamérica…) con un catálogo común de controles y calcula el grado de cumplimiento de cada una.

Abrir Rosetta

Licencia GPLv2 ENS RD 311/2022 ISO/IEC 27001:2022 NIS2 + RE 2024/2690 ISO/IEC 42001:2023 RGPD y LOPDGDD CI axe-core: 0 violaciones Interfaz ES/EN Iconos Lucide

Resumen de un proyecto: estado de los 152 controles por norma y grado de cumplimiento

Rosetta enlaza los 594 requisitos de dieciséis normas y leyes (ENS, ISO/IEC 27001, NIS2, ISO/IEC 42001, Part-IS de aviación, el RIA, el Reglamento europeo de IA, el CRA, la ley de ciberresiliencia de productos, el NIST CSF 2.0, DORA, para el sector financiero, el RGPD con la LOPDGDD, las leyes 21.663 y 21.719 de Chile y las leyes de protección de datos de Colombia, México, Perú y Argentina) con 152 controles unificados agrupados en 14 dominios, y admite marcos propios que importa el usuario. El estado de cada control (implantado, parcial, pendiente o no aplica) se registra una sola vez y la herramienta calcula:

  • el grado de cumplimiento de cada norma del alcance y de cada uno de sus requisitos;
  • qué marcos aplican a la organización y por qué, según su perfil regulatorio (jurisdicción, sector y rasgos), con la base legal de cada uno;
  • los requisitos sin cubrir y las incoherencias entre normas (26 reglas);
  • el orden de implantación, según cuántos requisitos cubre cada control pendiente en todas las normas.

Funciona en el navegador, sin servidor y sin conexión. Los datos del proyecto no salen del equipo.

$ cat rosetta.yaml

rosetta:~$ cat rosetta.yaml
├─ ⚖ normas:

ENS ISO/IEC 27001 NIS2 ISO/IEC 42001 Part-IS RIA CRA NIST CSF DORA RGPD y LOPDGDD Leyes de Chile Protección de datos LATAM
ENS 77 · ISO/IEC 27001 118 · NIS2 59 · ISO/IEC 42001 65 · Part-IS 13 · RIA 28 · CRA 29 · NIST CSF 106 · DORA 24 · RGPD 15 · Chile 20 · CO/MX/PE/AR 40 requisitos · marcos propios
├─ ▣ modelo:

Controles unificados Dominios Reglas de coherencia Plan de acción
152 controles · 14 dominios · 26 reglas · 92 refuerzos del ENS · perfiles del CCN · perfil regulatorio · plan priorizado
├─ ✦ aplicacion:

JavaScript HTML CSS JSON Lucide
JavaScript · HTML · CSS · JSON · Lucide
├─ ⚙ build_ci_cd:

Node.js Git GitHub Actions GitHub Pages
Node.js · Git · GitHub Actions · GitHub Pages
├─ ◉ pruebas:

node:test Playwright axe-core CodeQL
node:test 169 · Playwright 96 · axe-core 0 violaciones · CodeQL
╰─ ⌁ seguridad:

CSP SRI SheetJS Sin terceros
CSP con hashes · SRI · SheetJS 0.20.3 · cero peticiones a terceros
version: 2.15.1  ·  catalogo: 2.15.1  ·  CCN-STIC 825: abril 2026  ·  pruebas: 265 ok  ·  licencia: GPLv2

Índice


Cómo se usa

  1. Alcance. Normas aplicables; categoría del ENS y nivel de cada dimensión (D, I, C, A, T); clasificación NIS2 según los arts. 2 y 3 de la Directiva (incluye entidades CER, prestadores de confianza, DORA y exclusiones del art. 2.7–2.8); inclusión de ISO/IEC 42001.
  2. Punto de partida. Desde cero, desde la Declaración de Aplicabilidad del ENS en Excel (plantilla de 73 medidas) o desde uno de los nueve casos de ejemplo.
  3. Estado de los controles. Implantado, parcial, pendiente o no aplica, con responsable, evidencias y fecha de revisión. Cada cambio recalcula las normas del alcance y se puede deshacer.
  4. Revisión. Cobertura por norma y requisito, equivalencias entre normas, brechas, incoherencias y plan de acción.
  5. Entrega. Excel con una Declaración de Aplicabilidad por norma, informe en Markdown, plan y controles en CSV, proyecto en JSON y copia de seguridad.

Mapa mental

mindmap
  root((Rosetta))
    Normas
      ENS RD 311/2022
        73 medidas del Anexo II
        Arts. 28, 31, 32 y 33
        Categoría y niveles D·I·C·A·T
      ISO/IEC 27001:2022
        Cláusulas 4 a 10
        93 controles del Anexo A
      NIS2
        Directiva 2022/2555
        RE 2024/2690
        Esencial o importante
      ISO/IEC 42001:2023
        Cláusulas 4 a 10
        38 controles del Anexo A
      Part-IS, RIA, CRA, NIST CSF 2.0 y DORA
      RGPD y LOPDGDD
        15 obligaciones
        Violaciones en 72 horas
        Derechos digitales
      Latinoamérica
        Chile, Colombia, México, Perú y Argentina
    Controles unificados
      152 controles en 14 dominios
      Estado, responsable, evidencias, revisión
      Enlace total, parcial o informativo
    Vistas
      Resumen
      Equivalencias
      Controles
      Requisitos y SoA
      Brechas y coherencia
      Plan de acción
      Correspondencias
      Alcance
    Entrada y salida
      Importar SoA del ENS
      Excel, Markdown, CSV y JSON
      Copias de seguridad
    Controles de seguridad
      Sin servidor ni terceros
      CSP con hashes y SRI
      Validación de ficheros importados
      Antiinyección de fórmulas
Loading

Vistas

Vista Contenido
Resumen Grado de cumplimiento por norma, estado de los controles por dominio y norma, controles prioritarios, solapamiento entre normas y alertas de coherencia.
Equivalencias Para un requisito de cualquier norma: los controles que lo cubren y los requisitos equivalentes en las demás normas, con el tipo de correspondencia (total, parcial o informativa).
Controles Los 152 controles con su estado, normas a las que sirven, responsable, evidencias y fecha de revisión.
Requisitos Declaración de aplicabilidad de cada norma: cobertura por requisito, nivel exigido en el ENS y exclusiones justificadas. Las cláusulas 4–10 y los arts. 20, 21 y 23 de NIS2 no se pueden excluir.
Brechas Requisitos sin cubrir y 26 reglas de coherencia (entre ellas, un perfil del CCN fuera de su categoría, medidas del ENS sin los refuerzos de su nivel, el ENS que la LOPDGDD exige para los datos personales del sector público, reporte al CSIRT Nacional de Chile y vulneraciones de datos personales, notificación de incidentes graves y registro de información de DORA, notificación a ENISA y SBOM del CRA, alfabetización en IA y prácticas prohibidas del RIA, notificación a la autoridad aeronáutica y riesgos con impacto en la seguridad operacional de Part-IS, y requisitos de marcos propios sin controles): notificación NIS2 (24 h, 72 h, 1 mes), formación de la dirección, evaluación de impacto de IA, exclusiones contradictorias, controles sin evidencias o sin revisar en 12 meses, entre otras.
Plan Tablero pendiente, en curso y hecha, ordenado por requisitos cubiertos, con responsable y fecha.
Correspondencias Requisitos de cada norma por dominio, solapamiento entre normas y tabla completa control ↔ requisitos.
Alcance Perfil regulatorio con la propuesta de marcos aplicables y su base legal, decisión y motivo del auditor, categoría y niveles del ENS, aplicabilidad de NIS2, reglamento de Part-IS y marcos propios (importar, mapear con sugerencias, exportar y borrar).
Exportar Excel, Markdown, CSV, JSON y copia de seguridad.

También incluye siete casos de ejemplo con datos ficticios (proveedor TIC del sector público, hospital, empresa de IA, operador de agua, SaaS para ayuntamientos, aerolínea regional con Part-IS, fabricante de cámaras IP con el CRA banco en línea con DORA y distribuidora eléctrica chilena), varios proyectos en paralelo, buscador global (Ctrl + K), deshacer y rehacer (Ctrl + Z, Ctrl + Mayús + Z), tema claro y oscuro con siete colores de acento, y versión móvil.

Capturas

Inicio
Inicio · proyectos, importación de la SoA del ENS y casos de ejemplo
Equivalencias
Equivalencias · ENS op.exp.7 y sus equivalentes en ISO/IEC 27001, NIS2 e ISO/IEC 42001
Controles
Controles · 152 controles en 14 dominios
Requisitos
Requisitos · declaración de aplicabilidad calculada por norma
Brechas
Brechas · requisitos sin cubrir e incoherencias entre normas
Plan
Plan de acción · ordenado por requisitos cubiertos
Correspondencias
Correspondencias · requisitos por dominio y tabla completa
Alcance
Alcance · perfil regulatorio, Part-IS y asistente NIS2
Perfil de cumplimiento CCN-STIC 890A en Alcance y ficha de op.cont.2
Perfiles de cumplimiento del CCN · un ayuntamiento ficticio con la CCN-STIC 890A y servicios NIS2: op.cont.2 pasa a exigirse en nivel ALTO, con el criterio del perfil en la ficha
Refuerzos del ENS en la ficha de op.acc.6
Refuerzos del ENS · ficha de op.acc.6 en TechServ (categoría ALTA): R8 sin implantar, con el texto del RD 311/2022 desplegado
RGPD y LOPDGDD en el hospital
RGPD y LOPDGDD · las 15 obligaciones en el caso del hospital, con la EIPD del sistema de IA como brecha
Centro de ayuda
Centro de ayuda · buscador, primeros pasos, temas, preguntas frecuentes, fuentes oficiales y contacto

Barra lateral. Fija y desplegada desde 1241 px; compacta (solo iconos) entre 901 y 1240 px o al pulsar [. En compacta se despliega por encima del contenido al pasar el ratón o al llegar con el teclado, sin desplazar los iconos; el resaltado sigue al puntero.

Barra lateral compacta   Barra lateral desplegada al pasar el ratón

Resumen en móvil    Equivalencias en móvil
Móvil · barra inferior con las vistas principales y menú «Más» para el resto

Arranque rápido

En línea: heindall92.github.io/rosetta_multinorma. Se publica automáticamente con cada cambio en la rama principal.

En local, sin instalar nada: descarga la carpeta dist/ y abre index.html. La importación y exportación de Excel usa la librería incluida en dist/vendor/.

Para desarrollar (Node.js 20 o superior):

git clone https://github.com/heindall92/rosetta_multinorma.git
cd rosetta_multinorma
npm ci                 # Playwright y axe-core, solo para las pruebas
npm run build          # src/ → dist/
npm run serve          # http://localhost:5173
Comando Qué hace
npm run build Genera dist/index.html (aplicación completa en un fichero) y dist/vendor/.
npm run check Falla si dist/index.html no corresponde a src/ (lo usa la CI).
npm test Motor, integridad del catálogo y build (node:test, sin dependencias).
npm run test:e2e Aplicación en Chromium: flujos, Excel, CSP, fuentes y accesibilidad.
npm run test:all Todo lo anterior.
npm run serve Servidor estático local, sin dependencias.
npm run capturas Regenera las capturas de este README a partir de dist/.

Arquitectura

flowchart LR
    subgraph SRC[src/]
      T[index.html<br/>plantilla]
      C[styles/rosetta.css<br/>tokens OKLCH, claro y oscuro]
      F[fonts/*.woff2<br/>OFL]
      D[(data/*.json<br/>catálogo, casos, iconos)]
      E[engine/rosetta-engine.js<br/>motor sin DOM]
      A[app/00…07-*.js<br/>interfaz]
      V[vendor/<br/>SheetJS 0.20.3, xlsx-js-style]
    end
    T & C & F & D & E & A --> B[scripts/build.mjs<br/>CSP con hashes]
    B --> H[dist/index.html]
    V --> B --> VD[dist/vendor/]
    H --> N((Navegador))
    N <--> LS[(localStorage)]
    N -. al importar o exportar Excel, con SRI .-> VD
    E --> TN[node:test]
    H --> PW[Playwright + axe-core]
    H --> GP[GitHub Pages]
Loading
  • Sin framework ni dependencias en ejecución. JavaScript sin compilar, plantillas y delegación de eventos (data-act).
  • Motor independiente de la interfaz. rosetta-engine.js funciona en el navegador (window.RosettaEngine) y en Node (require), y se prueba sin navegador.
  • Catálogo como datos. Requisitos, controles, correspondencias y casos en src/data/*.json, revisables en cada pull request.
  • Build reproducible. scripts/build.mjs resuelve las directivas de la plantilla (@inline, @data, @modules, @fonts, @csp), incrusta las fuentes y genera la CSP con el hash de cada bloque.

Método de cálculo

Cada control se enlaza con requisitos de cada norma con un peso: 1 (equivalente), 0,5 (parcial) o 0 (relación informativa, no cuenta). El estado del control vale 1 (implantado), 0,5 (parcial) o 0 (pendiente o no aplica).

$$\text{cobertura}(r) = \max_{c \in r} w_{c,r} \cdot \frac{\sum_{c \in r} w_{c,r} \cdot \text{estado}(c)}{\sum_{c \in r} w_{c,r}}$$

  • Cubierto al 100 %, parcial entre 0 y 100 %, brecha en 0. Un requisito con solo enlaces parciales no supera el 50 %.
  • No exigido: el ENS no lo pide para el nivel de sus dimensiones. Excluido: excluido con justificación. Ninguno cuenta en el grado de la norma.
  • Categoría ENS efectiva: la mayor entre la declarada y la que resulta de los niveles de las dimensiones.
  • Prioridad de un control pendiente: cobertura que añade en todas las normas del alcance, repartida según su peso en cada requisito.
  • Solapamiento A → B: parte de B cubierta al implantar los controles que A exige con enlace total.

Alineación con la CCN-STIC 825

Corrección de la versión 2.3.0, a partir de una revisión externa. Hasta la 2.2.0, las equivalencias ENS ↔ ISO/IEC 27001 eran de criterio propio, y así lo indicaba la publicación del proyecto. Al revisarla, Heyker D. (consultor GRC y auditor ENS e ISO/IEC 27001) señaló en LinkedIn que el CCN publica la guía CCN-STIC 825 precisamente para fijar esa correspondencia y evitar interpretaciones. La 2.3.0 corrige el mapa con la guía: 17 equivalencias pasan de totales a parciales, se añaden 5 enlaces y lo que no figura en ella queda marcado como criterio propio. El detalle está en el informe de alineación y en CHANGELOG.md.

Las equivalencias ENS ↔ ISO/IEC 27001:2022 siguen la guía oficial del Centro Criptológico Nacional CCN-STIC 825 «Esquema Nacional de Seguridad. Certificaciones 27001» (edición de abril de 2026). Para cada una de las 73 medidas del anexo II, la guía fija un control principal de la ISO, los controles complementarios y un nivel de compatibilidad. Rosetta usa esos datos tal cual:

Origen en la guía Parejas Fuerza en Rosetta
Control principal, nivel análogo (42 medidas) 71 en total Equivalente
Control principal, parcialmente análogo (26 medidas) ↑ Parcial
Medida sin equivalente en la ISO (5: op.pl.5, op.ext.4, mp.info.3, mp.info.4, mp.info.5) ↑ Relación, con aviso: no se hereda de una certificación ISO
Controles complementarios 214 Parcial
Cláusulas 4–10 frente al articulado (apdo. 5.2.2) 34 La de los controles comunes, al menos parcial
Otros controles de la ISO (apdo. 7) 27 Relación
Equivalencias de Rosetta que no figuran en la guía 91 Como mucho parcial, marcadas como criterio propio
  • Los 71 controles principales de la guía comparten un control unificado con su medida. El catálogo 2.2.0 añade los 5 enlaces que faltaban: org.4 ↔ 5.2, op.acc.5 ↔ 5.18, op.mon.1 ↔ 8.20, mp.if.7 ↔ 7.2 y mp.info.4 ↔ 8.26.
  • Ninguna equivalencia ENS ↔ ISO es total sin respaldo de la guía. Antes, 17 parejas que el CCN califica de parcialmente análogas figuraban como totales; por ejemplo, op.exp.7 ↔ 5.24, op.exp.8 ↔ 8.15 y op.cont.4 ↔ 8.14.
  • Dónde se ve. En Equivalencias y en el panel de detalle, cada equivalencia ENS ↔ ISO indica su origen: control principal, complementario, cláusula u otros controles de la guía, o criterio propio. La ficha de cada medida del ENS muestra su nivel de compatibilidad, la categoría y los controles ISO de la guía.
  • Qué no cambia. El cálculo de cumplimiento: los enlaces añadidos son de relación (peso 0). La guía decide qué equivale a qué. La cobertura sigue saliendo del estado de los controles unificados.
  • Reproducible. scripts/ccn825.py regenera src/data/ccn825.json desde el PDF oficial, convertido con MarkItDown, y --check comprueba que coinciden. La guía no se incluye en el repositorio: su aviso legal prohíbe reproducirla.
  • Probado. Ocho pruebas del motor comprueban que no falta ninguna medida ni código, que todos los controles principales están conectados, el reparto 42/26/5, la fuerza por origen, que ninguna equivalencia total carece de respaldo y la simetría ENS → ISO e ISO → ENS.

NIS2 e ISO/IEC 42001 no tienen una guía equivalente: sus correspondencias siguen siendo criterio del autor, contrastado con la guía técnica de ENISA.

Novedades de la 2.15.0: perfiles de cumplimiento del CCN

El art. 30 del RD 311/2022 permite al CCN publicar perfiles de cumplimiento específicos: el conjunto de medidas idóneo para un tipo de entidad y una categoría. Dentro de su ámbito, el perfil sustituye a la tabla del anexo II. La 2.15.0 incorpora los dos vigentes que tienen declaración de aplicabilidad:

Guía Ámbito Categoría Medidas exigidas
CCN-STIC 881A (mayo de 2022) Universidades MEDIA 69 (mp.info.4 solo con información que sirva de evidencia electrónica)
CCN-STIC 890A (noviembre de 2025) Ayuntamientos de menos de 5.000 habitantes, sus agrupaciones y entidades locales menores BÁSICA 38 (op.cont.2 solo si presta servicios de los anexos I y II de NIS2)
  • En Alcance → ENS y en el asistente se elige el perfil. Cada medida pasa a exigirse con el nivel del perfil y con los refuerzos que añade (en la 881A, «+ R4» en op.exp.6, «+ R1» en op.mon.3 y «+ R2» en mp.si.2, sin duplicar los del anexo II). Las que marca N/A quedan como no exigidas por el perfil. Las condicionales tienen su casilla. El articulado del ENS se sigue exigiendo siempre.
  • Ficha de la medida: nivel y guía, y el criterio específico del perfil, resumido con redacción propia (8 en la 881A y 7 en la 890A).
  • Regla CO-26 (alta): un perfil aplicado a un sistema de categoría superior a la suya. En ese caso Rosetta calcula con el anexo II completo, que es lo que se exige, y lo dice en el aviso.
  • La CCN-STIC 892 (entidades del Reglamento de Ejecución (UE) 2024/2690) no se ofrece: el CCN la retiró el 28-03-2025 y la interfaz lo explica. El Marco de Certificación de Entidades Locales tampoco es un perfil: es un procedimiento de certificación por muestreo.
  • Exportaciones: el resumen del Excel y el informe declaran el perfil; la SoA del ENS lleva el nivel y la exigencia del perfil, el motivo de cada medida no exigida y el criterio en la justificación.
  • Reproducible y sin copiar las guías: scripts/perfiles-ccn.py lee la declaración de aplicabilidad de los PDF oficiales (que no se suben: su aviso legal prohíbe reproducirlos), comprueba el recuento de cada guía y genera src/data/perfiles-ccn.json; --check verifica que coinciden. Solo se guardan datos objetivos: nivel, refuerzos añadidos, condición y si hay criterio.
  • El anexo II, contrastado con el BOE: scripts/anexo2-boe.py compara las 73 medidas del catálogo (dimensiones y exigencia en BAJO, MEDIO y ALTO) con la tabla del texto consolidado del RD 311/2022 (BOE-A-2022-7191). Resultado: las 73 coinciden. Una prueba de mutación confirma que el script detecta cualquier cambio.
  • Ctrl + Z con el foco en una casilla o un desplegable deshace en Rosetta. Antes se lo quedaba el navegador, que no tiene deshacer para esos controles.

Novedades de la 2.14.0: accesibilidad y ritmo de trabajo

  • La rueda se recorre con el teclado. Tab entra en la rueda; las flechas recorren los 152 controles, Re Pág y Av Pág saltan de dominio, Inicio y Fin van al primero y al último, e Intro abre la ficha. El núcleo anuncia el control enfocado y, al cerrar la ficha, el foco vuelve a la rueda.
  • Acciones en bloque en Controles. Filtra (por norma, estado o texto) y aplica estado, responsable o fecha de revisión a todos los controles visibles. Se deshace con un solo Ctrl + Z.
  • Redibujado parcial. Cada cambio solo toca lo que cambia. Medido con trazas de Chrome y la CPU ralentizada ×4, el trabajo del navegador por clic baja de 164 a 69 ms en Resumen, de 353 a 72 ms en Controles, de 208 a 39 ms en Requisitos y de 739 a 107 ms en Correspondencias. El foco, el scroll y los paneles abiertos se mantienen.
  • Exportaciones en inglés sin restos en español de la propia app: la exigencia del ENS se traduce y las leyes de Latinoamérica llevan nombre en inglés.

Con esta versión quedan cerrados todos los puntos de experiencia y accesibilidad de la auditoría de producción.

Novedades de la 2.13.0: refuerzos del ENS

Hasta ahora, una medida del ENS se daba por cubierta con sus controles aunque faltaran los refuerzos que exige su nivel (el hallazgo E05 de la auditoría). En una certificación, un refuerzo ausente es una no conformidad. La 2.13.0 los modela:

  • Los 92 refuerzos del anexo II del RD 311/2022 (src/data/refuerzos.json), con su título en los dos idiomas y el texto del BOE, que se puede reproducir.
  • Exigencia por nivel, con la misma lectura que ENS Compliance Studio: en op.acc.5 de nivel MEDIO, «+ [R2 o R3 o R4] + R5» obliga a R5 y a uno de R2, R3 o R4. Un contrato común (tests/fixtures/ens-exigencias-refuerzos.json, 219 exigencias) se comprueba en los dos repositorios: si una herramienta cambia la lectura, su CI falla.
  • Ficha de la medida con una casilla por refuerzo, su papel (exigido, alternativa u opcional), el resumen («5 de 6 exigencias de refuerzo cumplidas») y el texto del RD desplegable.
  • Cobertura honesta: una medida sin los refuerzos de su nivel no pasa de parcial. Al subir la categoría o los niveles, la exigencia se recalcula.
  • Regla CO-25 (media): lista las medidas a las que les faltan refuerzos y cuáles. CO-06 deja de confundirlas con controles parciales.
  • Proyectos anteriores intactos: la evaluación se activa en Alcance → ENS; los proyectos nuevos la traen activada y los anteriores a la 2.13.0 la tienen desactivada hasta que la actives.
  • Entrada y salida: la SoA del ENS en Excel lleva la columna «Refuerzos implantados» (con los que faltan) y se importan desde una columna «Refuerzos» de la plantilla o desde la tabla de refuerzos de ENS Compliance Studio.
  • Casos: TechServ (mp.s.2 R3 y op.acc.6 R8), el hospital (op.exp.8 R5) y Lumen (op.acc.6 R9) enseñan un hueco real cada uno.
  • Exportaciones verificadas: una suite nueva descarga las 108 exportaciones de los nueve casos en los dos idiomas y comprueba que cada fichero se abre y que el proyecto vuelve a entrar idéntico.
  • Accesibilidad: la etiqueta «Parcial» de la fila seleccionada en Requisitos daba 4,24:1 en tema claro; ahora pasa de 4,5:1.

Los perfiles de cumplimiento específicos del CCN (universidades, entidades locales, NIS2) quedan para la siguiente versión: sus guías no se pueden reproducir y hay que procesarlas desde el PDF oficial, como la CCN-STIC 825.

Novedades de la 2.12.0: RGPD y LOPDGDD

Rosetta tenía las leyes de datos de cinco países de Latinoamérica, pero no la de casa. La 2.12.0 añade el Reglamento (UE) 2016/679 (RGPD) con la Ley Orgánica 3/2018 (LOPDGDD), sobre el mismo dominio de privacidad y sin controles nuevos:

Bloque Obligaciones Lo que mira un auditor
Principios y responsabilidad proactiva Arts. 5, 6, 7, 9, 24 y 25 Base jurídica de cada tratamiento, consentimiento desde los 14 años (art. 7 LOPDGDD) y protección desde el diseño
Transparencia y derechos Arts. 12–22 Información por capas y respuesta a los derechos en un mes, prorrogable dos
Responsable y encargado Arts. 28, 30, 35–39 Contratos de encargo, registro de actividades (el sector público publica su inventario), EIPD y DPD en los supuestos del art. 34 LOPDGDD
Seguridad y violaciones Arts. 32–34 Medidas del art. 32, notificación a la AEPD en 72 horas y comunicación a los interesados
Transferencias Arts. 44–49 Adecuación, garantías o excepciones
Derechos digitales LOPDGDD arts. 87–91 Uso de dispositivos, desconexión digital, videovigilancia y geolocalización de la plantilla
  • Regla CO-24 (alta). Si la organización es del sector público o le presta servicios y tiene el RGPD sin el ENS en el alcance, Rosetta lo avisa: la disposición adicional primera de la LOPDGDD obliga a aplicar las medidas del ENS a los datos personales. Es una incoherencia que ninguna de las dos normas detecta por separado.
  • CO-22 también para el RGPD. Sin procedimiento de violaciones de datos (PRI-07), la alerta salta igual que con las leyes de Latinoamérica.
  • Perfil regulatorio. Obligatorio en España (con la LOPDGDD) y en el resto de la UE; a confirmar fuera de la Unión, porque el art. 3.2 alcanza a quien ofrece bienes o servicios a personas en la UE.
  • Exclusiones con justificación solo donde la ley lo permite: el registro (art. 30.5), la EIPD, el DPD, las transferencias y los derechos digitales. El resto son obligaciones generales.
  • Casos. El hospital (datos de salud, DPD obligatorio, EIPD pendiente del sistema de IA de triaje) y CitaFácil (encargada del tratamiento de los ayuntamientos, con un asistente de IA alojado fuera de la UE).
  • Comprobado contra el BOE. La exigencia por nivel de op.pl.5, op.acc.5, mp.si.1 y mp.s.2, que la auditoría de producción dejó pendiente, coincide con el texto consolidado del RD 311/2022.
  • Sin superficie en window. El gancho que usan las pruebas (window.__ROSETTA__) solo existe cuando el navegador está automatizado; en uso normal no se expone ni el estado ni las funciones internas.

Novedades de la 2.11.0: evidencia técnica de CTEM-Nexus

Rosetta dice qué controles exige cada norma; CTEM-Nexus dice qué está expuesto de verdad. Desde esta versión, las dos hablan por fichero con el sobre común del ecosistema (yrd-ecosistema, versión 1):

  1. En CTEM-Nexus, Ecosistema → Rosetta → Evidencia por control descarga los hallazgos abiertos agrupados por control unificado (OPE-04, ACC-07…), con sus identificadores de ENS, ISO/IEC 27001, NIS2, NIST CSF 2.0 y DORA.
  2. En Rosetta, Exportar → CTEM-Nexus → Importar hallazgos. Cada control muestra en su ficha la exposición técnica: abiertos por prioridad, KEV, vencidos y los peores hallazgos con su activo y fecha límite.
  3. Regla CO-23 (alta). Un control declarado «Implantado» con hallazgos críticos o altos abiertos es una contradicción que un auditor encontrará. Rosetta la señala con los hallazgos concretos.
  4. Sobre para CTEM-Nexus. Rosetta devuelve el estado de los 152 controles y, sin cambios, la evidencia que recibió. CTEM-Nexus avisa en cada hallazgo si su control figura como implantado.

Desde la 2.15.1, también la seguridad de los asistentes de IA: MCP-Shield exporta los hallazgos de un mcp.json, CTEM-Nexus los importa con su guía y sus controles, y llegan aquí en la misma evidencia: cadena de suministro → DES-09/OPE-05, secretos → ACC-06/OPE-14, ficheros → ACC-02/OPE-01 y tool poisoning → OPE-01/OPE-10.

La ida y vuelta está cubierta por pruebas en los dos repositorios con el mismo fichero (tests/fixtures/ctem-a-rosetta.json y rosetta-a-ctem.json). De paso se corrigió el contraste de las etiquetas del selector de estado en la ficha (3,6:1 → AA).

Novedades de la 2.10.0: protección de datos en Colombia, México, Perú y Argentina

Cuatro leyes de protección de datos personales, sobre el dominio de privacidad de la 2.9.0:

País Ley Requisitos Lo más distintivo
Colombia Ley 1581 de 2012 y Decreto 1377 de 2013 (DUR 1074/2015) 11 Autorización del titular, consultas en 10 y reclamos en 15 días hábiles, RNBD e incidentes a la SIC en 15 días hábiles
México LFPDPPP de 2025 (en vigor desde el 21-03-2025) 10 Aviso de privacidad con finalidades necesarias y voluntarias, derechos ARCO y vulneraciones; supervisa la Secretaría Anticorrupción y Buen Gobierno
Perú Ley 29733 y Reglamento DS 016-2024-JUS (vigente desde el 30-03-2025) 9 Incidentes a la ANPD en 48 horas y oficial de datos personales
Argentina Ley 25.326 y Decreto 1558/2001 10 Acceso en 10 días corridos, rectificación en 5 hábiles, registro ante la AAIP. La ley no obliga a notificar brechas, y Rosetta no lo exige
  • Perfil por país. Cada ley es obligatoria en su país, a confirmar si la organización solo opera allí, y no aparece en otro caso.
  • Excluibles con justificación. Solo lo que depende del tamaño o la actividad: la inscripción en el registro (Colombia y Argentina) y el oficial de datos (Perú).
  • Caso. Energía Austral suma la ley peruana, porque atiende a clientes en Perú.

Con esta versión, Rosetta completa la hoja de ruta: 15 normas y leyes de la UE, EE. UU. y Latinoamérica en 152 controles unificados.

Novedades de la 2.9.0: Latinoamérica, empezando por Chile

  • Jurisdicción por país. El perfil regulatorio admite Chile, Colombia, México, Perú y Argentina como jurisdicción, y además una casilla «También opera en». Las leyes de un país solo aparecen en las vistas si la organización está allí, opera allí o las tiene en el alcance. El cálculo las conoce siempre.
  • Ley 21.663 Marco de Ciberseguridad (Chile): 10 requisitos, vigentes desde el 01-03-2025.
    • Medidas y reporte para todas las instituciones obligadas.
    • Para los operadores de importancia vital (OIV) que designe la ANCI, además los deberes del art. 8: sistema de gestión, registro, continuidad, revisiones, contención, capacitación, información a afectados y delegado de ciberseguridad.
    • Reporte al CSIRT Nacional: alerta temprana en 3 h, segundo reporte en 72 h (24 h para OIV) e informe final en 15 días.
  • Ley 21.719 de protección de datos (Chile): 10 requisitos (principios, licitud, información, derechos, seguridad, vulneraciones, encargados, transferencias, evaluación de impacto y modelo de prevención).
    • En vigor desde el 01-12-2026.
    • La ficha avisa del proyecto de aplazamiento al 01-12-2027 (Boletín 18.623-07), aún en trámite.
  • Nuevo dominio, Privacidad y protección de datos, con 10 controles reutilizables para cualquier ley de datos: aviso, base de licitud, derechos, inventario, encargados, transferencias, vulneraciones, delegado, evaluación de impacto y minimización. Hay además dos controles nuevos para el reporte al CSIRT Nacional y el delegado de ciberseguridad.
  • Coherencia. CO-21 (sin reporte al CSIRT Nacional) y CO-22 (ley de datos en el alcance sin procedimiento de vulneraciones).
  • Caso nuevo: Energía Austral, distribuidora eléctrica chilena ficticia, OIV, con ISO/IEC 27001, NIST CSF y las dos leyes chilenas.

Novedades de la 2.8.0: DORA, resiliencia operativa digital del sector financiero

Los 24 requisitos del Reglamento (UE) 2022/2554, aplicable desde el 17-01-2025, para banca, seguros, inversión y pagos:

Capítulo Requisitos
II · Gestión del riesgo TIC Gobernanza, marco y estrategia, sistemas, identificación, protección, detección, respuesta y recuperación, copias, aprendizaje y comunicación de crisis (arts. 5–14), o el marco simplificado del art. 16
III · Incidentes TIC Proceso, clasificación y notificación de incidentes graves (arts. 17–19). Plazos del Reglamento Delegado (UE) 2025/301: inicial en 4 h desde la clasificación (como mucho 24 h), intermedio en 72 h y final en un mes
IV · Pruebas Programa anual, pruebas de herramientas y sistemas y TLPT cada tres años para las entidades designadas (arts. 24–26)
V · Terceros proveedores de TIC Estrategia, registro de información, diligencia debida, estrategias de salida, concentración y cláusulas contractuales (arts. 28–30)
VI · Intercambio de información Voluntario (art. 45)
  • Régimen y TLPT en Alcance. Al elegir el régimen general o el simplificado, Rosetta marca como no exigido lo que corresponde. Las pruebas TLPT solo se exigen si la autoridad designó a la entidad.
  • Seis controles nuevos: marco de riesgo TIC, programa de pruebas, TLPT, registro de información, estrategias de salida y concentración, y notificación a la autoridad financiera.
  • Perfil regulatorio. Para una entidad financiera de la UE, DORA es obligatorio y NIS2 queda a confirmar, porque DORA prevalece como lex specialis. El perfil ya no anuncia normas europeas pendientes.
  • Coherencia. Dos alertas nuevas: sin notificación de incidentes graves y sin registro de información.
  • Caso nuevo: Ribera Banca Digital, banco en línea ficticio con DORA, ISO/IEC 27001 y el RIA, porque su puntuación crediticia es IA de alto riesgo.

Novedades de la 2.7.0: NIST CSF 2.0

Las 106 subcategorías del NIST Cybersecurity Framework 2.0 (CSWP 29, febrero de 2024), en sus 6 funciones y 22 categorías. Incluye Gobernar (GV), la función nueva de la 2.0: contexto, estrategia de riesgos, roles, política, supervisión y cadena de suministro.

  • Para quién. Lenguaje común con clientes internacionales, matrices estadounidenses y organizaciones de LATAM que ya trabajan con el CSF.
  • Correspondencias. Cada subcategoría tiene al menos un control unificado que la cubre por completo. Si se implanta todo lo que exige ISO/IEC 27001, se cubre el 88 % del CSF; con el ENS, el 65 % (Resumen → Solapamiento).
  • Perfil de la organización. El CSF es voluntario: el perfil regulatorio lo propone como tal y las subcategorías que no encajen en el perfil se excluyen con su justificación, como en una SoA.
  • Fuente. Publicación del NIST de dominio público. Títulos abreviados propios en español e inglés, con su código oficial.

Novedades de la 2.6.0: CRA, la ley europea de ciberresiliencia

Los 29 requisitos del Reglamento (UE) 2024/2847 para fabricantes de productos con elementos digitales (hardware y software):

Grupo Requisitos Aplicable desde
Notificación (art. 14) Vulnerabilidades explotadas activamente e incidentes graves a ENISA y al CSIRT coordinador: alerta en 24 h, notificación en 72 h e informe final 11-09-2026 (ya en vigor)
Anexo I, parte I 14 propiedades del producto: seguridad por defecto, actualizaciones, control de acceso, cifrado, integridad, minimización, disponibilidad, superficie de ataque, registro, borrado seguro… 11-12-2027
Anexo I, parte II 8 de gestión de vulnerabilidades: SBOM, corrección sin demora, pruebas, divulgación coordinada, actualizaciones seguras y gratuitas 11-12-2027
Obligaciones del fabricante Evaluación de riesgos, componentes de terceros, periodo de soporte, información al usuario, documentación técnica y conformidad con marcado CE 11-12-2027
  • Exclusiones donde el reglamento las permite. Los puntos 2 b a 2 m de la parte I se aplican «cuando proceda» según la evaluación de riesgos: Rosetta deja justificarlos como no aplicables. El resto no se puede excluir.
  • Clase del producto. En Alcance se elige la clase del producto: predeterminada, importante de clase I o II, o crítica. Rosetta muestra la ruta de evaluación de la conformidad que corresponde.
  • Seis controles nuevos: SBOM y componentes, seguridad por defecto, actualizaciones durante el periodo de soporte, información al usuario, evaluación de riesgos del producto y notificación a ENISA. El control de conformidad y marcado CE (GOB-15) es el mismo que usa el RIA.
  • Perfil regulatorio. Si la organización fabrica productos con elementos digitales, el CRA pasa a obligatorio.
  • Coherencia. Dos alertas nuevas: sin notificación a ENISA (ya exigible) y productos sin SBOM.
  • Caso nuevo: Sensórica Levante, fabricante ficticio de cámaras IP y pasarelas IoT de clase I, con ISO/IEC 27001, NIS2 y el CRA.

Novedades de la 2.5.0: RIA, el Reglamento europeo de IA

Las 28 obligaciones del Reglamento (UE) 2024/1689 que afectan a una organización, ya con las fechas del Ómnibus digital sobre IA (Reglamento (UE) 2026/1744, en vigor desde el 27-07-2026):

Grupo Obligaciones Aplicable desde
Todos los sistemas Alfabetización en IA (art. 4) y prácticas prohibidas (art. 5) 02-02-2025
Modelos de uso general Arts. 53 y 55 (riesgo sistémico) 02-08-2025
Transparencia Art. 50: aviso de IA, marcado de contenido sintético, emociones y ultrafalsificaciones 02-08-2026
Alto riesgo (anexo III) Arts. 9–15, 17, 18, 20, 43–49, 72 y 73 (proveedor); arts. 26 y 27 (responsable del despliegue) 02-12-2027 (anexo I: 02-08-2028)
  • Lo que se exige depende del rol y del riesgo. En Alcance se elige proveedor, responsable del despliegue o los dos; si hay sistemas de alto riesgo o con obligaciones de transparencia; y si se proporcionan modelos de uso general. El resto aparece como no exigido, con el motivo.
  • Controles nuevos. Ocho controles cubren lo que ninguna otra norma pedía: alfabetización, prácticas prohibidas, supervisión humana, gestión de la calidad y seguimiento poscomercialización, evaluación de impacto en derechos fundamentales, transparencia, modelos de uso general y notificación de incidentes graves de IA. Un noveno, evaluación de la conformidad y marcado CE (GOB-15), es común a varios reglamentos de producto.
  • ISO/IEC 42001 como base. Las correspondencias con ISO/IEC 42001 se ven en Equivalencias. Son criterio propio y nunca pasan de parciales.
  • Perfil regulatorio. Si la organización desarrolla o despliega IA en la UE, el RIA pasa a obligatorio; fuera de la UE, a confirmar (art. 2.1).
  • Coherencia. Dos alertas nuevas: falta de alfabetización en IA y falta de revisión de prácticas prohibidas, obligatorias desde 2025.
  • Casos. Lumen (proveedor de alto riesgo), CitaFácil (asistente conversacional) y el hospital (responsable del despliegue de IA clínica) traen el RIA en su alcance.

Novedades de la 2.4.0: Part-IS, perfil regulatorio y marcos propios

Part-IS (EASA/AESA). Los 13 requisitos de organización (puntos .200 a .260) del Reglamento de Ejecución (UE) 2023/203 (IS.I.OR, aplicable desde el 22-02-2026) y del Reglamento Delegado (UE) 2022/1645 (IS.D.OR, aplicable desde el 16-10-2025), con sus modificaciones (2025/2293 y 2025/22). Los dos comparten estructura: el prefijo cambia según el reglamento que elija la organización.

  • Cada requisito lleva su matiz: Part-IS mide el impacto en la seguridad operacional de la aviación, no solo en la información. Por ejemplo, la notificación del punto .230 va a la autoridad competente y se coordina con el Reglamento (UE) 376/2014: no equivale a la de NIS2.
  • Cuatro controles nuevos cubren lo que ninguna otra norma pedía: riesgos con impacto en la seguridad operacional (RIE-12), respuesta a los hallazgos de la autoridad (RIE-13), manual del SGSI ante la autoridad (GOB-14) y notificación a la autoridad aeronáutica (INC-09).
  • Las correspondencias con las demás normas son criterio propio y nunca pasan de parciales. No hay exclusiones requisito a requisito: solo la derogación completa del punto .200 e, que aprueba la autoridad.
  • Caso de ejemplo nuevo: Alas del Atlántico, aerolínea regional ficticia con ISO/IEC 27001, NIS2 y Part-IS.

Perfil regulatorio. Unas pocas preguntas sobre la organización: jurisdicción, sector público o proveedor del sector público, entidad financiera, aprobación de aviación, IA y fabricante, más el sector y el tamaño de NIS2. Con ellas el motor propone el estado de cada marco:

Estado Ejemplo Base
Obligatoria ENS para una Administración española; Part-IS para un operador aprobado RD 311/2022, art. 2.1; Reglamento (UE) 2023/203
A confirmar NIS2 en una administración regional; NIS2 en una entidad financiera, donde DORA es lex specialis Directiva (UE) 2022/2555, arts. 2.2 f y 4
Contractual o voluntaria ISO/IEC 27001; ISO/IEC 42001 si hay IA; marcos propios —
No aplica ENS para una empresa privada sin contratos públicos RD 311/2022, art. 2
  • El auditor decide: aplica la propuesta, activa o quita marcos y deja el motivo. Si se aparta de la propuesta, Rosetta lo señala.
  • El mapa circular dibuja solo los marcos del alcance, y su leyenda indica por qué está cada uno.
  • El informe y el Excel abren con la tabla «Marcos aplicables y por qué».
  • Si la organización tendrá que cumplir normas que Rosetta aún no incluye (DORA, RIA o CRA), el perfil lo avisa.
  • El motor propone, no dictamina.

Marcos propios. Sirven para una política corporativa, los requisitos de un cliente, un pliego o una norma con licencia, como IEC 62443 o ISO/IEC 20000, sin publicar su texto.

  • Importar. Desde Alcance, con un JSON rosetta-marco o un CSV (id;titulo;texto;grupo;controles). Hay plantillas de los dos.
  • Mapear. Se revisa el mapeo con sugerencias por palabras clave. Nada se asigna sin confirmar.
  • Calcular. Rosetta calcula su cumplimiento como el de cualquier otra norma.
  • Exportar y borrar. El marco se exporta para compartirlo y se borra con deshacer.
  • Validación. Todo lo que entra se valida como hostil: sin claves de prototipo, nombres sin marcado, identificadores con patrón, solo controles del catálogo y límites de tamaño.
  • Privacidad. El texto no sale del navegador.
Alcance con perfil regulatorio
Alcance · perfil regulatorio y marcos aplicables y por qué
Resumen de una aerolínea con Part-IS
Part-IS · el mapa solo dibuja las normas del alcance
Requisitos de Part-IS
Requisitos · los 13 puntos de Part-IS
Editor de mapeo de un marco propio
Marcos propios · mapeo con sugerencias

Calidad

Suite Pruebas Qué comprueba
Motor (engine.test.mjs) 143 Perfiles del CCN (datos de las 73 medidas, 881A y 890A con sus niveles, refuerzos añadidos y condiciones, el articulado siempre exigido, el anexo II fuera del ámbito del perfil y CO-26 en los dos idiomas), Refuerzos del ENS (contrato de las 219 exigencias del anexo II compartido con ENS Compliance Studio y comprobado en los dos repositorios, obligatorios y alternativas, los 92 refuerzos con título y texto del BOE, techo de 0,5, proyectos anteriores sin cambios, el nivel decide, CO-25 en los dos idiomas sin duplicar CO-06 y huecos de los casos). RGPD y LOPDGDD (15 requisitos con fechas y fuentes, cobertura plena con los 25 controles enlazados, plazos en la ficha, exclusiones solo donde la ley las permite, perfil en España, la UE y fuera, CO-22 y CO-24 en los dos idiomas, casos y etiquetas). Ecosistema con CTEM-Nexus (sobre leído sin pérdidas, sobres ajenos rechazados, evidencia hostil saneada, regla CO-23 en los dos idiomas e ida y vuelta con fichero fijo). Colombia, México, Perú y Argentina (región, cobertura, plazos, sin CO-22 en Argentina, perfil, exclusiones). Chile (requisitos con fecha y región, deberes de OIV, perfil por país y «también opera en», CO-21 y CO-22). DORA (24 requisitos, régimen simplificado y TLPT, exclusión solo del art. 45, plazos de 2025/301, CO-19 y CO-20, perfil). NIST CSF 2.0 (106 subcategorías en 6 funciones y 22 categorías, cobertura completa, voluntario). CRA (29 requisitos, fechas, exclusiones solo en el anexo I.I.2 b–m, equivalencias, CO-17 y CO-18, perfil). RIA (rol, riesgo, fechas del Ómnibus, sin exclusiones, equivalencias, CO-15 y CO-16, perfil). Part-IS (13 requisitos, sin exclusiones, equivalencias nunca totales, alertas CO-12 y CO-13), perfil regulatorio (cada regla del ENS, NIS2, Part-IS, ISO y normas futuras, entradas hostiles), marcos propios (fusión sin tocar el catálogo, cálculo, CO-14) y sugerencias de mapeo. Media ponderada, techo de los enlaces parciales, exclusiones no permitidas, categoría ENS efectiva, KPI, prioridades, solapamiento, equivalencias, correspondencias de la CCN-STIC 825, aplicabilidad NIS2 (17 casos), cinco casos de ejemplo y una instantánea fija.
Catálogo (catalog.test.mjs) 16 Dieciséis normas, 15 obligaciones del RGPD; 13 requisitos de Part-IS con fuentes, matiz y referencia en los dos idiomas; cada control declara todas las normas; nueve casos con perfil válido. 73 medidas del ENS más 4 artículos, 93 controles de ISO/IEC 27001 y 38 de ISO/IEC 42001, cláusula 6.1.1, art. 23.4 a–e de NIS2, identificadores únicos, enlaces a requisitos existentes, ningún requisito sin control.
Build (build.test.mjs) 10 Determinismo, documento bien formado, datos idénticos a src/data, CSP, hashes SRI, fuentes incrustadas, iconos existentes y dist/ al día.
E2E (e2e.test.mjs) 32 Perfiles del CCN (Alcance, CO-26, casilla condicional con deshacer, ficha con el criterio en los dos idiomas y saneado al importar), Rueda con teclado (una parada de tabulador, flechas, Re Pág/Av Pág, Inicio, Fin, Intro y vuelta del foco), acciones en bloque con un solo deshacer y redibujado parcial (mismos nodos, foco y scroll). Refuerzos en la ficha (casillas, texto del BOE, cobertura, CO-25, deshacer, Alcance, proyecto antiguo y refuerzos hostiles saneados). Valores por defecto (claro, español, azul), menú sin proyecto, todas las vistas con los cinco casos, centro de ayuda (buscador y enlaces del autor), barra lateral (anchos, ratón, teclado, tableta), deshacer y rehacer, idioma, tema, móvil, ficheros hostiles, inyección de fórmulas y aviso de almacenamiento lleno. Red bloqueada.
Part-IS, RIA, CRA, DORA, RGPD, LATAM, CTEM-Nexus, perfil y marcos propios (e2e-marcos.test.mjs) 19 RGPD en el hospital (ficha con plazos, exclusión solo de la EIPD, CO-24 al quitar el ENS) y window.__ROSETTA__ ausente sin automatización. Importación de la evidencia de CTEM-Nexus, CO-23, ficha del control, sobre de vuelta y persistencia. Caso de aviación (anillos solo del alcance, prefijo IS.I/IS.D.OR, matiz, sin exclusiones), perfil aplicado y motivo en el informe, asistente, marco propio hostil (prototype pollution, HTML, identificadores y controles inválidos), mapeo con sugerencias, persistencia, exportar e importar sin pérdidas, CSV con comillas y fórmulas, borrar y deshacer, 390 px y ficheros de ejemplo de tests/fixtures.
Excel, CSP y fuentes (e2e-excel.test.mjs) 17 Por file:// y por HTTP: CSP sin violaciones y bloqueando código inyectado, fuentes sin Google Fonts, importación de una SoA del ENS, exportación sin fórmulas, hoja del RGPD con sus 15 obligaciones, columna de refuerzos de la SoA del ENS e importación de refuerzos desde Excel y desde ENS Compliance Studio y rechazo de una librería manipulada.
Exportaciones (e2e-exportar.test.mjs) 4 Con un perfil del CCN: resumen, SoA del ENS e informe; Las 108 exportaciones de los nueve casos en español e inglés: Excel sin fórmulas y con nombres de hoja válidos, Markdown con tablas regulares, CSV con BOM y sin inyección de fórmulas, sobre para CTEM-Nexus y proyecto JSON que vuelve a entrar idéntico; copia de seguridad que restaura todos los proyectos. Comprobado además fuera de la CI con openpyxl, LibreOffice Calc, html5lib y el esquema de yrd-ecosistema.
Accesibilidad (a11y.test.mjs) 24 Perfil del CCN en Alcance, ficha y asistente; axe-core (WCAG 2.2 A/AA) en 12 vistas y, aparte, en Exportar y en la ficha de un control con evidencia de CTEM-Nexus, en Alcance con el perfil, Part-IS y el editor de mapeo abierto, Resumen con cinco anillos, Requisitos de Part-IS la ficha de una medida con sus refuerzos desplegados, la rueda enfocada por teclado y el panel de acciones en bloque; claro y oscuro, 1440 y 390 px: cero violaciones.

La integración continua ejecuta todo en cada push y pull request, comprueba que dist/ está al día y audita dependencias cada lunes. CodeQL analiza el código en cada push.

Seguridad y privacidad

  • Sin peticiones a terceros. Fuentes incrustadas; las librerías de Excel se sirven desde dist/vendor/ con integridad verificada (SRI) y, si faltan, desde jsDelivr con el mismo hash.
  • CSP generada en el build: default-src 'none', scripts y estilos solo por hash, connect-src 'none'.
  • Lectura de Excel con SheetJS 0.20.3, sin CVE-2023-30533 ni CVE-2024-22363.
  • Validación por esquema de proyectos, copias, importaciones y localStorage: listas blancas, tipos, límites de tamaño e identificadores contrastados con el catálogo.
  • Contaminación de prototipos: claves peligrosas eliminadas al parsear y Object.prototype congelado al arrancar.
  • XSS: toda salida al DOM pasa por esc().
  • Nada expuesto en window. El gancho de las pruebas (window.__ROSETTA__) solo se crea si navigator.webdriver es verdadero.
  • Inyección de fórmulas en CSV y Excel neutralizada, incluidos espacios iniciales, caracteres invisibles y signos de ancho completo.

Cada defensa tiene una prueba E2E. Para informar de una vulnerabilidad, consulta SECURITY.md.

Auditoría y hoja de ruta a producción

Antes de usar Rosetta con datos de clientes se auditaron cuatro áreas: seguridad, exactitud del catálogo frente a las fuentes oficiales, experiencia de uso y accesibilidad, y arquitectura. El resumen, qué se ha corregido y qué queda pendiente está en docs/AUDITORIA_PRODUCCION.md. Los informes completos están en docs/auditoria/.

Lo publicado y lo que viene (refuerzos del ENS y perfiles del CCN, accesibilidad de la rueda, almacenamiento cifrado) está en ROADMAP.md.

Limitaciones conocidas

  • ENS ↔ ISO/IEC 27001 sigue la guía CCN-STIC 825 (abril de 2026); el resto de correspondencias (NIS2, ISO/IEC 42001 y las 91 parejas ENS ↔ ISO que la guía no recoge, marcadas en la aplicación) son criterio del autor, contrastado con la plantilla de SoA del curso y con la guía técnica de ENISA. La propia guía advierte que la compatibilidad no es una equivalencia aritmética: revisa el resultado con quien vaya a auditar.
  • Los refuerzos del ENS se registran a mano en la ficha de cada medida (o se importan de la SoA o de ENS Compliance Studio): Rosetta no infiere de los controles qué refuerzo concreto está implantado.
  • Datos sin cifrar en el localStorage del navegador. Todas las páginas de heindall92.github.io comparten origen; para datos reales, usa un dominio propio o la copia local, y haz copias de seguridad desde Exportar.
  • ISO/IEC 27001 e ISO/IEC 42001 están protegidas por derechos de autor. Rosetta solo incluye referencias y títulos abreviados.
  • NIS2 en España: a octubre de 2026 la ley de transposición sigue en tramitación; el asistente aplica la Directiva.

Estructura

rosetta_multinorma/
│
├── 🧩 src/
│   ├── index.html                Plantilla con directivas del build
│   ├── styles/rosetta.css        Tokens OKLCH, claro y oscuro, 7 acentos, barra lateral y móvil
│   ├── fonts/                    Bricolage Grotesque (titulares), Geist y Geist Mono (OFL)
│   ├── engine/rosetta-engine.js  Motor de cálculo sin DOM
│   ├── app/                      Interfaz, por módulos
│   │   ├── 00-i18n.js            Textos en español e inglés
│   │   ├── 01-core.js            Datos, almacenamiento, estado, deshacer
│   │   ├── 01b-security.js       Validación de todo lo que entra
│   │   ├── 02-icons.js           Iconos Lucide en línea
│   │   ├── 03-shell.js           Barra lateral, navegación, tema, avisos
│   │   ├── 04-global.js          Inicio, nuevo proyecto, perfil, ajustes, ayuda
│   │   ├── 05-views.js           Vistas del proyecto
│   │   ├── 05b-inspector.js      Panel de detalle
│   │   ├── 06-io.js              Excel, CSV, Markdown, JSON, importación del ENS, copias
│   │   └── 07-events.js          Eventos y arranque
│   ├── data/
│   │   ├── catalog.json          16 normas · 594 requisitos · 152 controles · 14 dominios
│   │   ├── casos.json            9 casos de ejemplo (ficticios)
│   │   ├── ccn825.json           Correspondencias oficiales ENS ↔ ISO/IEC 27001 (CCN-STIC 825, abril 2026)
│   │   ├── parejas.json          Contraste ENS ↔ ISO/IEC 27001 con la plantilla del curso
│   │   └── icons.json            Iconos SVG (Lucide 1.49)
│   └── vendor/                   SheetJS 0.20.3 (lectura) y xlsx-js-style 1.2.0 (escritura)
│
├── 📦 dist/                      La aplicación generada (index.html + vendor/)
├── 🛠️ scripts/                    build.mjs · serve.mjs · capturas.mjs · ccn825.py · perfiles-ccn.py · anexo2-boe.py
├── 🧪 tests/                      engine · catalog · build · e2e · e2e-marcos · e2e-excel · a11y · fixtures
├── 📄 docs/                       Auditoría, capturas e iconos del README
└── ⚙️ .github/workflows/          ci.yml · codeql.yml · pages.yml

Licencia

Distribuido bajo licencia GPLv2 · © 2026 Yoandy Ramírez Delgado.

Componentes de terceros: iconos de Lucide (ISC) y logotipos de Simple Icons (CC0) en la tabla rosetta.yaml, cuyas marcas pertenecen a sus titulares; tipografías Bricolage Grotesque, Geist y Geist Mono (SIL Open Font License 1.1), incrustadas; SheetJS 0.20.3 y xlsx-js-style 1.2.0 (Apache 2.0); Playwright y axe-core solo para pruebas. ENS, NIS2 y el RE 2024/2690 son normas públicas (BOE, EUR-Lex); ISO/IEC 27001 e ISO/IEC 42001 son obras protegidas de ISO/IEC.

Autor

Yoandy Ramírez Delgado
Yoandy Ramírez Delgado
Diseño y desarrollo de Rosetta
Junior Pentester · eJPTv2 · AI Governance (ISO 42001) · SysAdmin

LinkedIn GitHub Portafolio HackTheBox

Otras herramientas GRC del autor: ARGOS (laboratorio de práctica con rutas, casos prácticos y simulacros), ENS Compliance Studio (categorización, riesgos MAGERIT y Declaración de Aplicabilidad; su SoA se importa en Rosetta) y KAIROS (continuidad de negocio: BIA, BCP y DRP).

Errores, correspondencias discutibles o propuestas: abre una issue o escribe a yoandyramirezdelgado@gmail.com.

footer

About

Mapa multinorma en español: ENS, ISO/IEC 27001, NIS2, ISO/IEC 42001, DORA, RGPD, NIST CSF 2.0 y leyes LATAM. 594 requisitos sobre 152 controles, refuerzos del ENS, perfil regulatorio y 25 reglas de coherencia. En el navegador, sin servidor.

Topics

Resources

Security policy

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages