2002-09-24 16:02
Después de leer que
en agosto se descubrieron más de 10 vulnerabilidades al día, uno no sabe si poner directamente un condón sobre el enchufe del teléfono o el de tarjeta de red, o cortarlo con una cizalla, o no acercarse al ordenador salvo por prescripción facultativa.
El problema no es nuevo. El
gusano de Arpanet se dispersó por ordenadores VAX y Sun ya en el año ???. Lo que ocurre es que la dispersión de gusanos se beneficia de los efectos de red, es decir, el número de infecciones es proporcional al cuadrado del número de ordenadores conectados a la red. Cuantos más ordenadores hay conectados a la red, más probable es que haya uno que tenga una vulnerabilidad, precisamente la que el gusano está buscando. Porque eso es un gusano: un programa que aprovecha algún servicio que se esté ejecutando en el ordenador, y que por alguna circunstancia, permita ejecutar cosas sin que el usuario/administrador del ordenador se entere, o quiera.
¿Cuáles son esos servicios? Múltiples, desde el servidor web, hasta un servidor de correo, servidor de terminales, programa de intercambio de ficheros (que son clientes y servidores a la vez), programas de mensajería instatánea... El último gusano,
slapper, usa una vulnerabilidad descubierta hace tiempo en un módulo del servidor web Apache, el
mod_ssl
. Los gusanos que infectan ordenadores con Windows usan tanto errores del programa de correo electrónico, como la simple inocencia del usuario (ejecutando un programa que le llega por email), como los servidores web. Otros gusanos usan servicios más exóticos, tales como
Ramen, que atacaba wu-ftpd, rpc.statd y lpd .
¿Cómo atajar el fenómeno de los gusanos? Vayamos por partes: primero, cómo evitar que se produzcan vulnerabilidades, y segundo, qué hacer ante lo inevitable.
Las vulnerabilidades son simplemente errores de programación, que permiten que un usuario remoto haga lo que en principio no se supone que debe hacer. Como se trata de errores de programación, basta con programar sin errores. Fácil, ¿no? Pues no. Cualquier proyecto medianamente complejo, como el
Apache, contiene millones de líneas de código, escritas por cientos o miles de programadores, y es virtualmente imposible esperar que no haya un error en todo ello. Sin embargo, hay gente, como
Theo de Raadt, el coordinador de OpenBSD, que mediante auditoría de código, consigue eliminar la mayor parte de los errores que causan luego vulnerabilidades. De hecho, su OpenBSD, un sistema operativo de la familia de los Unix (similar, por tanto, a Linux), tiene fama de ser el más seguro.
El segundo frente de ataque serían las acciones a tomar una vez que se encuentre una vulnerabilidad (y, si es posible, antes de que se escriba un gusano que la explote). Aquí hay dos enfoques, que reflejan los dos universos en los que se dividen los programas. El enfoque "abierto" permite que muchas personas miren el código que tiene una vulnerabilidad, y que cualquiera con conocimientos suficientes escriba código que la arregle y lo publique para que todo el mundo lo use. El mundo "cerrado" primero se calla, luego, cuando no queda otro remedio, la admite, y finalmente, al cabo de los meses, saca un "Service Pack" que la arregla. No es de extrañar que los gusanos proliferen mucho más en el mundo "cerrado" que en el "abierto".
Pero finalmente, cuando ya existe un parche para tapar el agujero de seguridad o vulnerabilidad, hay que aplicar el parche. Y eso tiene que hacerlo el usuario. Y a veces lo hace, si se entera, pero otras muchas veces no. Y eso permite que gusanos como el slapper, que aprovechan agujeros que se solucionaron hace tiempo, se expanda.
En realidad, la solución para evitar los gusanos es fácil: primero, permitir que mucha gente mire el código, para que se puedan encontrar los errores; cuando el código entre en producción, dejar que se siga mirando, para que se puedan corregir los errores por cualquier persona que sepa hacerlo. Y, finalmente, habría que dejar que los sistemas operativos se actualizaran solos. Hoy en día es muy fácil con utilidades como apt-get, up2date o red-carpet actualizarse, pero todavía hay que dar a mano instrucciones para que se haga. Pues bien, seguro que a mucha gente no le importaría que se hiciera autonómamente, al menos con las vulnerabilidades más gordas. Lo cual supongo que, en el futuro, será el camino a seguir.