Saltar al contenido principal
Publicado: 30 de enero de 2020 Número de CVE: CVE-2019-20174 Crédito: Muhamad Visat

Resumen

Auth0 Lock versión 11.20.4 y anteriores no sanitizaban correctamente el código HTML generado. Los clientes que usan la opción de personalización additionalSignUpFields para añadir una casilla de verificación al diálogo de registro y pasan una propiedad placeholder obtenida de una fuente no confiable (por ejemplo, un parámetro de consulta) podrían permitir cross-site scripting (XSS) en sus páginas de registro.

¿Estoy afectado?

Se ve afectado por esta vulnerabilidad si se cumplen todas las condiciones siguientes:
  • Está usando Auth0 Lock versión 11.20.4 o anterior.
  • Pasa additionalSignUpFields como opción al inicializar Lock, y esta incluye un campo de tipo checkbox con un valor placeholder obtenido de una fuente no confiable.
A continuación se muestra un ejemplo de un fragmento vulnerable, en el que el valor placeholder está controlado parcialmente por el parámetro de consulta name:
<script>
    var params = new URLSearchParams(window.location.search);
    var options = {
        auth: {
            redirectUrl: 'http://localhost:12345/callback',
            responseType: 'code',
            params: {
                scope: 'openid email',
            },
        },
        additionalSignUpFields: [{
            name: 'agree',
            type: 'checkbox',
            placeholder: "I agree to Terms & Conditions for " + params.get('name'),
        }],
    };
    var lock = new Auth0Lock('<CLIENT_ID>', '<TENANT_NAME>.auth0.com', options);
    lock.show({
        allowShowPassword: true,
        initialScreen: 'signUp',
    });
</script>

¿Cómo solucionarlo?

Los desarrolladores que usan la solución de inicio de sesión Lock de Auth0 deben actualizar a la versión 11.21.0 o posterior. La versión 11.21.0 introduce dos cambios:
  1. La propiedad placeholder existente ahora se trata como texto sin formato para mitigar el problema.
  2. Se introduce una nueva propiedad placeholderHTML que indica el nivel de control que proporciona y que su valor solo debe suministrarse desde fuentes de confianza.

¿Esta actualización afectará a mis usuarios?

Esta corrección aplica un parche al widget Auth0 Lock y puede requerir cambios en el código de la aplicación, pero no afectará a sus usuarios, a su estado actual ni a ninguna sesión existente. Los desarrolladores que utilicen la propiedad placeholder con contenido HTML de una fuente de confianza deben empezar a usar la propiedad placeholderHTML para seguir ofreciendo la misma experiencia de usuario.