Category Archives: En Español

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.

ITESM Achievements List

funny-achievement-unlocked-created-own

Compilado con la ayuda del genial @lhchavez. Por pura diversión, no tomar en serio Smile

Cuáles has logrado tú?

Sabelotodo
Corregir a un profesor durante su clase

Lo Básico 
Atrapar al profesor diciendo más de 5 veces "básicamente" en una clase

Gobernador
Ser alcalde de 5 edificios del campus en Foursquare

Tablero roto
Entregar tarde una tarea por fallas en BlackBoard

Acaparador
Llenar tu buzón de correo institucional con correos de profesores

Inculto
No ir a un evento cultural en todo el semestre

Rata de biblioteca
Tener más de 8 libros rentados al mismo tiempo

Pijamada
Pernoctar en las instalaciones

Residente
No salir de las instalaciones por 36 horas

Viajero
Visitar 5 campus en un semestre

Malagradecido
Faltar al servicio becario más de 2 semanas en el semestre

Al límite
Mandar una tarea de Blackboard 1 minuto antes de que se cierre la liga

Legado
Ser mencionado por el profesor en una clase después de haberla aprobado

Compas
Recibir un ‘Like’ de un profesor en Facebook

Conflictos
No poder inscribirte por conflictos en las materias

Becario Ocupado
No poder inscribir materias de 12 créditos por límite de crédito de becas

Madrugador
No tener una sola clase después de la 1PM durante un semestre

Trasnochador
No tener una sola clase antes de las 6PM durante un semestre

1 µT
Haber completado el curso de inducción al servicio social comunitario

Zzzzz
Dormir en una clase

Brincacharcos
Refréscate en una fuente del campus

Ingenioso
Presenta tu proyecto en Ingenia

Artista
Tener una creación artística tuya desplegada en el campus

Fotogénico
Tener más de 200 fotos tuyas en el campus publicadas en Facebook

Libertino
Citar a Wikipedia en una tarea

Inductor
Dar una charla en Introducción a la Carrera

Cisco 1800
Asistir a una ruta académica

Competitivo
Representar al campus en alguna competencia

Desempleado
Asistir a más de 4 sesiones de reclutamiento en un semestre

Factorial
Cursar materias todas con difererente requisito de semestre en un semestre

Colchón
No cursar ninguna materia de tu departamento en un semestre

Rezagado
Cursar una materia con personas de al menos 6 semestres abajo de tí

Mascota del profe
Cursar 5 materias con el mismo profesor durante la carrera

Jugador
Jugar un juego de video en el laboratorio de gráficas

DisplayDisaster
No poder hacer una presentación en clase por falta de puerto VGA en tu laptop

Multijugador
Organizar un LAN party en el laboratorio de gráficas

Prof
Impartir un curso o taller

Fundador
Ser parte de la mesa original de alguna asociación o grupo estudiantil

Presidente
Ser presidente de una asociación o grupo estudiantil

Admin
Tener acceso administrativo a una computadora del campus

Ausente
Llegar al límite de faltas en una materia

Estrella
Aparecer en alguna publicación del campus

Por los lulz
Hacer una lista de achievements para el Tec