Kernel Crash-Exploit descubierto
Carlos Manuel Duclos Vergara
carlos en embedded.cl
Lun Jun 14 17:36:34 CLT 2004
>> el punto seria buscar la manera de evitar que alguien pueda cambiar los
>> bits de la FPU mas que evitar que la interrupcion provoque la debacle;
>La interrupcion dentro del nucleo provoca la debacle porque _no_ la
>interceptan/manejan adecuadamente. Creian que interrupciones de la FPU en
>el nucleo eran imposibles...
el punto es que no debieran ocurrir, al menos no de esta forma
>>
>no
>> puse mayor atencion al codigo del ejemplo, pero habria que preguntarse:
>> 1.- que privilegios requiere el codigo para ser ejecutado?
>Usuario corriente.
puedo entender que el usuario corriente pueda leer el registro, pero
cambiarlo? es como un sistema de seguridad que usa identificacion
biometrica + tarjetas de seguridad encriptadas + cuanta cosa se pueda usar
y que tiene un ventana sin vidrio...
>> 2.- como es que un registro sensible como el estado de la FPU esta
>> disponible para ser cambiado?
>Porque son flags de estado de la FPU, no es privilegiado de ninguna
forma.
su lectura, pero la escritura es tirado de las mechas que no sea
privilegiado
>> 3.- se necesita cambiar el valor de ese registro?
>Yep. Cada vez que efectuas una operacion de punto flotante cambian,
registran modo de redondeo, genero NaN, ...
eso lo _DEBE_ hacer el procesador, no el usuario o los x86 son peores de
lo que pensaba
>> 3.a.- No: es posible cambiar el mapa de memoria y dejar ese registro en
una
>> region ro?
>Imposible. Son flags de la CPU.
mayor razon aun, el usuario lo unico que necesita es saber si funciono o
no, no necesita pichicatear la FPU para nada...
Más información sobre la lista de distribución Linux