Versión GrapesJS [x] Confirmo que uso la última versión de GrapesJS ¿Qué navegador usas? Edge, mozilla Enlace de demo reproducible NA Describe el bicho guión bajo <=1,13,7 Gravedad: alta guión bajo <=1,13,7 Gravedad: alta Underscore tiene recursión ilimitada en .flatten y .isEqual, potencial para ataque DoS - https://...
artf
Gracias por el informe @tiburciomzt El bump se fusionó y pronto será liberado.
GJS Helper
El problema que has reportado respecto a la vulnerabilidad underscore (GHSA-qpx9-hpmf-5gmw) en grapesjs es válido y se refiere a una vulnerabilidad DoS de alta gravedad en underscore versiones anteriores a 1.13.8. Esta vulnerabilidad afect...
Versión GrapesJS [x] Confirmo que se debe usar la última versión de GrapesJS ¿Qué navegador usas? Chrome 143.0.7499.193 Enlace de demo reproducible https://grapesjs.com/demo.html Describe el bicho Hola. ¿Cómo reproducir el bicho? Importar GrapeJS en un archivo JS / entorno de nodo: en una página web usando estrictas r...
GJS Helper
GrapesJS, por su naturaleza como creador web dinámico, depende de la inyección de estilos y la manipulación del DOM, lo que puede llevar a violaciones de la Política de Seguridad de Contenidos (CSP), especialmente con normas muy estrictas...
Versión GrapesJS 22.0.14 (última versión a 20-11-2025) ¿Cuál es el comportamiento esperado? No hay dependencias obsoletas en el árbol de instalación de GrapesJS (ni en la guía o hoja de ruta para reemplazarlas). ¿Cuál es el comportamiento actual? Instalar [email protected] emite una advertencia de deprecación de npm/pn...
GJS Helper
La advertencia de desuecia para [email protected] al instalar GrapesJS es una preocupación válida respecto al mantenimiento de dependencias. Vamos a desglosar la situación y lo que significa para GrapesJS usuarios. Causa raíz: dependenci...
Actualmente, la base de código se basa en dependencias desactualizadas. Este ticket tiene como objetivo: Actualizar todas las dependencias existentes a sus últimas versiones estables. Configurar Dependabot para que compruebe y actualice automáticamente las dependencias en el futuro. Mantener las dependencias actualiza...
GJS Helper
Mantener las dependencias del proyecto actualizadas es crucial para la seguridad, el rendimiento y la compatibilidad. Para un proyecto GrapesJS , que normalmente utiliza Node.js y npm/yarn, esto implica un enfoque de dos frentes: actualiza...
Versión GrapesJS [X] Confirmo que se debe usar la última versión de GrapesJS ¿Qué navegador usas? Edge v122 Enlace de demo reproducible https://jsfiddle.net/bwreyq29/1/ Describe el bicho ¿Cómo reproducir el bicho? Abre este enlace https://jsfiddle.net/bwreyq29/1/ y el código JavaScript adjunto al atributo 'SRC' se eje...
bernesto
Creo que la opción de pre-analizador es una muy buena idea. Se mantiene en el concepto de 'plug-in' por función. ¿Qué tal actualizar 'fromElement' para aceptar un ID de elemento de cadena o un booleano? Si bool == cierto, funciona como aho...
artf
Totalmente de acuerdo con @bernesto de hecho, por mucho que intentemos que sea seguro, nunca será suficiente y no quiero dar la impresión de que la biblioteca es "tan segura" como para justificar la falta de validación del servidor. Las op...
bernesto
Esto es inevitable al usar 'fromElement' para cargar desde un elemento DOM activo. El elemento de la página se carga y ejecuta de forma sincrónica. GrapesJS nunca tendría la oportunidad de procesar y desactivar el HTML de XSS. Esto tendría...
Versión GrapesJS [X] Confirmo que se debe usar la última versión de GrapesJS ¿Qué navegador usas? Chrome v102 Enlace de demo reproducible https://jsfiddle.net/szLp8h4n Describe el bicho ¿Cómo reproducir el bicho?Seleccionar cualquier componenteAñadir el nombre de la clase al Selector Manager como '<a href="#"onclick='...
artf
Gracias por el informe, se corregirá en la próxima versión.
Rawne
También me estoy encontrando con este bug de XSS. Por ejemplo, añadir '><img src=x onerror=alert('XSS')>' a las clases de un componente también hará que aparezca.
Versión GrapesJS [X] Confirmo que se debe usar la última versión de GrapesJS ¿Qué navegador usas? Chrome 97.0.4692.71 Enlace de demo reproducible https://jsfiddle.net/ovrz5ug2/4/ Describe el bicho Hola, nos encontramos con esta vulnerabilidad XSS usando GrapesJS en un escenario multijugador, con varios usuarios privil...
artf
Gracias @diemkay por favor consulta este problema si tienes alguna sugerencia: https://github.com/artf/grapesjs/issues/3082
diemkay
@artf Gracias, pero ya he visto esa multa y no cubre el problema que describo aquí. La inyección no está en Vista Previa en Vivo, está en el Gestor de Estilos, donde intenta mostrar el 'id' del componente configurando '.innerHtml'.
artf
Sí, perdón, cerré demasiado pronto 😁. Intentaré arreglarlo para la próxima entrega.
El código GrapesJS está abierto a problemas con XSS porque los valores se insertan en el DOM sin escapar, por ejemplo, https://github.com/artf/grapesjs/blob/dev/src/assetmanager/view/AssetImageView.js#L30 Si 'model.getFilename()' devuelve '<img src=x onerror=alert(document.cookie)>.jpg', esto puede resultar en una tom...
aimeos
@artf ¿Cuáles son tus planes? Porque la vulnerabilidad de GrapesJS a XSS es un problema de seguridad bastante grande
artf
Sí, gracias por el informe, @aimeos lo arreglaré en la próxima versión seguro.
aimeos
@artf La documentación también utiliza '${var}' para insertar variables en plantillas con frecuencia. Esto también debería cambiarse para evitar que los desarrolladores introduzcan problemas de seguridad sin saberlo.
Para reducir la posible superficie de ataque si el editor se usa en entornos "hostiles" (por ejemplo, en plataformas SaaS), se requiere soporte para CSP. Esto también evitará problemas como https://github.com/artf/grapesjs/issues/3082 Actualmente, el único problema que impide reglas CSP efectivas es el uso de 'new Fun...
artf
Vale, entonces intentaré arreglarlo para la próxima entrega.
artf
Mmm, no estoy seguro de cómo puedo arreglarlo exactamente y a qué te refieres con '¿el uso de new Function() está en el código GrapesJS', si no hay tal cosa en el código?
aimeos
Descubrí que está en los archivos dist por underscore.js método template() que usa 'new Function()'. Creo que esto dificultará reemplazar o eliminar esa dependencia para hacer cumplir un CSP sin 'evaluación insegura'.