Desde Linux Darkcrizt  

Detectaron una vulnerabilidad en el subsistema de red de Linux 

vulnerabilidad

Si se explotan, estas fallas pueden permitir a los atacantes obtener acceso no autorizado a información confidencial o, en general, causar problemas

Hace pocos días se dio a conocer la noticia de que fue detectada una vulnerabilidad en el subsistema de red del kernel de Linux que permite, sobrescribir el contenido de la memoria del kernel, mediante la manipulación de sockets de red en el espacio del usuario.

Se menciona que la vulnerabilidad (ya catalogada bajo CVE-2023-42752) es clasificada como crítica y podría usarse para permitir a un usuario sin privilegios el acceso para ejecutar su código a nivel del kernel.

Sobre la vulnerabilidad CVE-2023-42752

Como tal, el fallo detectado es causado por un cambio introducido la versión del kernel de Linux 6.2, pero se menciona que este cambio también fue introducido en todas las ramas LTS con soporte, por lo que la vulnerabilidad también aparece en versiones anteriores de ramas estables compatibles del kernel.

Hola,

Recientemente encontré un desbordamiento de enteros en el kernel de Linux, lo que lleva al kernel asignando `skb_shared_info` en el espacio de usuario, que es explotable en sistemas sin protección SMAP desde `skb_shared_info` contiene referencias a punteros de función.

Verifiqué la existencia de la vulnerabilidad tanto en la rama principal y v6.1.y, es posible que más versiones se vean afectadas (potencialmente todas las versiones estables)

Por la parte de las causas del problema, se menciona se debe aún desbordamiento de enteros en la función «alloc_skb» del kernel de Linux, la cuaes utilizada para proporcionar la asignación de memoria para la estructura sk_buff (búfer de socket), que se utiliza para almacenar paquetes de red.

La vulnerabilidad puede ser explotada debido a que se produce un problema que genera un desbordamiento debido a la falta de validación adecuada de los parámetros recibidos del usuario utilizados para calcular el tamaño del búfer. Un ataque por parte de un usuario sin privilegios requiere acceso para crear espacios de nombres de usuario, que se pueden proporcionar, por ejemplo, en contenedores aislados.

código

Screenshot del código

Se menciona que: la función`kmalloc_reserve` redondea el tamaño en `PAGE_SIZE << get_order(size);` en `kmalloc_size_roundup`. Dado que «size» está «unsigned int`, la lógica de redondeo lo hará 0 si el valor original es más grande, por ejemplo algo como 0xffffded0. Como resultado,  «data» en realidad se convertirá en `ZERO_SIZE_PTR`, que es 0x10 en lugar de 0. Desde la verificación no considera el caso, por lo que el kernel continuará con su proceso de «data» como si fueran un puntero del kernel válido.

Más tarde, cuando el kernel intenta finalizar el objeto skb en `__finalize_skb_around`, tiene el código: `shinfo = skb_shinfo(skb);`, que es `skb->head+skb->end` donde `skb->head` es 0x10 y `skb->end`
es un tamaño grande como 0xffffmed0. Como resultado, `shinfo` apunta a un puntero de espacio de usuario.

Cabe mencionar que la vulnerabilidad CVE-2023-42752 es local y no se puede explotar de forma remota a través de la red, ya que como mencionamos arriba, un atacante requiere acceso para crear espacios de nombres de usuario.

En 2010, no me di cuenta de que los usuarios malintencionados podían configurar dev->mtu en valores arbitrarios. Desde entonces, este mtu se ha limitado a 0x7fffffff, pero independientemente de cuán grande sea dev->mtu, no tiene sentido que igmpv3_newpack() asigne más de IP_MAX_MTU y corra el riesgo de que se desborden varios campos skb

Como solución temporal se recomienda que se habilite el mecanismo de protección SMAP (Prevención de acceso en modo supervisor) en el kernel, lo cual bloquea el problema.

En cuanto a la solución del problema como tal, este ya ha sido parcheado y distribuido en las correcciones que bloquean la vulnerabilidad en las diferentes versiones con soporte de kernel, se menciona que los cambios fueron aceptados en las ramas estables del kernel el 5 de septiembre.

Finalmente, para los interesados en realizar un seguimiento de la corrección de la vulnerabilidad, pueden hacerlo en las páginas de las diferentes distribuciones: DebianUbuntuGentooRHEL,Fedora y  SUSE/openSUSE.Puedes consultar los detalles de la vulnerabilidad en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.