26 de enero de 2016

¿Qué es un 0-day?


Si no eres el tipo de persona que se pasa horas del día leyendo artículos sobre seguridad informática, algunos términos que no son fáciles de deducir pueden generarte dudas. Uno de los que me consultan con mayor frecuencia es el de 0-day, por lo que en este artículo analizaremos su significado.

Entonces, ¿qué es un 0-day? lo definimos como:

Una nueva vulnerabilidad para la cual no se crearon parches o revisiones, y que se emplea para llevar a cabo un ataque. El nombre 0-day (día cero) se debe a que aún no existe ninguna revisión para mitigar el aprovechamiento de la vulnerabilidad. Estas a veces se usan junto a los troyanos, rootkits, virus, gusanos y otros tipos de malware, para ayudarlos a propagarse e infectar más equipos. También se puede encontrar escrito como “0day“, “zeroday” y “zero-day“.

Pero, ¿qué significa exactamente? Antes de profundizar en el adjetivo “0-day”, comencemos por examinar con mayor exactitud qué significa cuando hablamos de vulnerabilidades y exploits.
Vulnerabilidades y exploits

Puedes pensar en el software informático como si tuviera la estructura de una puerta de malla metálica: está compuesta por millones de líneas de código entretejidas. Con la excepción de que, en el caso del software, el entretejido de dichos hilos suele ser bastante complicado: en lugar de verse como una malla simple, se asemejaría más a un plato de espagueti. Esto suele dificultar bastante la tarea de encontrar puntos débiles dentro del código. Hasta las herramientas de verificación automatizadas a veces presentan problemas al analizar el código.

Para explicarlo sencillamente, los humanos escriben el software. No son infalibles, y a veces no pueden verificar todas las combinaciones posibles en que las personas podrían a llegar a usar su código. Ocasionalmente, ya sea a través de una investigación minuciosa o por un uso indebido accidental, se puede llegar a encontrar uno de esos puntos débiles. Los llamamos “vulnerabilidades” de software.

Cuando ocurre una vulnerabilidad, el punto débil que ésta genera puede causar que los programas se comporten de manera extraña. Si alguien descubre la presencia de una vulnerabilidad, puede utilizar ese comportamiento extraño para crear una falla por donde los atacantes pueden ingresar y lograr que se ejecute su propio código malicioso en tu equipo.

Ciertas veces, el comportamiento extraño simplemente provoca que se bloquee un programa. Existe una gran variedad de resultados posibles, dependiendo del error específico. El código que usan para crear esa falla o provocar el bloqueo del programa tiene como objetivo aprovecharse del área vulnerable del software. Por esa razón se llama “código exploit” (programa que aprovecha vulnerabilidades) o, para abreviar, “exploit“.
¿De cuántos días estamos hablando?

Ahora que ya sabes lo que son las vulnerabilidades y los exploits, ¿qué queremos decir con “0-day“? ¿Cómo se cuentan “cero” días?

Hasta el momento en que el fabricante del software lanza una revisión que corrige una vulnerabilidad, se la considera “vulnerabilidad 0-day“. Si existe un código exploit disponible para dicha vulnerabilidad, es un “exploit 0-day“. El número “0”, en este caso, cuenta la cantidad de días desde que está disponible la revisión correspondiente para el público.

El caso ideal es cuando un investigador (que tenga presentes los mejores intereses del público) descubre la vulnerabilidad y la informa al fabricante de software, para que resuelva el problema antes de que cause daños. Lamentablemente, en el mundo real a veces es el autor delmalware quien descubre el problema, y el resultado es naturalmente mucho más problemático para quienes usan ese software con vulnerabilidades; en especial debido a que los creadores de malware no suelen ser tan considerados como para compartir información sobre la vulnerabilidad descubierta con el fabricante.

En este caso, el fabricante suele enterarse del problema después de que el investigador recibe una muestra de la amenaza que está aprovechando dicha vulnerabilidad. Éste fue el caso con las tres vulnerabilidades en Adobe más recientes, que fueron aprovechadas por los autores de malware para atacar los equipos de los usuarios.

También vale la pena mencionar que, cuando un fabricante lanza una revisión, no significa el fin de las actividades de los autores de malware para dicha vulnerabilidad. Como saben que las personas en general posponen la actualización del equipo por días, semanas e incluso años, las actividades maliciosas pueden llegar incluso a aumentar para vulnerabilidades conocidas que ya cuentan con revisiones disponibles. Mientras el exploit siga dando un buen retorno de la inversión, sus creadores seguirán utilizándolo.

En resumen, “0-day” se refiere a un problema que aún no cuenta con una solución. Ésta es una de las razones por las cuales recomendamos tener una protección en varias capas. Uno nunca sabe cuándo ocurrirá un problema como éste, pero si cuentas con una estrategia de seguridad íntegra que no se base solamente en un solo tipo de software o de tecnología, tendrás más posibilidades de aguantar la tormenta inevitable sin graves daños.

Y cuanto antes apliques las revisiones y las actualizaciones del fabricante de tus programas, ya sea desde su sitio web o de una tienda de aplicaciones móviles reconocida y confiable, reducirás más el riesgo de resultar víctima de alguna vulnerabilidad.

¿Soy un Hacker?