Bug en Kernel 2.4.x - Obtención de privilegios especiales
Las versiones de Linux con kernel 2.4.* son susceptibles a que
un atacante local obtenga privilegios especiales.
La función "ioperm" no comprueba sus permisos de acceso adecuadamente, lo que posibilita que un atacante local acceda a puertos de entrada/salida de forma indiscriminada.
Este es el tercer caso en poco tiempo que se descubren bugs de este estilo en el kernel de Linux.
Por suerte, y al contrario que lo que pasa con los sistemas operativos de cierta empresa de Redmond, al ser Open Source el kernel de Linux, el parche ha tardado casi menos en salir que el bug :)
Es el siguiente:
diff -urN linux-2.5.64-bk5/arch/i386/kernel/ioport.c linux/arch/i386/kernel/ioport.c
- --- linux-2.5.64-bk5/arch/i386/kernel/ioport.c 2003-02-24 14:59:03.000000000 -0500
+++ linux/arch/i386/kernel/ioport.c 2003-03-14 10:19:48.000000000 -0500
@@ -84,15 +84,17 @@
t->ts_io_bitmap = bitmap;
}
- - tss = init_tss + get_cpu();
- - if (bitmap)
- - tss->bitmap = IO_BITMAP_OFFSET; /* Activate it in the TSS */
- -
/*
* do it in the per-thread copy and in the TSS ...
*/
set_bitmap(t->ts_io_bitmap, from, num, !turn_on);
- - set_bitmap(tss->io_bitmap, from, num, !turn_on);
+ tss = init_tss + get_cpu();
+ if (tss->bitmap == IO_BITMAP_OFFSET) { /* already active? */
+ set_bitmap(tss->io_bitmap, from, num, !turn_on);
+ } else {
+ memcpy(tss->io_bitmap, t->ts_io_bitmap, IO_BITMAP_BYTES);
+ tss->bitmap = IO_BITMAP_OFFSET; /* Activate it in the TSS */
+ }
put_cpu();
out:
return ret;
/* Fin del código */
Podeis bajar el parche de aqui: Bajar parche
Más información:
theaimsgroup.com - Linux Kernel
Hispasec.com
La función "ioperm" no comprueba sus permisos de acceso adecuadamente, lo que posibilita que un atacante local acceda a puertos de entrada/salida de forma indiscriminada.
Este es el tercer caso en poco tiempo que se descubren bugs de este estilo en el kernel de Linux.
Por suerte, y al contrario que lo que pasa con los sistemas operativos de cierta empresa de Redmond, al ser Open Source el kernel de Linux, el parche ha tardado casi menos en salir que el bug :)
Es el siguiente:
diff -urN linux-2.5.64-bk5/arch/i386/kernel/ioport.c linux/arch/i386/kernel/ioport.c
- --- linux-2.5.64-bk5/arch/i386/kernel/ioport.c 2003-02-24 14:59:03.000000000 -0500
+++ linux/arch/i386/kernel/ioport.c 2003-03-14 10:19:48.000000000 -0500
@@ -84,15 +84,17 @@
t->ts_io_bitmap = bitmap;
}
- - tss = init_tss + get_cpu();
- - if (bitmap)
- - tss->bitmap = IO_BITMAP_OFFSET; /* Activate it in the TSS */
- -
/*
* do it in the per-thread copy and in the TSS ...
*/
set_bitmap(t->ts_io_bitmap, from, num, !turn_on);
- - set_bitmap(tss->io_bitmap, from, num, !turn_on);
+ tss = init_tss + get_cpu();
+ if (tss->bitmap == IO_BITMAP_OFFSET) { /* already active? */
+ set_bitmap(tss->io_bitmap, from, num, !turn_on);
+ } else {
+ memcpy(tss->io_bitmap, t->ts_io_bitmap, IO_BITMAP_BYTES);
+ tss->bitmap = IO_BITMAP_OFFSET; /* Activate it in the TSS */
+ }
put_cpu();
out:
return ret;
/* Fin del código */
Podeis bajar el parche de aqui: Bajar parche
Más información:
theaimsgroup.com - Linux Kernel
Hispasec.com

