Actualización de seguridad para la extensión de LastPass

Informe sobre una incidencia: 31 de marzo de 2017 (20.10 h)

El sábado 25 de marzo, Tavis Ormandy, investigador de seguridad del equipo Project Zero de Google, informó de un problema de seguridad relacionado con las extensiones para navegador de LastPass. En las últimas 24 horas, hemos publicado una actualización pensada para corregir la vulnerabilidad detectada en todos los navegadores, algo que hemos verificado con el propio Tavis.

La actualización se aplicará automáticamente en la mayoría de los casos. Los usuarios deben asegurarse de que están utilizando la versión más reciente (4.1.44 o superior), que puede descargarse también desde https://www.lastpass.com/.

Una vez resuelto el problema, queremos ofrecer a nuestros usuarios un análisis detallado de las implicaciones del informe y de nuestros esfuerzos para reforzar la seguridad de LastPass de cara al futuro. A causa de las características de la vulnerabilidad, se trata de un análisis altamente técnico.

Resumen

  • Esta vulnerabilidad afectaba a la parte del cliente de las extensiones para navegador de LastPass y podía abrir la puerta al robo de datos y a la manipulación de la extensión de LastPass.
  • Para explotar la vulnerabilidad, hacía falta engañar al usuario para conseguir que accediera a un sitio web malicioso (a través de phishing, spearphishing u otra técnica) o bien a un sitio web de confianza que ejecutara adware malicioso.
    • Esta acción requiere un ataque dirigido al usuario concreto y ejecutado a través de su navegador local.
  • Todas las extensiones se han actualizado con la corrección y la última versión se ha enviado ya a las tiendas de extensiones.
    • La incidencia no afectó a nuestras aplicaciones para dispositivos móviles Android y iOS.
  • Todas sus extensiones para navegador de LastPass deben estar actualizadas a la versión 4.1.44 o superior.
    • Para saber su número de versión, vaya al icono de la extensión de LastPass > Más opciones > Acerca de LastPass.
    • En la mayoría de los casos la actualización es automática, pero siempre es posible descargar las últimas versiones desde https://www.lastpass.com/.
    • No es necesario desinstalar nada para descargar la versión actualizada.

Análisis a posteriori

El informe

La vulnerabilidad en la parte del cliente de las extensiones para navegador de LastPass tenía su origen en el comportamiento de LastPass en los denominados «mundos aislados». Tal y como se menciona en el informe, un «mundo aislado es un entorno de ejecución de JavaScript que comparte el mismo DOM (Document Object Model) con otros mundos, pero no elementos como las variables y las funciones. Sin los mundos aislados, una página sin privilegios podría interferir con scripts con privilegios superiores y obligarles a hacer lo que quisieran». En el caso de los usuarios que utilizaban la versión binaria de la extensión (que representan menos del 10% de los usuarios de LastPass), esta vulnerabilidad podría haber abierto la puerta a una manipulación capaz de permitir la ejecución remota de código (RCE) en la extensión.

 «Mundos aislados» y páginas de confianza

El funcionamiento de LastPass se basa en gran medida en los scripts de contenido. Los scripts de contenido son snippets de JavaScript que incrustamos en sitios de terceros para capturar información de inicio de sesión y ejecutar acciones de autocompletado, dos de las prestaciones más útiles de LastPass. A su vez, el script de contenido se comunica con el resto de la extensión para ocuparse de las tareas más exigentes: descifrar los sitios guardados, actualizar la bóveda, etc. El resto de la extensión es totalmente inaccesible a los sitios de terceros y no debe poder interferir con los scripts de contenido.

Los scripts de contenido normalmente están desconectados del resto del sitio, gracias al concepto conocido como los «mundos aislados». Los mundos aislados permiten a nuestros scripts de contenido leer los contenidos DOM de un sitio de terceros, pero no acceder a variables ni funciones internas de JavaScript. Y lo mismo sucede en el sentido inverso: el sitio de terceros no puede ejecutar funciones ni acceder a variables de nuestros scripts de contenido. Con esta separación, la idea es reforzar la protección contra manipulaciones externas en las dos partes.

En algunos casos, estas variables pueden influir en la lógica del script de contenido. Con esta técnica resulta complicado introducir valores arbitrarios en JavaScript, pero gracias a una interesante línea de análisis el informe demostró la posibilidad de incrustar cadenas arbitrarias, y con una bastó para engañar a la extensión y hacerle creer que se estaba ejecutando en lastpass.com. De esta forma, un atacante podía manipular la extensión de LastPass para que revelara los datos almacenados por el usuario en cuestión y, en el caso de la versión binaria, activar ejecutables arbitrarios.

Desde nuestro planteamiento, considerábamos que podíamos confiar en el contexto global en el que se ejecutaban nuestros scripts de contenido, pero la realidad demostró que no era así y que en muchos puntos de nuestro JavaScript existía el riesgo de que variables globales de origen externo pudieran imponer su voluntad sobre un valor predeterminado.

Resolución del problema

Nada más recibir el informe completo, un equipo de emergencia transversal analizó y corroboró las conclusiones. Enseguida quedó patente que para corregir los problemas haría falta un cambio importante en nuestras extensiones para navegador. No bastaba con un simple parche, sino que sería necesaria una corrección profunda y exhaustiva. Además, estos cambios tendrían que aplicarse y comprobarse en todas las extensiones afectadas.

En resumen, ofrecer una respuesta integral a las amenazas detectadas por el informe exigía un esfuerzo considerable, pero nuestro equipo trabajó contrarreloj para introducir las correcciones en el menor tiempo posible.

Entre las medidas aplicadas, corregimos la manipulación de variables y añadimos el objeto Proxy al perímetro exterior del script de contenido, que actúa como zona aislada para evitar la lectura de propiedades de ventanas de origen externo dentro del script de contenido. Para reducir el riesgo de RCE, introdujimos restricciones en los tipos de adjuntos que la extensión puede abrir y limitamos las API disponibles en la extensión.

Durante este proceso, colaboramos directamente con el equipo de Project Zero de Google para asegurarnos de que nuestras correcciones eran lo bastante exhaustivas. Una vez lista la corrección para todas las extensiones afectadas, la enviamos con todas las tiendas para su revisión y en muy poco tiempo la pusimos a disposición de los usuarios. Desde aquí agradecemos a Apple, Google, Microsoft, Mozilla, Opera, Yandex y otras empresas la rapidez con la que revisaron y publicaron nuestra extensión.

Mirando al futuro

Recomendamos encarecidamente a otros desarrolladores de extensiones que observen si este patrón se repite en su código y tomen las medidas adecuadas para evitar cualquier vulnerabilidad.

Nosotros nos dedicamos a la gestión de contraseñas y, por lo tanto, la seguridad es y será siempre nuestra máxima prioridad. Por eso, agradecemos el trabajo que la comunidad de seguridad realiza poniendo a prueba nuestro producto y garantizando que ofrecemos un servicio seguro a nuestros usuarios. Por nuestra condición de líder del mercado, sometemos LastPass a las pruebas más exigentes posibles y los principales beneficiados de este proceso son nuestro software y nuestros clientes.

Como parte de nuestros esfuerzo por ofrecer los máximos niveles de seguridad, continuaremos colaborando con analistas de seguridad de primer nivel y apostando por nuestro programa de recompensas por la localización de errores (https://bugcrowd.com/lastpass). Muy pronto tendremos más novedades en este apartado.

Muchas gracias.

El equipo de LastPass

____________________________________________________________________________________________________________________________

27 de marzo de 2017 (19.10 h)

Durante el fin de semana, Tavis Ormandy, investigador de seguridad de Google, informó de una nueva vulnerabilidad en la parte del cliente de la extensión para navegador de LastPass. Actualmente estamos trabajando activamente para corregir el problema.  Este tipo de ataque es extremadamente sofisticado e inusual. Ahora mismo preferimos no revelar información específica sobre la vulnerabilidad o nuestra corrección que pudiera resultar útil a personas con malas intenciones, pero una vez finalizado el proceso publicaremos un análisis más detallado.

Por el momento, queremos dar las gracias a las personas que, como Tavis, nos ayudan a subir el listón de la seguridad de LastPass y que colaboran con nuestros equipos para conseguir que LastPass continúe siendo el gestor de contraseñas más seguro del mercado. También queremos aprovechar para ofrecer a nuestros usuarios una serie de recomendaciones para protegerse contra estos tipos de problemas relacionados con el cliente.

  1. Ejecución de aplicaciones desde la bóveda de LastPass – Esta vía es la forma más segura de acceder a sus credenciales y sus sitios hasta que se corrija la vulnerabilidad.
  2. Autenticación de doble factor en todos los servicios que la ofrezcan Siempre que sea posible, aplique la autenticación de doble factor con sus cuentas; ahora muchos sitios web ofrecen esta opción para reforzar la seguridad.
  3. Cuidado con los ataques de phishing Extreme siempre las precauciones para evitar cualquier intento de phishing. No haga clic en enlaces de gente que no conozca o cuyo contenido le resulta extraño o ilógico, a pesar de que parezcan provenir de personas y empresas en las que confía. Eche un vistazo a nuestros consejos para prevenir el phishing.

Una vez finalizada la corrección daremos a conocer más información.