Resumen
El investigador axolot23 comunicó al programa de divulgación de vulnerabilidades de Tucows (tucows_vdp) un XSS almacenado en la página de ajustes de cuenta de uno de sus sitios web, cuyo dominio aparece censurado en el reporte público.
El fallo está en el campo Nameservers de los ajustes. El valor que se guarda con la petición PUT de ese formulario no se valida y después se muestra en la página sin codificar, así que basta con interceptar la petición y cambiar uno de los servidores de nombres por una etiqueta HTML para que el navegador la interprete al recargar la página. Según el investigador, a la falta de validación de la entrada se suma una configuración débil de la CSP.
El propio investigador lo presenta como un self-XSS: el código solo se ejecuta para quien entra en los ajustes de esa cuenta, y no encontró forma de alcanzar a otros usuarios. El reporte figura con severidad baja.
Datos del reporte:
- Debilidad: Cross-site Scripting (XSS) almacenado (CWE-79).
- Severidad: baja.
- Enviado el 2 de abril de 2026; divulgado el 31 de julio de 2026.
- Estado: resuelto. No consta recompensa.
Pasos de reproducción
- Abrir la página de inicio de sesión del sitio (
https://www.████████.com/signin/) y entrar con una cuenta propia. - Pulsar Settings, en la esquina superior izquierda.
- Pulsar Edit junto al texto Nameservers.
- Pulsar Save Nameservers sin cambiar nada e interceptar esa petición con Burp.
- Enviar a Repeater la petición capturada, que usa el método HTTP
PUT, y desactivar la interceptación. - En Repeater, sustituir el valor de cualquiera de los servidores de nombres por este payload:
<img/src=x onerror=alert(document.domain)>
- Pulsar Send para enviar la petición modificada.
- Recargar la página: aparece una ventana emergente con el dominio del sitio (
www.████████.com), lo que confirma que el código quedó guardado y se ejecuta en el contexto de ese dominio.
El reporte público no incluye la petición PUT completa; el material adjunto está censurado.
Impacto
El fallo permite guardar JavaScript que se ejecuta en el dominio del sitio al visitar la página de ajustes de servidores de nombres. El alcance, sin embargo, es muy reducido:
- Solo lo ve y lo ejecuta quien accede a los ajustes de la cuenta en la que se inyectó el payload. Un usuario no puede abrir la página de ajustes de otro.
- No sirve para atacar directamente a otras cuentas ni a otros usuarios del servicio.
- Quien inyecta el código tiene que hacerlo sobre su propia cuenta.
Los escenarios en los que podría tener alguna consecuencia son limitados:
- Cuentas compartidas entre varias personas, o equipos compartidos desde los que varios usuarios entran en la misma cuenta. Compartir la cuenta es la vía de explotación que señala el investigador.
- Ingeniería social, si se convence a alguien de que introduzca el código malicioso en su propia cuenta.
Más allá del impacto práctico, que es mínimo, el reporte deja constancia de que la función de configuración de servidores de nombres no valida la entrada ni codifica la salida, una debilidad que podría ser indicio de problemas más amplios en la aplicación.
Remediación
El reporte figura como resuelto, pero no se detalla qué cambio aplicó Tucows para corregirlo.