Passer au contenu principal
Publié: 30 janvier 2020 Numéro CVE: CVE-2019-20174 Crédit: Muhamad Visat

Aperçu

Auth0 Lock version 11.20.4 et les versions antérieures ne neutralisaient pas correctement le code HTML généré. Les clients qui utilisent l’option de personnalisation additionalSignUpFields pour ajouter une case à cocher à la fenêtre d’inscription et qui transmettent une propriété placeholder provenant d’une source non fiable (par exemple, un paramètre de requête) pourraient rendre possible l’exécution de scripts intersites (XSS) sur leurs pages d’inscription.

Suis-je concerné?

Vous êtes touché par cette vulnérabilité si toutes les conditions suivantes s’appliquent :
  • Vous utilisez Auth0 Lock version 11.20.4 ou une version antérieure.
  • Vous passez additionalSignUpFields comme option lors de l’initialisation de Lock, et cette option comprend un champ de type checkbox dont la valeur placeholder provient d’une source non fiable.
Voici un exemple d’extrait de code vulnérable dans lequel la valeur placeholder est en partie contrôlée par l’utilisateur au moyen du paramètre de requête 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>

Comment corriger cela ?

Les développeurs qui utilisent la solution de connexion Lock d’Auth0 doivent passer à la version 11.21.0 ou à une version ultérieure. La version 11.21.0 apporte deux changements :
  1. La propriété placeholder existante est maintenant traitée comme du texte brut afin d’atténuer le problème.
  2. Une nouvelle propriété placeholderHTML est introduite pour préciser le niveau de contrôle qu’elle offre et indiquer que sa valeur ne doit provenir que de sources fiables.

Cette mise à jour aura-t-elle une incidence sur mes utilisateurs ?

Ce correctif apporte un correctif au widget Auth0 Lock et peut nécessiter des modifications dans le code de l’application, mais il n’aura pas d’incidence sur vos utilisateurs, leur état actuel ni sur les sessions existantes. Les développeurs qui utilisent la propriété placeholder avec du contenu HTML provenant d’une source fiable devraient commencer à utiliser la propriété placeholderHTML afin de continuer à offrir la même expérience utilisateur.