PDA

Ver la versión completa : Obtención de privilegios especiales en Linux (27/05/2003)



{^JaB3^}
28-05-2003, 11:59
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.

Gracias a que Linux es "Open Source", es posible proporcionar un
parche simple que soluciona este problema:

>>>>>

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;

<<<<<

El ataque es válido para los kernel 2.4.* y para los kernel 2.5.69
e inferiores.

Es de destacar que en las últimas seis semanas se han encontrado
tres problemas de seguridad importantes en las versiones actuales
de los kernel Linux (2.4.*). Siguiendo la historia Linux desde sus
inicios, lo habitual hubiera sido que, a estas alturas, se hubiera
publicado ya la versión 2.4.21, solucionando estos problemas. Aún
si la versión de 2.4.21 actual de desarrollo no estuviese lista,
lo natural parecería publicar una versión 2.4.21 "interim" con estos
problemas de seguridad solucionados, y renombrar la versión 2.4.21
en desarrollo a 2.4.22.

Coincidiendo con el cambio de "director de proyecto" del kernel 2.4.*
a Marcelo Tosatti, los ciclos de publicación de nuevos kernel se han
alargado considerablemente. Esperemos que se trate de una situación
transitoria y que se regrese a los ciclos de dos o tres meses, sobre
todo ante problemas de vulnerabilidades como los vividos en las últimas
semanas.


Más Información:

[Bug 703] New: Security vulnerability in "ioperm" system call
http://marc.theaimsgroup.com/?l=linux-kernel&m=105271679705571&w=2

23/03/2003 - Fallo de seguridad (local) en los núcleos de Linux
anteriores a 2.2.25 y 2.4.21
http://www.hispasec.com/unaaldia/1610