Como amante de Linux, siempre he estado con él en las buenas y en las malas. Hace 1 semana se encontró y publicó un exploit para escalar nuestros privilegios a root en cualquier Kernel {2.6.x | x N y 16 < x < 24}. Lo interesante de este exploit es que ha estado dentro del kernel por un largo tiempo y hasta ahora fue descubierto (o publicado).

Pero lo más asombroso de estos casos es la velocidad con la que responde la comunidad para resolver estos problemas. Tres días después de que se publicó el exploit salió el parche.

Para ver códigos y otros datos interesantes sigue esta liga.

El código del exploit puede ser encontrado aquí y aquí.

Y este es el parche:

 fs/splice.c |    3 +++
 1 file changed, 3 insertions(+)
Index: linux-2.6/fs/splice.c
===================================================================
--- linux-2.6.orig/fs/splice.c
+++ linux-2.6/fs/splice.c
@@ -1237,6 +1237,9 @@ static int get_iovec_page_array(const st
 		if (unlikely(!base))
 			break;

+		if (unlikely(!access_ok(VERIFY_READ, base, len)))
+			break;
+
 		/*
 		 * Get this base offset and number of pages, then map
 		 * in the user pages.

El parche es solamente una línea realmente.

Hace poco pude leer un libro dedicado a los exploits que aseguraba que en promedio un programa tenía entre5 y 50 “bugs” explotables por cada KLOC (mil lineas de código). Si consideramos la cantidad de lineas de código de los sistemas operativos de hoy en día, tenemos una placa de petri de bugs!

Según el libro “Exploiting Software, How to Break Code”, estas son la líneas de código de algunos programas y sistemas utilizados :

  • Solaris 7: 400,000
  • Netscape: 17 millones
  • Estación Espacial: 40 millones
  • Transbordador Espacial: 10 millones
  • Boeing 777: 7 millones
  • Linux kernel 2.4.x: 1.5 millones
  • Windows 98: <5 millones
  • Windows XP 40 millones

Con estas cifras se imaginarán la cantidad de “bugs” que aún andan sueltos sin ser descubiertos. Ponte a buscar, tal vez tu seas el siguiente en encontrar uno.