Los administradores del servidor IRC Unreal descubrieron durante el fin de semana una puerta trasera en el paquete para sus espejos. Se puede encontrar la alerta completa en su sitio web, pero hay una parte del mensaje en particular que llamó mi atención:
Esto prácticamente significa que el programa troyano estuvo disponible para descargarse por alrededor de 8 meses antes de que se lo descubriera.
A pesar de que se limpiaron las fuentes oficiales, realicé una búsqueda rápida y pude encontrar la versión infectada en sólo minutos.
Es relativamente fácil detectar la versión maliciosa porque tiene el siguiente MD5:
752e46f2d873c1679fa99de3f52a274d Unreal3.2.8.1.tar.gz
¿Cómo funciona esta puerta trasera? Este es un pedazo del código malicioso:
Como pueden ver, sólo se necesitaron dos líneas de código, y otras dos para definir las condiciones en las que se inserta el código, si se define DEBUGMODE3.
Lo que sucede aquí es que en el módulo “s_bsd.c” hay una función llamada “read_packet” que maneja cada paquete de datos que se envían al servidor. Si se detecta el comando “AB” (que en este caso se define por DEBUGMODE3_INFO), el resto de los datos en el buffer se envían directo al sistema operativo para ejecutarlos via “system ()”. Bastante simple y directo.
¿Cuál es la moraleja de esta historia? En primer lugar, es fácil ignorar algo tan pequeño como una o dos líneas de código malicioso en las aplicaciones de hoy en día, que cuentan con cientos de miles de líneas. Esta no es la primera vez que ha sucedido y estoy seguro de que no es la única aplicación con fuente abierta infectada.
Lo peor es que se tardó 8 meses en descubrirlo. ¿Cuánto se tardará en encontrar el próximo?
La puerta trasera del servidor IRC Unreal