Sin duda alguna, has visto durante la semana pasada noticias de todo tipo de cosas como Heartbleed, OpenSSL, el cambio de contraseñas (passwords) por seguridad y muchas otras cosas relacionadas. Y aun así, debes estar preguntándote lo siguiente:
- ¿Qué es eso de Heartbleed?
- ¿Qué es OpenSSL?
- ¿Tengo que cambiar contraseñas (passwords) de mis cosas de inmediato?
En esta ocasión, verás la respuesta de estas y otras preguntas sobre uno de los temas más impactantes en la historia moderna del Internet: el Heartbleed Bug.
Imagina que te enteres que te hackearon o trataron de hackear tu cuenta de e-mail. Obviamente, tomas los procedimientos necesarios como cambiar la contraseña (password) para protegerte de dichos ataques. ¿Pero qué pasaría si ese proceso vuelve a pasar de nuevo varias veces durante el año? Te molestarías y reclamarías a la página responsable de estos malestares, ¿verdad que sí? ¿Y si te digo que el arreglar ese problema no depende de la página a cargo de tu servicio de correo electrónico, sino del arreglo de un error encontrado en una de las herramientas que usa para ofrecer dicho servicio? Lo que ha causado tanto revuelo durante la semana pasada es precisamente eso: un error en una de las herramientas de encriptación más usadas en el mundo que puede resultar en facilitar ataques.
Este error, llamado Heartbleed, ha estado corriendo por más de dos años y no fue hasta la semana pasada que finalmente se notó y se arregló. ¿Pero qué es exactamente este error y en qué manera nos afecta?
Antes de ir a eso, hay unos términos que debes saber, como los siguientes:
- Bug – error o falla en código o diseño de un sistema computadorizado que produce un resultado no deseado (desde matemática errónea hasta destrucción de todo un sistema, dependiendo de la gravedad del mismo)
- DD-WRT – Firmware (combinación de memoria física con sofware) usado en enrutadores (routers) inalámbricos
- OpenWRT – Sistema operativo basado en el kernel (software fundamental de un sistema operativo, ya que convierte código de software en instrucciones para el CPU de la computadora) de Linux; usado en sistemas integrados para crear rutas de tráfico de redes
- Encriptación – Proceso de codificación de mensajes o información de manera que solo las partes autorizadas (ejemplo: dos usuarios con dispositivos como smartphones en un e-mail normal) pueden ver eso
- Llave (de encriptación) – Pedazo de información que descifra la información codificada; puede ser pública (para verificar que la información está codificada) o privada (descifra la información como tal)
- SSL – Un protocolo de encriptación que permite el uso de llaves de encriptación con el propósito original de poder transmitir documentos privados; creado por Netscape en los 90.
- TLS – Sucesor de SSL que contiene varios protocolos usados para confirmar conexión segura y asegurar de que las partes usen un algoritmo de encriptación con sus llaves correspondientes antes de transmitir o recibir información
- OpenSSL – Una de las implementaciones más comunes de SSL, encontrado en varias variaciones de Linux, servicios de e-mail, enrutadores (routers) y hasta impresoras (printers)
- Certificado – Documento electrónico que asegura la pertenencia de una llave pública a una identidad por cosas como nombre de organización, dirección física y un e-mail; en otras palabras, asegura de que esa llave pública pertenece a quien dice ser dueño de la misma
- Heartbeat (latido de corazón) – Proceso de verificación usada para ver si una de las partes envueltas en la transmisión de información está conectada o no; usualmente hecho al mandar información a dicha parte para luego recibir esa información de nuevo con el propósito de determinar si algo está mal (ej: no hay Internet o una computadora se daña al momento)
Si te sientes perdido en la explicación del Heartbleed, puedes regresar aquí para ver la definición del término.
Ahora podemos regresar al tema original:
Heartbleed es en realidad un bug que surge de un código sometido a OpenSSL por el Dr. Robin Seggelmann, un desarrollador de software de Alemania que ha contribuido en arreglar otros bugs en el mismo. Dicho código contenía un error que ha estado ahí desde diciembre del 2011 (y que eventualmente se hizo disponible como la versión 1.0.1 desde el 19 de abril de 2012) hasta la semana pasada cuando finalmente se detectó y luego fue arreglado. Esto significa que cualquier página que dependa de OpenSSL con ese código desde diciembre del 2011 hasta ahora ha sido vulnerable a este bug paricular (a menos que se haga un arreglo que elimine el mismo). Lo que este bug particular hace es ajustar el tamaño de un heartbeat para mandar información que una computadora particular tiene para luego interceptar dicha información, que puede contener cosas como data sin mucho sentido (llamada basura), nombres de usuario (usernames), contraseñas (passwords), información de tarjetas de crédito, certificados, llaves públicas y hasta llaves privadas.
A pesar de haber mencionado que dicho error es ‘trivial’, el Dr. Seggelmann, en entrevista reciente con el Sydney Morning Herald, admitió que su impacto era ‘severo’. Y es que las consecuencias de haber tenido este bug sin detectar por tanto tiempo incluyen la exposición de información como la mencionada, en especial si hay hackers que lograron obtener certificados que pueden ser usados para crear versiones falsificadas de las páginas registradas, y naturalmente el que sea relativamente fácil poder obtener cosas como contraseñas (passwords) y estados bancarios, entre otras cosas a través de desktops, laptops, routers de Cisco y hasta smartphones con Android, particularmente la versión 4.1.1.
Para entender la forma en que Heartbleed logra obtener toda esa información, hay que ver el código donde comenzó todo:
memcpy(bp, pl, payload);
En términos sencillos, memcpy es un comando de OpenSSL que necesita tres parámetros (cosas necesarias para que funcione como debe ser):
- bp – Menciona en donde poner la información que se pide.
- pl – Menciona en dónde está la información pedida.
- payload – Determina el tamaño de la información a enviar como tal.
Este comando localiza la información pedida en pl y toma una cantidad de información especificada, que fue determinada por payload, para luego ser enviada a bp. Lo que había en bp es sustituido por lo que sale de pl. De manera similar, bp manda a pl una información del mismo tamaño y esa información termina en donde estaba pl. Así es que se logra establecer un heartbeat.
Sin embargo, el problema está en el parámetro payload, ya que es el que determina cuanta información es obtenida desde pl. Significa que uno puede mandar un espacio vacio de hasta 64 KB para obtener información de más de bp para luego poder obtener información que puede ser analizada después para ver lo que se puede usar.
Para una visión más clara de cómo Heartbleed funciona, mira esta imagen de XKCD explicando su función de manera visual:
Varias páginas como Mashable han contactado a varias compañías para ver las páginas que contenían esa versión de OpenSSL y si se hicieron los arreglos necesarios, mientras que Cisco ha estado haciendo lo mismo con sus enrutadores (routers). Inclusive, páginas como la de Mi Banco Online del Banco Popular de Puerto Rico han dado aviso sobre la existencia del bug.
Sin embargo, existe la posibilidad de que otras páginas que usas no haya hecho estos arreglos necesarios, por la cual es recomendable que busques la forma de contactarte con los administradores para ver si tienen la versión 1.0.1 de OpenSSL y si van a hacer algo. Dependiendo de lo que digan los administradores, puedes reunir otros usuarios para pedir que arreglen el problema (si en efecto tienen esa versión y no hay planes para arreglar el problema), ya que al fin y a cabo este es un problema que debería ser resuelto por desarrolladores y administradores. Ahora, si prefieres averiguar eso por tu cuenta, haz un click aquí para accesar una herramienta que puede ayudar en tu investigación.
Pero en todo caso, siempre es recomendable que cambies tu contraseña (password) cada cierto tiempo para reducir la probabilidad de que te hackeen tus cuentas electrónicas. Sin embargo, ese tema particular será atendido en otro momento.
Para resumir todo lo mencionado a lo TL:DR, Heartbleed es un bug que tenía la habilidad de poder accesar información sensitiva, que la situación está arreglando poco a poco en general y que debes de asegurar tis cuentas electrónicas de alguna manera. Espero que esto sirva para que entiendas la situación y que tengas cierto nivel de cuidado con tus cuentas, en especial si tienes alguna que toca tu dinero y crédito.
Ahora puedes decirme lo que harás, has hecho o lo que piensas de esta situación por aquí, por Facebook o por Twitter.
[Fuentes: Ars Technica, Mashable, Cisco, Gizmodo, Engadget, XKCD, Banco Popular de Puerto Rico, Heartbleed.com]