Virus en GNU/Linux

Mi amigo, el señor Anónimo, ha escrito algunos comentarios en un post anterior sobre un tema doloroso para los Windowseros: No hay viruses en GNU/Linux. Éste es mi punto de vista, con los pocos conocimientos que tengo de GNU/Linux. Veamos si es cierta dicha afirmación:

Definición

Partamos con la definición de “Virus Informático”, de la Wikipedia:

Un virus informático es un programa que se copia automáticamente y que tiene por objeto alterar el normal funcionamiento de la computadora, sin el permiso o el conocimiento del usuario. Aunque popularmente se incluye al “malware” dentro de los virus, en el sentido estricto de esta ciencia los virus son programas que se replican y ejecutan por sí mismos. Los virus, habitualmente, reemplazan archivos ejecutables por otros infectados con el código de este. Los virus pueden destruir, de manera intencionada, los datos almacenados en un ordenador, aunque también existen otros más “benignos”, que solo se caracterizan por ser molestos.

Bien. Un virus (informático) es un programa. Y como cualquier programa, puede ser ejecutado en cualquier plataforma, Windows, GNU/Linux, Apple, la plataforma para la cual haya sido generado el binario del virus. Partiendo de esta premisa, es posible escribir un programa tipo virus en GNU/Linux.

Protección del sistema de ficheros

Lo que no es posible, es que un programa tipo-virus, escrito en GNU/Linux,pueda acceder a zonas críticas de la seguridad del Sistema Operativo: Un sistema operativo moderno debe evitar eso. Y para hacer un poco de historia, en Windows 95 y 98, con el sistema de ficheros FAT, cualquier programa podía acceder a cualquier fichero del sistema operativo, incluso a su configuración. Era un error de diseño: El sistema operativo no era seguro.

Unix (y por consecuencia, Linux) ha sido desde siempre multi-usuario, por lo que la separación de privilegios y distincion entre usuarios y administradores ha estado en su diseño desde siempre. Un usuario no puede escribir en la configuración del sistema, si éste no tiene permisos del Administrador.

Separación usuario normal/Administrador

Windows NT usaba el sistema de ficheros NTFS, que tiene la opción de poder poner permisos a los ficheros. Microsoft empezó a forzar su uso desde Windows XP en computadoras para usuarios finales, pero nuevamente el mal diseño del Sistema Operativo atacó de nuevo: Es imposible vivir como usuario sin privilegios en Windows XP. Algunos programas no funcionan (He visto juegos con este problema), asi que no queda mas remedio que vivir como Administrador (eso me consta que sucedía en las Cabinas de Internet). Incluso, el Instalador de Windows XP te crea el primero usuario con privilegios de Administrador. Entonces la protección del sistema de ficheros desaparecía por completo.

En el mundo Unix (y Linux) es completamente normal (y natural) trabajar como un usuario sin privilegios. Es más, animamos a todos a no usar su estacion GNU/Linux como root (el usuario Administrador).

Ejecución de programas

Los programas ejecutables en Microsoft Windows son identificados como tales, por la extensión del mismo. Y como en estos tiempos, el concepto de “extensión” ha desparecido (ahora es parte del nombre), Microsoft Windows intentará ejecutar cualquier fichero cuyo nombre acabe en “.exe”, “.com”, “.bat”, “.scr”, “.pif”, “.cmd”, “.vbs”, “.js”, etc, etc, etc. Un error al diseñar la interfase de Windows 95 en adelante, es evitar mostrar la extensión, quizas para “no confundir a los usuarios”. Pero esto sirvió para que alguien te enviara un programa camuflado bajo el nombre de una imagen, por ejemplo “pamela_anderson.jpg.exe”. Windows sólo mostraba “pamela_anderson.jpg”, por lo que muchos hacian doble clic al fichero, y acababan infectados de alguna forma. Microsoft ahora hace preguntas si quiere ejecutar un fichero, y verifica su firma digital para evitar estas cosas, sin mucho éxito. Esto también es un error en el diseño del sistema operativo, que intentan encubrirlo con cientos de cosas que resultan ser hasta engorrosas.

Nuevamente, en GNU/Linux, los programas tienen que ser marcadosmanualmente como tales, antes que el Sistema Operativo pueda ejecutarlo. Y cuando un usuario crea un fichero, éste viene con el atributo de ejecucióndesactivado. Entonces, pueden mandarme miles de “virus” creados para GNU/Linux por correo, o puedo descargarlos de Internet, incluso puedo copiarlos de un CD manualmente, pero no podria ejecutarlo, hasta que manualmente le dé la autorización para ello.

Y si yo le diera el permiso de ejecución a un programa tipo virus, y lo ejecutase, éste programa no saldría del control del propio usuario: no podría modificar la configuración del sistema, o sobreescribir programas claves del mismo, o abrir puertos restringidos, etc. Se borra el usuario, y asunto solucionado.

¿Qué tan difícil es hacer un virus?

En Microsoft Windows: muy sencillo. Un niño que sepa algo de Visual Basic puede hacer un fichero .vbs con un script que se auto-propague e infecte PCs. Esto es popular últimamente en las unidades USB, donde se colocan en el autorun.inf, para que sean ejecutados cuando se conecta dicha unidad.

OJO para los que piensan que su USB no funciona. Es probable que el virus se haya dañado, y Windows rechaze abrir el USB. Prueben abrirlo con GNU/Linux y borren el fichero “autorun.inf”.

En GNU/Linux hay una mayor variedad de lenguajes de script para hacer programas fácilmente. Pero éstos tienen las mismas restricciones que un programa normal (mira el apartado anterior).

Antivirus para GNU/Linux

Nuestro gran amigo, el señor Anónimo nos comenta también en su comentario de la existencia de Antivirus para GNU/Linux. Si leen las páginas de los Antivirus para GNU/Linux, verán que todos analizan los ficheros que se almacenan por posibles amenazas de virus… para Microsoft Windows GNU/Linux puede ser usado como servidor de ficheros en redes Microsoft Windows, por lo que aparece un mercado de antivirus para ellos, no para el sistema operativo.

Veo que hay un antivirus que también ofrece una protección en caso de ataques a programas que corren dentro de GNU/Linux, pero esto lo tocaré en el siguiente punto.

“Yo leí de un virus que ataca Sistemas Linux”

Yo también. Pero si lo lees bien, verás que es muy probable que ese quizas-mal-llamado “virus” ataque un programa que corra sobre GNU/Linux, mas no al sistema operativo en sí. El último que recuerdo, fue un virus que atacaba el Servidor Web Apache. Si lees bien también este post, verás que sólo he nombrado deficiencias del sistema operativo Windows, el cual es el motivo todo este texto: Linux, el sistema operativo, es bastante seguro por diseño.

Usualmente, al encontrarse una deficiencia en un programa open source, éste es subsanado a una velocidad muy rápida. Lo que me lleva al último punto de este post.

Errare humanum est

Es conocido que la taza de “crackeo” de servidores con GNU/Linux es alta, incluso más alta que con Microsoft Windows. Un GNU/Linux mal configurado es tan suceptible a malware como Microsoft Windows. Y esto es por culpa humana: Muchos técnicos piensan que con sólo instalar GNU/Linux, ya tienen la fortaleza construida. Entre tantas cosas, es necesario vigilar que los paquetes estén al día, con sus últimas actualizaciones de seguridad instaladas.

Mala costumbre es, como otro ejemplo, usar GNU/Linux como root más de lo debido (y aun hay gente que lo hace). Estas cositas son válidas para cualquier sistema operativo, y para cualquier programa: Nada es perfecto.

Mi amigo anónimo dice también que “la gente que hace viruses lo que busca es mayor infección”. Es probable, la Ley de Linus es muy cierta: “Dado un número suficientemente elevado de ojos, todos los errores se convierten en obvios”. Pero también lo hacen por que es muy facil hacerlo en Microsoft Windows (ya toqué este punto antes), por los errores de diseño expuestos aquí.

Pero siempre, el punto más débil de cualquier sistema, es el usuario. Nunca podrán hacer cosas a prueba de usuarios Es un equilibrio que los Sistemas Operativos modernos tienen que buscar.

Conclusión

Microsoft Windows tiene serios problemas de diseño. Deberian de re-hacerlo por completo para que sea seguro, pero eso es algo imposible. Windows Vista fue su último intento de parchar un error que arrastran desde siempre, y ha sido una catástrofe. Incluso en estos tiempos, tu Windows te avisa que no has comprado un antivirus, o que éste está desactualizado: Microsoft es consciente que su sistema operativo es una desgracia.