[LUG.ro] Obtención de privilegios especiales en Lin ux

HaZcO MegadetH lugro@lugro.org.ar
Fri, 30 May 2003 00:37:32 -0300


  Obtención de privilegios especiales en Linux
  ------------------------------------------------------------

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.

_________________________________________________________________
Charla con tus amigos en línea mediante MSN Messenger: 
http://messenger.yupimsn.com/