[escepticos] Stuxnet

Adria Comos AdriaComos en dorna.com
Mie Oct 6 15:25:32 WEST 2010


 
¿Disculpa? ¿Qué crees que hace falta en Unix/Linux para que un proceso que pertenece al usuario X pase a ser del superusuario? Pues cambiar un valor en la tabla. Si estás usando un sistema de seguridad más complejo, basado por ejemplo en políticas MAC, ¿qué crees que son las etiquetas de confidencialidad/integridad? Pues lo mismo, un par de numerillos en una tabla.

[Adria]

Creo que sí, que estas mezclando cosas, debido a la nomenclatura "usuario".  

Hablando de los sistemas que conozco -Windows, Unix, Linux- (de otros no se, pero me extrañaría que no fuese así), una cosa son los "permisos del usuario" (escritura, lectura, ejecución, acceso a dispositivos, etc...) de un usuario/superusuario a nivel de S.O, y otra los privilegios de los procesos a nivel de CPU.  Son dos mundos totalmente diferentes e independientes

Al final es cierto que todo son tablas, pero la diferencia es que de la que hablo está protegida por hardware (la CPU. No el S.O., no, la CPU!), y eso es lo que la hace, si no hay un fallo imperdonable en el núcleo del S.O., inexpugnable totalmente.  La tabla de procesos de que hablo es la GDT y la LDT, que se encuentra en memoria en segmentos privilegiados y lugar desconocido -y cambiante- ...y que sólo accede el sistema operativo de forma totalmente exclusiva.  Ni usuario, ni superusuario pueden cambiar nada de esta tabla, porque se lo impide la CPU (ni Windows ni Linux tienen nada que decir aquí más allá de haber implementado correctamente un protocolo más que trillado).

Si se pudiera modificar esta tabla sería por un bug gigantesco o error intencionado de los programadores del S.O, acompañado de un chivatazo de algún programador del sistema descontento (o bien un fallo no menos escandaloso en la CPU).   No tiene nada que ver con ser superusuario.  De hecho, es más que posible que este bug hipotético fuese perfectamente explotable seas superusuario o no.  Y el error sería imperdonable primero porque la parte de un sistema operativo que se ejecuta a nivel máximo de privilegio suele ser pequeña y muy acotada (y por tanto, fácil de proteger), y segundo porque es algo que está resuelto y blindado desde hace más de tres décadas.  

Si fueras superusuario (legalmente o por trampas), seguirías siendo un proceso de nivel de privilegio bajo (3 en Intel) para la CPU.  Si aún así consiguieras ejecutarte (por alguna negra técnica y un escandaloso error en el S.O.) en nivel 0, lo único que conseguirías es tener toda la CPU disponible para tí...que tampoco es mucho dado a que es como estaban el 99% de los ordenadores personales -y no tan personales- antes del fin del siglo pasado y tampoco se terminó el mundo.  A partir de allí, podrías hacer muchas cosas, pero en lo que se refiere a nivel de acceso archivos o demás posiblemente nada que no hubieras podido hacer sin reventar la seguridad del procesador.  Porque la seguridad de las tablas de usuarios y el acceso a ciertos archivos del sistema está por otros lados.

Además, la implementación de estas tripas del sistema no forma parte de la especificación de nada.   Cada cual la implementa como quiere, y puede perfectamente cambiar entre versiones porque es algo total y absolutamente interno.  Por ello es inviable establecer ninguna técnica de ataque perdurable más allá de una versión (o ni eso).






Adria Comos / Software Engineer / Timing & Computing / Dorna Sports S.L.
Tel. +34 934 702 832  /  Fax. +34 934 737 779
Narcís Monturiol 2, 08960, Sant Just Desvern - Spain
 
www.motogp.com
www.dorna.com
 
cid:image001.jpg en 01C9A7C0.EE87DAD0
 
******************************************* DISCLAIMER ***********************************************
This message is intended exclusively for the named person. It may contain confidential, propietary or legally privileged information. No confidentiality or privilege is waived or lost by any mistransmission. If you receive this message in error, please immediately delete it and all copies of it from your system, destroy any hard copies of it an notify the sender. Your must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message if you are not the intended recipient.
Please note that internet e-mail neither guarantees the confidentiality nor the proper receipt of the message sent. If the addressee of this message does not consent to the use of internet e-mail, please communicate it to us immediately.
 
****************************************** AVISO LEGAL ***********************************************
Este mensaje es solamente para la persona a la que va dirigido. Puede contener información confidencial o legalmente protegida. No hay renuncia a la confidencialidad o privilegio por cualquier transmisión mala/errónea. Si usted ha recibido este mensaje por error, le rogamos que borre de su sistema inmediatamente el mensaje asi como todas sus copias, destruya todas las copias del mismo de su disco duro y notifique al remitente. No debe, directa o indirectamente, usar, revelar, distribuir, imprimir o copiar ninguna de las partes de este mensaje si no es usted el destinatario.
Nótese que el correo electrónico via Internet no permite asegurar ni la confidencialidad de los mensajes que se transmiten ni la correcta recepción de los mismos. En el caso de que el destinatario de este mensaje no consintiera la utilización del correo electrónico via Internet, rogamos lo ponga en nuestro conocimiento de manera inmediata.
 
**********************************************************************************************
 

-----Original Message-----
From: escepticos-bounces en dis.ulpgc.es [mailto:escepticos-bounces en dis.ulpgc.es] On Behalf Of Borja Marcos
Sent: Wednesday, October 06, 2010 3:25 PM
To: Lista Escépticos
Subject: Re: [escepticos] Stuxnet


On 6 Oct 2010, at 13:58, Adria Comos wrote:

> Por otro lado, el concepto de "usuario" y "superusuario" no es del 
> sistema de seguridad del procesador, sino que está a un nivel (muy) 
> superior y totalmente fuera de él.  Un "superusuario" no tiene nada 
> que hacer con la tabla de procesos del procesador, ni rezando cuarenta 
> avemarías :)

¿Disculpa? ¿Qué crees que hace falta en Unix/Linux para que un proceso que pertenece al usuario X pase a ser del superusuario? Pues cambiar un valor en la tabla. Si estás usando un sistema de seguridad más complejo, basado por ejemplo en políticas MAC, ¿qué crees que son las etiquetas de confidencialidad/integridad? Pues lo mismo, un par de numerillos en una tabla.

He mezclado un par de cosas a la hora de hablar de los niveles de privilegio del procesador y de los identificativos de usuario, pero por la sencilla razón de que estoy hablando a nivel genérico. Hay sistemas operativos que llevan drivers y procesos privlegiados que sí se ejecutan en un, digamos, "anillo de privilegio" distinto al de los procesos de usuario. ¿Y cómo sabe el sistema operativo qué nivel le tiene que poner al proceso? Pues, claro, porque está en una tabla.

En fin, que es una explicación genérica pero en general aplicable a un buen número de casos. Sobre el conocer incógnitas como el sistema operativo del que se trata y tal... La realidad es que cada vez hay menos. Y el tipo de ataque del que estoy hablando no es un ataque aleatorio, sino dirigido.




Borja.

_______________________________________________
Escepticos mailing list
Escepticos en dis.ulpgc.es
http://correo.dis.ulpgc.es/mailman/listinfo/escepticos


Más información sobre la lista de distribución Escepticos