Passer au contenu principal
Publié le : 4 juin 2021 Numéro CVE : CVE-2021-32641

Aperçu

Les versions antérieures ou égales à 11.30.0 sont vulnérables à une faille XSS réfléchie. Un attaquant peut exécuter du code arbitraire dans l’un ou l’autre des cas suivants :
  • La fonctionnalité flashMessage de la bibliothèque est utilisée et des données saisies par l’utilisateur ou provenant des paramètres d’URL sont intégrées à flashMessage.
Ou
  • La fonctionnalité languageDictionary de la bibliothèque est utilisée et des données saisies par l’utilisateur ou provenant des paramètres d’URL sont intégrées à languageDictionary.

Suis-je touché(e) ?

Cette vulnérabilité vous touche si votre implémentation correspond à l’une ou l’autre des descriptions suivantes :

vulnérabilité liée à flashMessage

Si toutes ces conditions sont remplies, vous êtes vulnérable :
  • Vous utilisez auth0-lock version 11.30.0 ou une version antérieure.
  • Vous utilisez la fonctionnalité flashMessage.
  • Une saisie de l’utilisateur ou des données provenant de paramètres d’URL sont intégrées à flashMessage.
Voici un exemple d’extrait de code vulnérable où des paramètres de requête sont utilisés pour renseigner la propriété text d’un flashMessage :
var params = new URLSearchParams(location.search);

var errorMessage = params.get('error__message');
var showParams = {};

if (!!errorMessage === true) {
  showParams.flashMessage = {
    type: 'error',
    text: 'We were unable to log you in. ' + errorMessage,
  };
}

lock.show(showParams);

Vulnérabilité liée à languageDictionary

Si toutes les conditions suivantes s’appliquent, vous êtes vulnérable :
  • Vous utilisez auth0-lock version 11.30.0 ou une version antérieure.
  • Vous utilisez la fonctionnalité languageDictionary.
  • Des entrées utilisateur ou des données provenant de paramètres d’URL sont utilisées dans les propriétés de languageDictionary.
Voici un exemple d’extrait de code vulnérable qui utilise des paramètres de requête pour renseigner la propriété socialLoginInstructions d’un languageDictionary :
var params = new URLSearchParams(location.search);
var instruction = params.get('instruction');

var options = {
  languageDictionary: {
    emailInputPlaceholder: "something@youremail.com",
    title: "title",
    socialLoginInstructions: instruction
  },
};

var lock = new Auth0LockPasswordless(
    CLIENT_ID,
    DOMAIN,
    options
);

lock.show();

Comment corriger ce problème?

Mettez auth0-lock à niveau vers la version 11.30.1.

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

Le correctif utilise DOMPurify pour assainir les entrées flashMessage et languageDictionary. Il supprime tout code JavaScript de ces champs, comme les balises script ou les attributs onclick.