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
flashMessagede la bibliothèque est utilisée et les données de l’utilisateur ou les données des paramètres URL sont incorporées dansflashMessage.
Ou
La fonction
languageDictionaryde la bibliothèque est utilisée et les données de l’utilisateur ou les données des paramètres URL sont incorporées danslanguageDictionary.
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.0ou 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.0ou 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.