Archivo

Mostrando entradas con la etiqueta GNU/Linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta GNU/Linux. Mostrar todas las entradas

miércoles, 22 de junio de 2011

Vulnerabilidad en el Kernel 2.6.x


     En el mundo Linux, los drivers no están limitados a leer y escribir dispositivos, existe una librería llamada ioctl que se encuentra en el kernel y es el encargado en interactuar con los drivers de los dispositivos, esto nos permitirá, por ejemplo, abrir o cerrar una bandeja de la lectora de cd, disminuir la velocidad de rotación de un disco rígido, conocer si tu tarjeta de red tiene link, etc.

     Esta libreria contiene dos funciones, agp_generic_insert_memory() y agp_generic_remove_memory(), que no se encuentran debidamente saneadas, es decir un usuario mal intencionado (llámese atacante :) podría suministrar datos especialmente manipulados para causar una condición de denegación de servicio o realizar una escala de privilegios.

     Veamos parte del codigo fuente de una de estas funciones:
1046 int agp_generic_insert_memory(struct agp_memory * mem, off_t pg_start, int type)
1047 {
1048         int num_entries;
1049         size_t i;
1050         off_t j;
1051         void *temp;
1052         struct agp_bridge_data *bridge;
1053         int mask_type;
....
....
1099         if ((pg_start + mem->page_count) > num_entries)
1100                 return -EINVAL;
1101
1102         j = pg_start;
....
....
     En la linea 1099, si bien controla que pg_start + mem->page_count no sobrepase el valor de num_entries; no está controlando que pg_start + mem->page_count sea menor que pg_start (esta variable esta siendo pasada por parametro), la misma condicion aparece en la función agp_generic_remove_memory. Mmmm.. y es grave esto??? pues SI, de todas formas esta vulnerabilidad ya fue arreglada, así que solo resta que actualices tu kernel :)

Para más información ...

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/char/agp/generic.c;h=850a643ad694ff5022d3e51e0b061ad1eca9ef61
http://en.wikipedia.org/wiki/Ioctl
http://securitytracker.com/id/1025439

miércoles, 29 de diciembre de 2010

Placa de TV ENLTV en Linux


     Hoy hablando con mi amigo Cucamantis, me paso este lindo articulo para hacer funcionar una placa ENLTV en Linux, la verdad q este tipo es uno de los fans de GNU/Linux mas devotos q conozco, cuenta la leyenda q si le das una cafetera el hace q su Ubuntu la reconozca :O

     Aquí les hago llegar un mini-tutorial de como configurar los módulos linux para una placa de TV Encore ENLTV. En primera instancia vamos a hacer mención del proyecto MERCURIAL que esta sosteniendo el desarrollo de los módulos que vamos a hacer uso en este tutorial, un saludo a ellos que hicieron posible que pueda ver TV con linux.

1) Bueno como les decía primero vamos a modificar una linea del archivo "alsa-base" que se encuentra en el directorio "/etc/modprobe.d", la linea que debemos comentar es la siguiente:

#install saa7134 /bin/modprobe --ignore-install 

2) Reiniciamos la computadora. Al iniciar la computadora ejecutamos la siguiente linea:

$sudo modprobe -r saa7134 tuner bttv saa7134_alsa # Elimina todo driver que haya estado anteriormente.

3) Procederemos a instalar los módulos del proyecto mercurial.
Te bajas el paquete con los modulos de la siguiente dirección:
http://linuxtv.org/hg/
Elegís el que dice "v4l-dvb" y esta en .tar.gz o en .bz2. Lo descomprimís y ejecutas dentro del directorio descomprimido los siguientes comandos:

$cd v4l-dvb
$make
$sudo make install
$make clean # Limpia la compilacion
$make distclean # Limpia la configuracion
$make reload # Recarga los modulos nuevos

Reinicia la computadora...

Cargamos el "saa7134" con los parametros de nuestra placa, en mi caso seria:

$sudo modprobe saa7134 card=106 tuner=-1 # El valor del parámetro CARD lo sacamos de "dmesg".

Por ultimo instalamos el programa para poder ver la tele "tvtime" o "kdetv". Y que lo disfrutes.

Y bueno, eso es toda mi experiencia en placas de TV, SALUDOS espero que puedan ver TV en LINUX con esta pequeña ayuda que les hago llegar.

NOTA: La calidad con la que se pueden ver la television con linux al instalar estos modulos es mucho mejor que con el driver del fabricante :p.

jueves, 16 de diciembre de 2010

Mi placa Atheros en Ubuntu Gutsy Gibbon


     Aquí les dejo un mini tutorial q hizo un amigo (Cucamantis), q estuvo renegando con su placa Atheros hasta q al fin pudo hacerla funcionar ;)

Primero vamos a obtener los driver desde su sitio CVS, es decir, para ejecutar el siguiente comando deberemos tener instalado el paquete cervisia, luego ejecutamos lo siguiente bajo una consola:

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/madwifi co madwifi

Luego de que se baje toda la carpeta de drivers madwifi en tu directorio personal, ejecuta la siguientes lineas bajo consola:

cucario $ cd madwifi-0.9.3.3 #En mi caso la versión 0.9.3.3
cucario $ export KERNELPATH=/usr/src/"versión de tu kernel"# Aquí ingresa la ruta a tu kernel
cucario $ make
cucario $ sudo make install

Listo el modulo de MADWIFI ya esta instalado, ahora nos falta cargar los módulos

cucario $ sudo modprobe ath_pci # Si no lo podes cargar de esta manera mira el Readme del modulo

Luego para configurar tu interfaz, nada mas fácil que kNetworkManager

Saludos, espero que les sirva.

jueves, 18 de noviembre de 2010

Linux mas rapido y sin tocar el Kernel


     Hace unos días Mike Galbraith, escribió un parche para el kernel de linux, de aproximadamente 200 lineas que hacian q el escritorio corra mas rápido (hasta daba la sensación de que las paginas web se carguen mas rapido). Esta vez Lennart Poettering publica la forma de lograr el mismo efecto, pero sin escribir una linea de codigo, solo agrega estas 4 lineas en el ~/.bashrc

   if [ "$PS1" ] ; then 
           mkdir -m 0700 /sys/fs/cgroup/cpu/user/$$
           echo $$ > /sys/fs/cgroup/cpu/user/$$/tasks
   fi

y se debe ejecutar los siguientes comandos en una terminal:

mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu
mkdir -m 0777 /sys/fs/cgroup/cpu/user


Los usuario de Ubuntu, la cosa se "complica" un poquito mas y se agregan un par comandos mas

Para mas información ...

http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html