Hola Visitante

Autor Tema: Vulnerabilidad en linux En la gran mayoria de Kernels  (Leído 2184 veces)

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Vulnerabilidad en linux En la gran mayoria de Kernels
« en: Agosto 25, 2009, 02:34:53 pm »
Para que veais que no sólo ocurre en Windows de M$

Vulnerabilidad en todas las versiones del núcleo de Linux desde el 2001

Un error en una estructura de datos permite elevación de privilegios por parte de un atacante local.
Sistemas afectados:
Todas las versiones del núcleo de Linux desde mayo de 2001. Concretamente están afectadas:

- Versiones 2.4, desde la 2.4.4 incluyendo la 2.4.37.4
- Versiones 2.6, desde la 2.6.0 incluyendo la 2.6.30.4

Nota: Para obtener la versión del kernel de un sistema Linux introducir el comando:  uname -r

Riesgo:   Alto

Descripción:
Existen varios errores de validación en los valores de la estructura de datos \"proto_ops\". Esto podría ser aprovechado por un atacante local para elevar privilegios a través de llamadas a funciones con una estructura de datos \"proto_ops\" especialmente manipuladas. Esta vulnerabilidad existe desde el año 2001, y afecta a los kernel 2.4 y 2.6 de Linux.

En el núcleo de Linux, cada socket tiene asociado una estructura de datos \"proto_ops\" que está definida en la librería net.h de Linux. Los protocolos usan esta estructura para realizar distintas funciones: bind, connect, accept, shutdown, etc.

Cuando un protocolo no va a implementar una de estas funciones debería asignar la función \"sock_no_*\" adecuada. Por ejemplo en el caso del puntero \"sendpage\" cuando este valor no va a ser usado debería de ser inicializado a la función \"sock_no_sendpage()\" que está definida e implementada en sock.h y sock.c respectivamente. De forma análoga, si la operación \"accept\" no está definida, debería apuntar a la función \"sock_no_accept()\".

La estructura \"proto_ops\" debería ser inicializada por completo por los distintos protocolos implementados en Linux, pero no siempre es así; por ejemplo en \"bnep_sock_ops\" (el tipo \"proto_ops\" de bluetooth) el campo \"connect\" entre otros, sí apunta a \"sock_no_connect\" sin embargo los campos \"getsockopt\", \"compat_setsockopt\", \"sendpage\" y \"splice_read\" no son definidos haciendo referencia a un puntero nulo.

Se hecho público un exploit que aprovecha esta vulnerabilidad.

Solución:
En estos momentos la mayoría de las distribuciones Linux no han publicado la actualización de los paquetes del núcleo que solucionen esta vulnerabilidad. Por el momento, es posible obtener información de como mitigar esta vulnerabilidad en los siguientes enlaces.

Para las versiones 2.4:
Explicación de los cambios ha realizar en http://git.kernel.org/?p=linux/kernel...d0fe535a73b219f960d1af3d0c264555a12e3

Para la versión 2.6:
Explicación por parte de Linus Torvalds de los cambios ha realizar en http://git.kernel.org/linus/e694958388c50148389b0e9b9e9e8945cf0f1b98
Parches para los sistemas Debian en http://www.es.debian.org/security/2009/dsa-1862

En breve aparecerán las diferentes actualizaciones para cada una de las distribuciones Linux.

Referencias:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-2692
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-2692

Más información:
Reporte de la vulnerabilidad por parte de Red Hat https://bugzilla.redhat.com/show_bug.cgi?id=516949#c10
Otros posibles cambios a realizar y sus consecuencias en Alcance Libre http://www.alcancelibre.org/article.php/CVE-2009-2692
Leer noticia en Hispasec http://www.hispasec.com/unaaldia/3949
Leer noticia en The H http://www.h-online.com/security/Crit...all-versions-since-2001--/news/114004
Leer noticia en Neohapsis http://archives.neohapsis.com/archives/fulldisclosure/2009-08/0174.html
Análisis de la vulnerabilidad en Securityfocus http://www.securityfocus.com/bid/36038/info

Fuente:  Hispasec una-al-día http://www.hispasec.com/unaaldia/ y The H http://www.h-online.com/security/