sábado, septiembre 05, 2015

Robando 0days a los programadores de Mozilla Foundation

Una de las cosas que la comunidad de investigadores de seguridad empezó a utilizar hace tiempo fue la búsqueda de bugs de seguridad corregidos en proyectos Open Source que pudieran terminar en 0days con un tiempo de vida limitado, pero útil. Básicamente, la idea consiste en ver qué bugs se están arreglando en el código fuente de un producto Open Source en tiempo real. Si esos bugs son de seguridad, entonces se pude hacer un exploit que tome ventaja de ellos antes de que el usuario tenga esa actualización instalada.

Figura 1: Robando 0days en Bugzilla

Hay que tener en cuenta que, desde que un bug de seguridad es arreglado, es necesario hacer las compilaciones, pasar los test de QA, pasar a distribuciones y al proceso planificado de actualizaciones. Por el contrario, para un exploiter basta con que le señalen donde está el bug y construya el exploit

El robo de bugs de Bugzilla

Es por eso que, los proyectos importantes mantienen ciertos bugs de seguridad que gestionan vía Bugzilla - generalmente reportados por canales de Responsible Disclosure - están totalmente cerrados, y solo un círculo de desarrolladores de confianza que han adquirido un determinado nivel en la escala de meritocracia, pueden acceder a ellos.

Figura 2: Nota de Bugzilla sobre el robo de la cuenta

En el caso de Mozilla Foundation, han reconocido que les robaron una cuenta a uno de esos desarrolladores que tienen acceso a los bugs de seguridad privados. El robo de la identidad, según explican, parece provenir de:
1) Una reutilización de la contraseña en otro foro que fue vulnerado.
2) Ausencia de un sistema de Segundo Factor de Autenticación que hubiera prevenido de que pudiera utilizarse la password.
Al final, se han dado cuenta del uso fraudulento de esa identidad, y han echado los cálculos de los bugs que ha podido robar - para vender por canales alternativos o para utilizarlos - y cuáles han sido las ventanas de tiempo de las que ha podido disponer desde que se supo la primera información del bug y estuvo en manos de los usuarios solucionado el bug.

Figura 3: Análisis de bugs a los que tuvo acceso y las ventanas de tiempo

Como se puede ver, uno en concreto le ha dado una ventana de tiempo de casi un año de ventana de tiempo, lo que es un gran resultado para un exploit. Si estás haciendo software, las credenciales de tus desarrolladores deben estar protegidas. Nosotros usamos Redmine para el seguimiento de bugs y los proyectos, y por eso desarrollamos un plugin de Latch para Redmine - que puedes poner en tu propia instalación - para controlar el acceso a esa información.

Saludos Malignos!

viernes, septiembre 04, 2015

Cómo proteger tus cuentas de MediaWiki con Latch

Hace unos días una estudiante que está a punto de presentar su Trabajo de Fin de Grado se puso en contacto conmigo para contarme que había hecho, como proyecto, la integración de Latch en el framework MediaWiki, para que cualquier plataforma que esté utilizando ese sistema de publicación pueda integrar Latch en él. Ahora está ya listo y subido para que lo que puedas utilizar, así que le pedí a Paula que nos explicara ella misma cómo se puede instalar. Aquí va la explicación.

Figura 1: Un plugin de Latch para MediaWiki

Lo primero que necesitarás para proteger tu cuenta de Mediawiki con Latch es instalar la app en tu teléfono para controlar los Latches de tus identidades, aquí tienes un artículo que explica cómo comenzar a utilizar Latch. También necesitarás una cuenta de desarrollador de Latch - este servicio es gratuito -, que puedes abrir desde la web de Latch de Eleven Paths. Para instalar el plugin de Latch para Mediawiki puedes bajarte el código fuente de su repositorio en BitBucket: Latch para Mediawiki

Instalación del plugin de Latch para Mediawiki

La instalación del plugin en un sistema GNU/Linux puede hacerse de forma manual o automática con un script llamado install.sh que se encuentra en el directorio linux_install. Ten en cuenta que el script solo funciona para bases de datos MySQL. De todos modos, si tu Mediawiki usa otra base de datos distinta, puedes usar el script igualmente, pero tendrás que crear una tabla en la base de datos de forma manual igual a la que se define en MySQL.

Para crear la tabla puedes consultar la sección 2.5 del documento linux_install.txt que se encuentra en el directorio linux_install, este documento explica paso a paso en detalle cómo has de crear la tabla en tu base de datos, pero recuerda que si tu base de datos no es MySQL los comandos que tendrás que utilizar serán diferentes.

Figura 2: Configuración del permisos al script de instalación

Para el correcto funcionamiento del script de instalación has de tener rsync instalado en tu sistema Linux, si no lo tienes, instálalo antes de ejecutar el script. Lo siguiente que has de hacer es dar permisos rwx al script  y después ejecutarlo:

Figura 3: Ejecución del script de instalación de Latch para MediaWiki

Se te pedirán unos datos que puedes encontrar en el archivo LocalSettings.php, en la sección #DataBase settings, introduce los datos para continuar con la instalación:

Figura 4: Datos necesarios para completar la instalación del plugin

Configuración de Latch en Mediawiki

Una vez finalizada la ejecución del script ve a tu cuenta de desarrollador de Latch, crea una aplicación nueva - tal y como se cuenta en este artículo - con el nombre que quieras, Mediawiki, sería un buen nombre, en este caso.

Figura 5: Ejemplo de creación de una aplicación en Latch

Ahora, has de copiar el ID de aplicación y el secreto de la aplicación Mediawiki que acabas de crear. Por último pega estos dos datos en el fichero LatchConfig.php que se encuentra en /mediawiki/extensions/Latch Con esto tendrás el plugin instalado y listo para usar.

Figura 6: LatchConfig.PHP

Una vez instalado el plugin, accede a tu cuenta de Mediawiki como lo haces normalmente, y ve a la sección "Preferencias". En esta sección encontrarás una pestaña que lleva por título "Segundo factor de autenticación", aquí es donde podrás parear tu cuenta de Mediawiki con Latch.

Figura 7: Preferencias en MediaWiki para configurar Latch en cada cuenta de usuario

Desde el teléfono móvil, abre la aplicación de Latch, pulsa en "añadir nuevo servicio" y a continuación en "Generar nuevo código". Llegará un TPT (Temporary Pairing Token) código de pareado temporal a la app de tu móvil que necesitarás para poner el pestillo a tu cuenta de usuario de Mediawiki.

Figura 8: Código Temporal de Pareado

Introduce el código que has recibido en el móvil, en la caja de texto de Mediawiki y pulsa el botón para enviarlo. Si todo va bien, tu cuenta se pareará con Latch, y al actualizar la lista de servicios de la app de Latch en el móvil, aparecerá tu nuevo servicio Mediawiki.

Utilización de Latch en Mediawiki

Desde la app de Latch en tu smartphone podrás activar o desactivar el candado digital que permite/restringe acceso a la cuenta. Recuerda que si se produce un acceso fraudulento a tu cuenta cuando tienes un Latch activado sobre ella, te llegará una notificación a la app del teléfono móvil.

Figura 9: Accesos a Mediawiki protegidos con Latch


Este plugin lo he desarrollado como Proyecto de Fin de Grado, y ahora mismo, estoy redactando la documentación del mismo para presentarlo en un par de meses a tribunal, por lo tanto, ahora mismo no tengo demasiado tiempo, pero para los usuarios de Microsoft Windows, os prometo, que en cuanto tenga hueco haré un instalador automático también para este sistema operativo, para que no sea necesario copiar los archivos a mano. Tenéis la documentación sobre como instalar el plugin manualmente tanto para GNU/Linux como para Microsoft Windows en los documentos linux_install.txt y windows_install.txt Por último, he de decir que el plugin está localizado en Inglés, Español, Catalán, Gallego, Euskera, Polaco y Turco.

Autora: Paula Rodríguez

Entradas populares