Se han descubierto varias vulnerabilidades locales y remotas en el núcleo Linux, que podían provocar una denegación de servicio o la ejecución de código arbitrario. El proyecto Common Vulnerabilities and Exposures identifica los siguientes problemas:
Existían varios desbordamientos de buffer en el controlador io_edgeport, que se podían utilizar para un vector de ataques de denegación de servicio.
Bryan Fulton informó de que había un error en la comprobación de los límites en la función coda_pioctl, que podía permitir a los usuarios locales ejecutar código arbitrario o producir un ataque de denegación de servicio.
Se ha descubierto un error en la función skb_checksum_help() del entorno netfilter que permitía que se eludiesen las reglas de filtrado de los paquetes o que se provocase un ataque de denegación de servicio.
Tim Yamin descubrió que la validación de la entrada no era suficiente en el controlador zisofs para sistemas de archivos ISO comprimidos, y se permitía un ataque de denegación de servicio mediante imágenes ISO perniciosas.
Un desbordamiento de buffer en la función sendmsg() permitía que los usuarios locales ejecutasen código arbitrario.
Herbert Xu descubrió que la función setsockopt() no estaba restringida a los usuarios o procesos con la capacidad CAP_NET_ADMIN. Esto permitía que los atacantes manipulasen las políticas IPSEC o que iniciasen un ataque de denegación de servicio.
Al Viro descubrió una condición de fuga en la gestión de los dispositivos de red en /proc. Un atacante (local) podía sacar provecho de la referencia dura después de apagar la interfaz para provocar una denegación de servicio o, posiblemente, ejecutar código en modo núcleo.
Jan Blunck descubrió que las repetidas lecturas fallidas de /proc/scsi/sg/devices producían una debilidad en la memoria que permitía un ataque de denegación de servicio.
Tetsuo Handa descubrió que la función udp_v6_get_port() del código de IPv6 se podía forzar a entrar en un bucle infinito, lo que podía permitir un ataque de denegación de servicio.
Vasiliy Averin descubrió que los contadores de referencias de sockfd_put() y fput() se podían forzar para provocar un solapamiento que podía permitir un ataque de denegación de servicio mediante una redirección a un puntero nulo.
Eric Dumazet descubrió que la llamada al sistema set_mempolicy() aceptaba un valor negativo para el primer argumento, que producía una aserción BUG(). Esto permitía un ataque de denegación de servicio.
Harald Welte descubrió que si un proceso emitía un bloque de solicitud de USB (URB) a un dispositivo y terminaba antes de completar el URB, se podía perder la referencia a un puntero duro. Este hecho se podía utilizar para producir un ataque de denegación de servicio.
Pavel Roskin descubrió que el controlador para las tarjetas inalámbricas Orinoco limpiaba los buffers de forma insuficiente. Esto podía dejar desprotegida información sensible en el espacio del usuario.
Robert Derr descubrió que el subsitema audit usaba una función incorrecta para liberar memoria, lo que podía permitir un ataque de denegación de servicio.
Rudolf Polzer descubrió que el núcleo no restringía adecuadamente el acceso al ioctl KDSKBSENT, lo que posiblemente pudiera conducir a una escalada de privilegios.
Doug Chapman descubrió que se podía engañar a mq_open para decrementar dos veces su contador interno, lo que podía permitir un ataque de denegación de servicio mediante un kernel panic.
Doug Chapman descubrió que pasando una máscara de bits de cero a la llamada al sistema set_mempolicy() se podía producir un kernel panic, que a su vez permitía un ataque de denegación de servicio.
El código de ptrace que utiliza CLONE_THREAD no utilizaba el id. del grupo thread para determinar si el llamante se estaba adhiriendo a sí mismo, lo que podía permitir un ataque de denegación de servicio.
La funcionalidad automática de recolección automática de procesos hijo incluida en los procesos adheridos con ptrace podía permitir ataques de denegación de servicio mediante referencias perdidas.
Yen Zheng descubrió que el código de la etiqueta de flujo IPv6 modificaba una variable incorrecta que podía conducir a una corrupción de memoria y a una denegación de servicio.
Se descubrió que un proceso con hilos a tiempo real que estuviese volcando el núcleo podía verse obligado a una situación de interbloqueo enviando una señal SIGKILL, lo que podía permitir un ataque de denegación de servicio.
Ollie Wild descubrió una debilidad en la memoria de la función icmp_push_reply() que podía permitir la denegación de servicios mediante consumo de memoria.
Chris Wright descubrió que la ubicación excesiva de comparticiones rotas de bloqueos de archivos en la capa VFS podía agotar la memoria y rellenar el registro del sistema, lo que podía permitir la denegación de servicio.
Patrick McHardy descubrió una debilidad de memoria en la función ip6_input_finish() del código IPV6, que también permitía la denegación de servicio.
Karl Janmar descubrió un error de signo aritmético en el código de procfs, del que se podía sacar provecho para leer memoria del núcleo, que podía revelar información sensible.
Yi Ying descubrió que sysctl no aseguraba de forma adecuada el tamaño de un buffer, lo que permitía un ataque de denegación de servicio.
Stefan Rompf descubrió que dm_crypt no limpiaba una estructura interna antes de liberarla, lo que podía revelar información sensible.
Se descubrió que los controles de capacidad del controlador SDLA estaban bastante relajados para las actualizaciones de firmware.
Ludovic Courtes descubrió que get_compat_timespec() no realizaba un saneamiento de la entrada suficiente, lo que permitía un ataque local de denegación de servicio.
Se descubrió que, en la arquitectura ia64, ptrace() permitía un ataque local de denegación de servicio, cuando estaba activado preemption.
La matriz siguiente explica en qué versiones del núcleo y para qué arquitecturas se han corregido los problemas que se mencionaron anteriormente:
| Debian 3.1 (sarge) | |
|---|---|
| Fuente | 2.6.8-16sarge2 |
| Arquitectura Alpha | 2.6.8-16sarge2 |
| Arquitectura AMD64 | 2.6.8-16sarge2 |
| Arquitectura HP Precision | 2.6.8-6sarge2 |
| Arquitectura Intel IA-32 | 2.6.8-16sarge2 |
| Arquitectura Intel IA-64 | 2.6.8-14sarge2 |
| Arquitectura Motorola 680x0 | 2.6.8-4sarge2 |
| Arquitectura PowerPC | 2.6.8-12sarge2 |
| Arquitectura IBM S/360 | 2.6.8-5sarge2 |
| Arquitectura Sun Sparc | 2.6.8-15sarge2 |
La matriz siguiente muestra paquetes adicionales que se deben recompilar por motivos de compatibilidad o para utilizar las ventanas de esta actualización:
| Debian 3.1 (sarge) | |
|---|---|
| kernel-latest-2.6-alpha | 101sarge1 |
| kernel-latest-2.6-amd64 | 103sarge1 |
| kernel-latest-2.6-hppa | 2.6.8-1sarge1 |
| kernel-latest-2.6-sparc | 101sarge1 |
| kernel-latest-2.6-i386 | 101sarge1 |
| kernel-latest-powerpc | 102sarge1 |
| fai-kernels | 1.9.1sarge1 |
| hostap-modules-i386 | 0.3.7-1sarge1 |
| mol-modules-2.6.8 | 0.9.70+2.6.8+12sarge1 |
| ndiswrapper-modules-i386 | 1.1-2sarge1 |
Le recomendamos que actualice inmediatamente el paquete del núcleo y que reinicie la máquina. Si ha compilado un núcleo personalizado con el paquete kernel-source, tiene que recompilar para utilizar las ventajas que aportan estas correcciones.
Esta actualización introduce un cambio en la interfaz binaria del núcleo. Los paquetes del núcleo que se ven afectados en Debian se han recompilado. Si ha realizado alguna modificación local, también tiene que recompilar esos paquetes. Debido al cambio en el nombre del paquete, tiene que utilizar apt-get dist-upgrade para actualizar su sistema.
Las sumas MD5 de los ficheros que se listan están disponibles en el aviso original.