Vulnerabilidad OpenSSL en Debian
Hace poco tiempo fue detectada una vulnerabilidad en la versión de OpenSSL incluida del sistema operativo Debian [inglés]. Este fallo de seguridad afecta a todos los programas que usan esta librería en Debian. Es especialmente importante comprender los alcances de este problema para quienes usan OpenSSH, autenticación de llave pública, y la distribución Debian o Ubuntu.
Alcances
Esta es la primera vulnerabilidad remotamente explotable realmente importante que ha afectado a algún programa importante de software libre en los últimos años. Afortunadamente, esta falla solo afecta a Debian algunos productos derivados, notablemente Ubuntu.
Para entender un poco la vulnerabilidad primero hay que saber que las computadoras aseguran la información a través de claves secretas, a través de un procedimiento llamado ‘cifrado’. Las claves secretas a utilizar son generadas de forma automática por la computadora para los sistemas más avanzados de cifrado. Para generar una clave secreta apropiada para cifrado, esta tiene que ser genuinamente aleatoria, y es allí donde comienzan los problemas para las computadoras.
Entropía y Seguridad
Una computadora es un instrumento matemático de precisión, que se comporta de forma determinísica (si no tiene algún defecto, claro está). Siempre procesa la misma información y las mismas instrucciones de la misma forma, arrojando los mismos resultados. Por eso nosotros generalmente confiamos en ellas para darnos los resultados matemáticos que buscamos. Es muy poco común hoy día ver a alguien (menor de 50 años) cuestionar los resultados de una operación matemática procesada por una computadora. Así, a la hora de generar una clave aleatoria, a la computadora le cuesta mucho trabajo. Así una computadora es cuadrada, como un suizo. Para darle un poco de flexibilidad a la computadora para que pueda inventar números, le damos fuentes de entropía, o de información que consideramos lo suficientemente aleatoria, como la temperatura del procesador, los movimientos del ratón, los intervalos entre pulsaciones de teclas y botones, y el comportamiento de la red, la información almacenada en posiciones de memoria abandonadas, entre otras. Para seguir con nuestra analogía, esto tiene casi el mismo efecto que adminsitrarle una botella de vino al suizo.
El generador de entropía de la librería de cifrado OpenSSL confundió a los mantenedores de la versión para Debian del software, que decidieron desactivar parte del código porque generaba algunas advertencias. Las advertencias dejaron de aparecer, pero inadvertidamente habían desactivado la fuente principal de entropía del programa, dejando solamente una fuente de entropía muy pobre. Resultado: números aleatorios predecibles, algo así como una lotería donde siempre ganan los mismos números.
La fuente de entropía utilizada sólo disponía de 32767 posibles valores. No es muy difícil para una computadora intentarlas todas para luego ganar acceso a información vulnerable.
¿Qué hacer?
Si usas Debian o Ubuntu, y esto es 44% de los usuarios de escritorio de Linux. Especialmente si accedes vía SSH y tienes autenticación de llave pública, entonces verifica tus claves para determinar si son vulnerables. Utiliza el comando ‘ssh-vulnkey’, disponible si tienes tu sistema actualizado. Si tienes claves vulnerables, elimínalas del(los) archivo(s) ‘authorized_keys’ inmediatamente, ya que alguien no deseado podría controlar tu computadora a través de Internet sin tu consentimiento. Genera de nuevo los juegos de claves con ‘ssh-keygen’, distribúyelas y coloca las respectivas claves públicas en ‘authorized_keys’.
Si no entendiste el párrafo anterior, es posible que no tengas de qué preocuparte, aunque de todos modos recomiendo que quedes en contacto con alguien que lo entienda para determinar si tus sistemas Debian o Ubuntu son vulnerables. Generalmente si se trata de una computaodra de escritorio con Ubuntu, y no tiene el paquete ‘openssh-server’ instalado, entonces no hay mucho de qué preocuparte. Sólo mantén tu sistema actualizado.