Actualización: Las contraseñas del eCenso no están precisamente guardadas en texto plano, pero sigue siendo muy feo el asunto

Nota: Quiero reiterar que las informaciones expresadas en este blog corresponden a mi opinión personal y no comprometen la compañía para la que trabajo.

Ayer publiqué un post diciendo que las contraseñas de los usuarios del eCenso están almacenadas en texto plano, dado que muestran la contraseña al final del registro y la mandan el texto plano por email si usas la opción de “Olvidé mi contraseña”. Al investigar más, me di cuenta que esto no es precisamente cierto, así que quiero precisar lo que he descubierto desde entonces, gracias a la ayuda de Andrés Felipe Cruz y Jairo Suárez en Facebook.

eCenso Offline

Actualización: El eCenso Offline ya no está disponible.

El DANE tiene una opción de hacer el eCenso sin conexión a internet vía una aplicación de Windows. Sin embargo, esto no es una aplicación común y corriente: es un servidor WAMP completo que el usuario tiene que descargar y ejecutar, y que abre su propio navegador web.

2

El código detrás del eCenso Offline, hasta donde puedo ver, es casi idéntico al del eCenso normal. El código está escondido usando la bandera de archivo de sistema de Windows, pero apenas activé la opción de mostrar estos archivos en Windows, los pude ver.

1

Esto significa que cualquier persona puede descargar el código completo del eCenso y ver qué está ocurriendo. Esto también podría llevar a que un hacker pueda leer el código para descubrir más problemas de seguridad.

¿Cómo se almacenan las contraseñas?

Las contraseñas se almacenan en MySQL, en la base de datos bd_censo y la tabla ecp_usuarios. La contraseña para la base de datos está disponible en el código en los archivos de configuración. Creé un usuario de prueba y pude extraer su nombre de usuario y contraseña:

3

4

Parece que está encriptada, ¿no? Sí, está encriptada, pero es encriptación simétrica, y lo peor de todo es que la llave es pública para que todos la vean. El código para encriptar y desencriptar contraseñas es el siguiente, del archivo Danecrypt.php:

5

Ahora, es posible que la llave la hayan cambiado para la aplicación offline, pero de todas maneras sigue siendo muy mala práctica encriptar contraseñas en vez de usar hash+sal.

Adicionalmente, este código no es seguro. Haciendo una búsqueda, podemos ver que este código fue copiado y pegado de StackOverflow de una respuesta que tiene numerosas advertencias de los problemas de seguridad incluídos en él. ¿Por qué el DANE usaría código que la comunidad de programadores profesionales diría que es inseguro?

¿Por qué es malo encriptar contraseñas (en vez de usar un hash+sal no-reversible)?

Si las contraseñas se pueden encriptar, significa que se puede desencriptar, no solo por el sistema, sino también por un hacker, un empleado con intenciones maliciosas, o cualquier otra persona que consiga acceso a la llave. En este caso, conseguir acceso a la llave fue ridículamente fácil ya que el DANE nos deja literalmente descargarla de su página.

Poder recuperar la contraseña original suena como buena idea para alguien sin mucho conocimiento, pero al analizarlo más profundamente, no es algo necesario o deseable. Dado que muchos usuarios re-usan contraseñas, es importante que si se roban la base de datos, los hackers no puedan usar las contraseñas para hackear otras páginas. Además, este tipo de encripción hace que todos los usuarios que usen la misma contraseña tengan la misma contraseña encriptada (recordemos que la contraseña más popular del mundo es “password”).

Las contraseñas deben ser transformadas usando hash+sal, lo cual hace virtualmente imposible recuperar la contraseña original. Este es el estándar de la industria. Si el usuario olvida la contraseña, no es necesario darle la contraseña original; puede recuperar su cuenta creando una nueva. El hash hace que la contraseña se transforme en una sola vía en algo único pero irreconocible, mientras que la sal aleatoria hace que el hash de todos los usuarios sea diferente y único.

Conclusión

Todo esto apunta a que el eCenso tiene numerosos problema de seguridad. No solo guarda la contraseña en un formato de encripción reversible, sino que hace que la llave de encripción esté pública para que todos la vean y mandan las contraseñas por email en texto plano. Además, otras contraseñas como la de la base de datos están fácilmente disponibles en el código descargable.

En mi opinión, el DANE debe responder a estas fallas de seguridad tremendas que hay en el eCenso. Están promoviendo el eCenso como seguro, pero esto es falso. Por lo menos, de manera inmediata deben quitar el eCenso Offline y actualizar todas las contraseñas y llaves de encripción en su aplicación online, especialmente si se comparten con la versión offline.

Atención Colombianos: La página del eCenso guarda tu contraseña en texto plano

Nota: Quiero reiterar que las informaciones expresadas en este blog corresponden a mi opinión personal y no comprometen la compañía para la que trabajo.

tl;dr: La página del eCenso almancena mal tu contraseña. No la uses, o usa una contraseña única y aleatoria.

Al registrarme hoy para el eCenso del DANE, me percaté de algo muy peligroso: la página me mostró mi contraseña en la pantalla cuando terminé mi registro. Esto me dio la sospecha de que la página almacena la contraseña en texto plano. Lo pude confirmar usando la opción de “Olvidé mi contraseña”, la cual me envió por email mi contraseña en texto:

¿Qué significa esto? El DANE almacena las contraseñas de una forma que, si hackers llegan a robarse la base de datos, podrán leer y usar las contraseñas. Esto no sólo les dará acceso a las cuentas de los usuarios en el DANE. La mayoría de personas, a pesar de que es mala práctica, re-usan contraseñas entre diferentes páginas. Es muy probable que la contraseña que usaron para el eCenso sea la misma que usan para su email, Facebook, banco, etc.

En vez de esto, la práctica de seguridad recomendada es usar una función criptográfica llamada hash junto con una “sal” criptográfica, que transforma la contraseña en algo irreversible que no es transferible a otras páginas, antes de almacenarla. Es por esto que cuando olvidas tu contraseña en una página como Facebook o Gmail, ellos no te pueden mostrar tu contraseña, solo cambiarla.

Además, después de buscar por toda la página del eCenso, no hay forma de cambiar la contraseña. La primera que pones es la que queda. Así que si ya usaste una contraseña mala o repetida, no hay forma de arreglarlo.

Recomendaciones

Si ya te registraste en la página del eCenso, cambia todas tus contraseñas de tus cuentas que compartan contraseña con tu cuenta de eCenso. Idealmente, todas tus cuentas deberían usar contraseñas diferentes y aleatorias. Una herramienta de contraseñas como LastPass es lo más recomendado para esto.

Si aún no te registras, trata de hacer el censo de forma presencial o que no requiera la página del eCenso. Si esto no es posible, regístrate en el eCenso con una contraseña única y aleatoria que no uses en ninguna otra parte.

¿Qué significa esto para el resto de la seguridad de la página del eCenso?

La verdad no soy experta en seguridad (soy ingeniera de software pero en el ámbito web), así que no podría decir, pero el hecho de que la página tenga un error de implementación de este calibre (esto es algo básico que cualquier programador debería saber), me da miedo saber qué más haya detrás de esto. El gobierno asegura que la herramienta del eCenso “fue desarrollada con la asesoría de expertos en seguridad digital de diferentes instituciones”, pero ¿qué tipo de expertos contrató al gobierno que no se dieran cuenta de este error? Me parece una falta terrible del gobierno con sus ciudadanos porque pone en riesgo su seguridad informática.

Actualización: Publiqué un artículo con más detalles del asunto, al poder descargar y analizar el código del DANE. Las contraseñas no están precisamente guardadas en texto plano, pero es como si lo estuvieran.

Reclutamientos universitarios de Microsoft en México, edición 2014

Microsoft: World of Innovation

Como todos los años, Microsoft estará reclutando en varias universidades de México empezando la próxima semana!

Los invitamos a traer su resume en inglés a las sesiones informativas y quedarse a las entrevistas que seguiran a la sesión.

Estamos buscando ingenieros de software con fechas de graduación entre Diciembre de 2013 y Mayo de 2016. Si eres estudiante o recién graduado de una carrera relacionada con computación (ISC, ISE, ITC, LATI, etc) o estas estudiando una maestria o doctorado relacionado (MCC, MATI, DCC) ven a entrevistar para las posiciones de becario (intern) (donde podras venir a Redmond, WA, EUA por 3 meses a trabajar en alguno de los proyectos de Microsoft) o para posiciones de tiempo completo.

Para más información, por favor visita el grupo de Facebook! Ahí tendremos tips de entrevista, cómo hacer tu résumé, y el calendario de visitas universitarias.

El calendario para la entrevistas en el DF y Puebla es el siguiente:

El calendario tentativo para Querétaro, Guanajuato, y Guadalajara es el siguiente:

gdl

También habrá reclutamientos en Monterry más adelante.

Windows 8.1 File API Improvements

For anyone that has been wondering what I’ve been doing in the past year, I’ve been working on some cool improvements for the WinRT File API. Yesterday the preliminary documentation was released and my awesome teammate Marc gave a talk at Build about the improvements, including API improvements, the new StorageLibrary API, and the integration with SkyDrive. The Build talk and a few more links are below.

Build Talk (video & slides)

MSDN documentation

Windows App Builder Blog post

Download Windows 8.1 Preview and try it yourself!

How to change APN settings on T-Mobile Lumia 810

Nokia Lumia 810

T-mobile’s exclusive Nokia Lumia 810, my current phone, does not have a built-in way to change APN settings, so even if you unlock the phone, there seems to be no way to be able to use a data plan on another carrier as the APN settings appear to be hardcoded in the phone’s firmware and T-Mobile and/or Nokia have disabled Windows Phone’s native way of changing APN settings.

Thankfully, there is a way! It involves installing Nokia’s Access Point app available for European Lumia 820 and 920 devices, which will let you change APN settings on WP8 Lumias. Here’s how:

Continue reading How to change APN settings on T-Mobile Lumia 810