7 puntos por xguru 2024-07-05 | 2 comentarios | Compartir por WhatsApp
  • HTMX es un framework de JavaScript que permite reemplazar elementos del DOM con datos dinámicos mediante solicitudes AJAX
  • Como HTMX agrega comportamiento dinámico a la página usando etiquetas HTML normales con atributos personalizados, es difícil ofrecer seguridad adicional contra ataques de cross-site scripting (XSS)
  • En general, una Content Security Policy (CSP) permite restringir el JavaScript que puede ejecutarse
  • Es difícil configurar una CSP que siga permitiendo que HTMX funcione y que al mismo tiempo proteja contra cross-site scripting

Carga de fragmentos maliciosos

  • Una forma de inyectar HTMX es hacer una solicitud a un host malicioso
  • HTMX recupera fragmentos HTML que pueden incluir JavaScript y los coloca en la página
  • Se puede usar para cargar scripts maliciosos al activar solicitudes a dominios distintos del dominio de la aplicación web

eval inseguro

  • HTMX genera y ejecuta código dinámicamente
  • Las siguientes funciones de HTMX hacen esto: filtros de disparadores, atributo hx-on, hx-vals o hx-headers con prefijos js:/javascript:
  • Para que estas funciones operen, la aplicación debe usar la opción CSP unsafe-eval para permitir la evaluación dinámica de código
  • Sin embargo, permitir unsafe-eval hace posible inyectar JavaScript de inmediato usando funciones de HTMX

Deshabilitar HTMX con hx-disable

  • Se puede usar el atributo hx-disable para deshabilitar funciones de HTMX en partes de la página
  • La documentación afirma que esto puede ofrecer seguridad adicional
  • Pero esto se puede eludir fácilmente: basta con cerrar la etiqueta div con `

e insertar la carga útil fuera del elemento que tiene el atributohx-disable`

Nonce para scripts inline

  • Usar un nonce en CSP es la forma más segura de prevenir la inyección de scripts
  • La aplicación genera un nonce aleatorio y lo agrega a todos los scripts que forman parte de la aplicación
  • Los scripts inyectados por un atacante no tendrán el nonce correcto, por lo que no se ejecutarán
  • HTMX tiene una función para agregar automáticamente el nonce correcto a los scripts inline que recupera
  • Esto es conveniente, pero rompe por completo el modelo de seguridad de una CSP basada en nonce
  • Al agregar el nonce correcto a todos los scripts que encuentra, HTMX compromete por completo la seguridad que proporciona el nonce
  • La adición automática del nonce se realiza mediante el parámetro htmx.config.inlineScriptNonce

Meta tag de configuración

  • HTMX tiene varias opciones de configuración que pueden definirse con una etiqueta ``
  • En un ataque XSS, se puede modificar la configuración de HTMX inyectando la etiqueta `` adecuada
  • Por ejemplo, antes se mencionó que el atributo hx-disable desactiva el procesamiento de HTMX
  • Sin embargo, en la configuración se puede cambiar el nombre de ese atributo
  • Si se cambia hx-disable por otro nombre, la función hx-disable puede quedar deshabilitada

Conclusión

  • Usar HTMX en un sitio aumenta significativamente la superficie de ataque de la inyección HTML
  • Una Content Security Policy puede limitar el riesgo de XSS, pero es imposible ofrecer seguridad contra la inyección mientras se usan todas las funciones de HTMX

2 comentarios

 
galadbran 2024-07-06

Parecería que podría haber una refutación a este artículo o una explicación sobre cómo usarlo de forma segura...