Category Archives: Tech issues

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.

What is a browser?

I just remembered this video today. It’s a great look at what people think a browser is. It’s incredible how many people confuse a browser with a search engine.

Now that the browser ballot has come into effect in the EU, will this lead people to be more educated about what a browser is? The browser ballot page has no information as to what a browser is and what it is for. As the video shows, many people are ignorant on the subject. Choosing a good browser is not something easy for those that have no idea what this is.

What would you do to increase awareness on web browsers and other important Internet technologies most users ignore?

My Opera Rant

image

Oh, Opera… You are the browser that standardized tabbed browsing, new tab pages, browser synching, and so many more innovative features. You are one of the fastest and most standards-compliant browsers. You are the browser that pushes development of other browsers forward. Yet you can barely break 2% market adoption. Why is that? Why, for a browser first launched 8 years before Firefox and only one year after Internet Explorer?

Opera, you don’t need to sue Microsoft to gain market share. Firefox, a browser just 6 years old, has reached 20+%. Chrome, which is less than two years old, is pushing on 6%. You might say, “But Google has funds for marketing!” But what about Mozilla? Firefox is the second largest browser, and it is made and managed by a company a third of the size of Opera Software.

Opera, your desktop business model doesn’t work. If you need the EU to force users into changing browsers so you can gain market share, you’re doing it wrong. You need to expand your user base not only by creating great new features, which you do all the time, but also by advertising them. Your main weakness, Opera, is that nobody knows about you.

On its launch day, Firefox posted a full-page ad in the New York Times. Both Chrome and Firefox have launched TV and viral ad campaigns like Spread Firefox and Firefox Flicks. Google has advertised Chrome in its most prominent products like YouTube.

Firefox arrived at a time when everybody was starting to get sick of IE. You never took advantage of that. Chrome arrived at a time when everybody was starting to get sick of Firefox. You didn’t take advantage of that either. Yet, when the EU says that Microsoft has to do advertising for you, you quickly whip up a shiny new version and thank the EU for tripling your downloads.

I’m disappointed, Opera, that such a good browser has such a little market share because you refuse to do real advertising. Let’s hope this new surge is market share the browser ballot might bring will change the way you look at the market and your users.

Three Facebook wall features Twitter should have

Twitter is growing faster every day as a new player in the social media field, an area already heavily occupied with big players like Facebook. Twitter has one big thing to its advantage: its simplicity. Twitter is public by default and is extremely simple to use: just say what’s happening in 140 characters or less. However, Twitter is lacking some key features other social networking sites, notably Facebook, have had for a long time now. Here are the three I think are most important for Twitter to implement.

Easier importing items from external feeds

image

Facebook has a feature that lets you import external feeds from YouTube, Google Reader, Digg, and more directly into your wall, without using any third party apps. This is also the main feature of another service, FriendFeed, which is now owned by Facebook, and Google’s new Buzz. This way, your online activity from other sites is easily imported.

With Twitter, the only way to achieve this is by using third party services like Twitterfeed, which, although powerful, are by no means easy for a new user. Twitter needs a way to show your activity in other sites as easily as entering your user name of the external site, just like Facebook.

Inline comments and responses

image

Following a Twitter conversation is almost impossible. @replies work, but keeping track of a conversation with multiple people quickly becomes a chore. Facebook, however, allows inline comments to host a centralized conversation on a topic. This way, people can comment on the post, answer questions, and share their thoughts on the topic very easily. Buzz and FriendFeed also have this feature.

Posted links preview

imageThis is not only more convenient, but also safer than just putting a shortenned link at the end of the post. Before clicking on the link, the user has information on the name of the page and a small snippet of its content. If the posted story is a photo, Facebook will show a thumbnail. If it is a video, Facebook will allow you to play it inline. This can also lead to better safety online as knowing where the link goes may reduce phishing scams.

 

So that’s my take on the features Twitter should implement to mature more as a social network. Do you agree or disagree? What new features would you like in Twitter? Leave a comment!