CVE-2021-32641 : mise à jour de sécurité pour la bibliothèque Auth0 Lock

Date de publication : 4 juin 2021

Numéro CVE : CVE-2021-32641

Présentation

Les versions antérieures (version 11.30.0 incluse) sont vulnérables aux XSS réfléchis. Un attaquant peut exécuter un code arbitraire dans les deux cas de figure suivants :

  • La fonction flashMessage de la bibliothèque est utilisée et les données de l’utilisateur ou les données des paramètres URL sont incorporées dans flashMessage.

Ou

  • La fonction languageDictionary de la bibliothèque est utilisée et les données de l’utilisateur ou les données des paramètres URL sont incorporées dans languageDictionary.

Cela me concerne-t-il?

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

Vulnérabilité flashMessage

Vous êtes vulnérable si toutes ces conditions sont réunies :

  • Vous utilisez une version d’auth0-lock11.30.0 ou antérieure.

  • Vous utilisez la fonction flashMessage.

  • Les données fournies par l’utilisateur ou les données tirées des paramètres URL sont incorporées dans flashMessage.

Voici un exemple d’extrait vulnérable dans lequel des paramètres de requête sont utilisés pour générer la propriété text de 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);

Was this helpful?

/

Vulnérabilité languageDictionary

Vous êtes vulnérable si toutes ces conditions sont réunies :

  • Vous utilisez une version d’auth0-lock11.30.0 ou antérieure.

  • Vous utilisez la fonction languageDictionary.

  • Les données fournies par l’utilisateur ou les données tirées des paramètres URL sont utilisées dans le champ languageDictionary.

Voici un exemple d’extrait vulnérable qui utilise des paramètres de requête pour générer la propriété socialLoginInstructions d’un champ 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();

Was this helpful?

/

Comment résoudre ce problème?

Passez à la version 11.30.1 d’auth0-Lock.

Cette mise à jour aura-t-elle des répercussions sur mes utilisateurs?

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