Saltar al contenido principal
Publicado: 4 de junio de 2021 Número de CVE: CVE-2021-32641

Descripción general

Las versiones anteriores e incluida la 11.30.0 son vulnerables a un XSS reflejado. Un atacante puede ejecutar código arbitrario cuando se cumple cualquiera de estas condiciones:
  • Se utiliza la funcionalidad flashMessage de la biblioteca y se incorpora entrada del usuario o datos de parámetros de la URL en flashMessage.
O bien
  • Se utiliza la funcionalidad languageDictionary de la biblioteca y se incorpora entrada del usuario o datos de parámetros de la URL en languageDictionary.

¿Me afecta?

Esta vulnerabilidad le afecta si su implementación se ajusta a cualquiera de estas descripciones:

vulnerabilidad de flashMessage

Si se cumplen todas estas condiciones, eres vulnerable:
  • Usas la versión 11.30.0 o una anterior de auth0-lock.
  • Usas la funcionalidad flashMessage.
  • Se incorporan entradas del usuario o datos de parámetros de URL en flashMessage.
Este es un ejemplo de un fragmento vulnerable en el que se usan parámetros de consulta para rellenar la propiedad text de 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);

Vulnerabilidad de languageDictionary

Si se cumplen todas estas condiciones, eres vulnerable:
  • Usas la versión 11.30.0 o una anterior de auth0-lock.
  • Usas la funcionalidad languageDictionary.
  • La entrada del usuario o los datos de los parámetros de la URL se usan en las propiedades de languageDictionary.
Este es un ejemplo de un fragmento vulnerable que usa parámetros de consulta para rellenar la propiedad socialLoginInstructions de 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();

¿Cómo se corrige?

Actualiza a la versión 11.30.1 de auth0-lock.

¿Afectará esta actualización a mis usuarios?

La corrección usa DOMPurify para sanitizar las entradas flashMessage y languageDictionary. Elimina cualquier código JavaScript de estos campos, como etiquetas script o atributos onclick.