Un simple click puede generar una explosión lógica

Me parece que se me había pasado comentaros pero…

No todos los malware ejecutan su payload malicioso instantaneamente en cuanto se descargan y ejecutan por primera vez. Muchas veces, estos se mantienen en la sombra y se disparan únicamente cuando una determinada situación ocurre (algo así como una mecha inteligente). Ese tipo de malware se denomina «bomba lógica«.

Unos ejemplos simples de este tipo de malware son las bombas que explotan únicamente en fechas determinadas, o en el caso de dispositivos móviles, las que liberan su payload únicamente cuando la víctima se encuentra cerca de determinado lugar. De todas formas, existen otros tipos de bombas lógicas muy típicas que resultan muy interesantes y que se aprovechan de un fallo en el programa que interactúa con los propios archivos maliciosos:

  • Billion laughs: También conocida como bomba XML, como bien indica su nombre, se utilizaba para sobrecargar parsers XML, generalmente de servidores HTTP. Este ataque explota el hecho de que XML permite definir entidades. Supongamos una entidad (la llamaremos entidad uno) que tiene única y exclusivamente el string «lol«. Posteriormente, crearemos la entidad dos que se definirá como 10 entidades uno, que a su vez están definidas como 10 entidades tres. Siguiendo esta regla hasta llegar a la entidad nueve, finalmente el parser XML tratará una única ocurrencia de la entidad nueve como un billón de instancias de esa risa inicial. Esto ocupará varios gigas de memoria y finalmente la aplicación web no será accesible.
  • Git-Bomb: En este caso, aunque el funcionamiento sea muy similar al del ataque «billion laughs«, en este caso el damnificado será nuestro querido controlador de versiones git. Con tan solo un repositorio perfectamente formado por 12 objetos, se puede lograr esta interesante hazaña. El secreto se encuentra en la de-duplicación de «blobs» de git, que se utiliza principalmente para poder hacer los repositorios más pequeños y permitir usar el mismo blob cuando un archivo se mantiene sin cambios entre commits. Git también permite la de-duplicación de objetos árbol (los cuales definen la estructura del repositorio). Por tanto, siguiendo la técnica de la bomba XML, podemos hacer que git intente crear un billón de archivos con 10 referencias al blob y solamente 10 objetos árbol en total.
  • Zip of Death: Este es uno de los ataques más antiguos de este tipo, pero dirigido al decompresor de archivos. El ejemplo más típico en este caso es el famoso «42.zip«. Se trata de un archivo comprimido de tan solo 42 kilobytes. Internamente este archivo tiene 5 capas de archivos zip anidados en grupos de 16, siendo la capa inferior un archivo que contiene 4.3 gigabytes. Finalmente el sistema intentará descomprimir 4.5 petabytes, lo cual causará más de un error en el equipo. Si algún autoestopista galáctico os pregunta el sentido de la vida, desconfiar de él, no es oro todo lo que reluce.

Las bombas lógicas no son solo algo teórico que los investigadores han imaginado, existen varios casos reales que han supuesto más de un quebradero de cabeza a más de uno. Un administrador de sistemas de Medco Health Solutions y un contratista de  Fannie Mae acabaron bastante tiempo entre rejas por introducir bombas lógicas en sus servidores.

Ejecutar o instalar unicamente cosas de las cuales confieis totalmente su origen y su funcionamiento en vuestro equipo. Si podéis echar un ojo al código en el momento haya alguna duda, estaréis mucho más seguros todavía.

El que avisa no es traidor.

Iskander Sanchez-Rola
Acerca de
Founder/Content Director
Expertise: Web Security and Privacy
iskander-sanchez-rola.com