10 de mayo de 2006

Sobre el mito de que el modelo de seguridad de Unix protege a Linux y Mac OS X

Nadie me lo ha pedido pero que narices, los blogs son para hablar de lo que a uno le da la gana, algo que a las masas intelectualoides les parece absurdo y motivo de análisis pero que a mi me parece estupendo. Si se hiciera una encuesta sobre cual es la estupidez más estúpida de las que ha hecho Microsoft en sus sistemas operativos, la de no utilizar cuentas de usuario sin privilegios en un sistema operativo que las soporta como lo es XP quedaría de las primeras. Se oye mucho a los linuxeros. Que si en Linux los usuarios utilizan cuentas sin privilegios y que por lo tanto son mucho más seguros, porque al fin y al cabo si intentaran meterte un virus a través de un exploit del firefox como mucho te joden tu directorio personal, y el resto del sistema permanece a salvo.

Y sin embargo, todo eso importa un carajo. No es que el sistema tradicional de permisos Unix y de ACLs que utilizan linux, mac os x y XP no funcione, que funciona. El problema es que desde el punto de vista del usuario y de sus datos, a pesar de que estar utilizando cuentas "protegidas" el sistema está funcionando en cierto modo como administrador. Como root. Creo que han hecho falta ciertos tipos de virus presentes en los entornos Windows para darnos cuenta - los que nos fijamos - de ello; de que hasta cierto punto los privilegios de la cuenta que el usuario utilize no importan una mierda

La idea básica es que todo usuario por definición almacena toda su información en su directorio personal. Por tanto si pierde la información de ese directorio pierde todo lo que tiene. Me explico: Si yo tengo mi correo, mis fotos, mis documentos, mi lista de contactos, mis programas, mi código, mi música...lo que sea, en mi directorio, y alguien encuentra una vulnerabilidad en el firefox o el safari, y utiliza esa vulnerabilidad para borrar todos los archivos de mi cuenta, me está borrando todo. No, no ha tocado el resto del sistema: Puedo arrancar de nuevo, puedo crear una nueva cuenta....¿pero de qué me sirve conservar el sistema operativo si he perdido todos los datos que tenía en mi sistema?

El problema no es nuevo. El modelo de seguridad de "tu eres el usuario fulanito y tu menganito, y ambos teneis acceso a las cosas de cada uno pero no a la de los demás" que utiliza Unix funciona únicamente en entornos multiusuario: En entornos donde hay varios usuarios y aislar a varios usuarios entre si tiene sentido. Lamentablemente, el entorno típico de los ordenadores de escritorio es el de un ordenador, un usuario, y cada vez más se tiende hacia ese modelo

Por eso estaba pensando que en el fondo, el que XP cree cuentas como administrador realmente no importa demasiado en el caso de ordenadores con un solo usuario. Si, pone ciertos límites. Pero como decía, los virus de Windows nos han demostrado que eso no sirve de nada Creo que hay mucha gente que no es consciente de que existen virus que funcionan perfectamente en cuentas restringidas. Uno de esos "worms" que te llegan por correo y que requieren que les hagas doble click para funcionar: pueden leerte las direcciones de correo de tu libreta de contactos y autoenviar copias de si mismo sin necesidad alguna de privilegios de administrador. Y quien dice correo, dice uno de esos worms que mandan un mensaje vía IM sin invervención del usuario, con un enlace a una URL y un texto amigable con el que intenta hacer pasarse por persona, con el objetivo de que te bajes el archivo de la URL - que casualmente es una copia del virus - y lo ejecutes. Incluso pueden autoiniciar un programa cada vez que el usuario haga login. ¿De qué nos sirven las cuentas restringidas si como decía antes, un exploit del navegador - firefox, safari - puede acabar con cualquier archivo de tu cuenta?

Por eso SELinux (y las correspondientes alternativas de Vista y de Mac Os X) es tan importante: Modelos de seguridad completamente distintos donde un usuario puede no tener permiso para acceder, desde un programa, a un archivo que él mismo ha creado. Con SELinux se puede puede decir al sistema operativo que, por ejemplo, firefox solo pueda acceder a ~/.mozilla/firefox y que solo acceda a puertos 80, de manera que si es afectado por un exploit no tendrá permiso para tocar nada más. Esto permite ir más allá del modelo Unix, y conseguir un sistema que protege a todos los niveles - o al menos que lo permita. Que permita que un exploit en mi navegador no me mande al traste el resto del sistema.

3 comentarios:

  1. Pues teoricamente los permisos evuitarian que ejecutes programas infectados y mandes spam desde tu máquina. Pero como te cambien el $PATH adios, te la liaron.

    ResponderEliminar
  2. Anónimo10:47 p. m.

    Hombre, está claro que no es la panacea pero ayuda, y mucho.

    Y no sólo desde el punto de vista técnico, sino también desde el punto de vista cultural. Yo por ejemplo lo primero que hice al instalar el mldonkey en mi ordenador fue crear un usuario específico para él. Con su directorio HOME y todo. Después puedo perfectamente manejarlo y acceder a los ficheros que se descarga a lo largo del día desde mi cuenta normal de usuario. Eso mismo quizás se pueda hacer también en otros sistemas pero seguro que no es la práctica habitual. De ahí lo de la cuestión cultural.

    er tuko.

    ResponderEliminar
  3. Pues toricamente los permisos evuitarian que ejecutes programas infectados

    ...nadie ha dicho que no lo hagan

    y mandes spam desde tu máquina.

    Los permisos no pueden hacer NADA para evitar que mandes spam desde tu máquina...¿acaso crees que el spam se basa tan solo en poner servidores SMTP? Si asi fuera, haría tiempo que se hubiera acabado con el spam

    ResponderEliminar