Linux Adictos David Naranjo  

Se encontró un fallo en AF_PACKET del kernel y se eliminó el desplazamiento de texto en consola

 

Hace poco se dio a conocer otro problema en el subsistema AF_PACKET del kernel de Linux, que permite a un usuario local sin privilegios ejecutar código como root o salir de contenedores aislados si tienen acceso de root.

La información dada a conocer menciona que se requiere autoridad CAP_NET_RAW para crear el socket AF_PACKET y explotar la vulnerabilidad.

Sin embargo, se señala que un usuario sin privilegios puede obtener el permiso especificado en contenedores creados en sistemas con espacios de nombres de usuario habilitados.

Por ejemplo, los espacios de nombres de usuario se incluyen de forma predeterminada en Ubuntu y Fedora, pero no se activan en Debian y RHEL. Mientras que en Android, el proceso mediaserver tiene derecho a crear sockets AF_PACKET, a través de los cuales se puede aprovechar la vulnerabilidad.

Sobre la vulnerabilidad en AF_PACKET

La vulnerabilidad está presente en la función tpacket_rcv y es causada por un error en el cálculo de la variable netoff.

Un atacante puede crear condiciones bajo las cuales se escribirá un valor menor que maclen en la variable netoff, lo que provocará un desbordamiento al calcular “macoff=netoff-maclen” y luego con ello podra configurar incorrectamente el puntero al búfer para los datos entrantes.

Como resultado, un atacante puede iniciar la escritura de 1 a 10 bytes en un área fuera del búfer asignado. 

El error de cálculo ha estado presente en el kernel desde julio de 2008, es decir, en todos los núcleos actuales, sin embargo, la capacidad ahora conocida de usarlo para escribir en un área fuera del búfer asignado (vulnerabilidad) se introdujo presumiblemente en febrero de 2016 (desde versiones del kernel 4.6-rc1 y posteriores), con el desarrollo del soporte virtio_net.

En cuanto a la solución del problema todavía está disponible como parche. Además de que por la parte contraria se observa que se está desarrollando un exploit que permite obtener derechos de root en el sistema.

Para los que están interesados en saber si ya se encuentra disponible la corrección para su distribución, pueden rastrear la aparición de las actualizaciones de paquetes en las diferentes distribuciones en las siguientes páginas: Ubuntu, Fedora, SUSE, Debian, RHEL, Arch.

La compatibilidad con el desplazamiento de texto de la consola de texto fue eliminada

Por otra parte hablando del Kernel de Linux, también se dio a conocer que se eliminó el código de desplazamiento de texto de la implementación de la consola de texto en el kernel de Linux (CONFIG_VGACON_SOFT_SCROLLBACK).

El código se eliminó debido a la presencia de errores, que no hubo nadie para corregir debido a la falta de un encargado que supervisara el desarrollo de vgacon.

Y es que hace unos meses se identificó y solucionó una vulnerabilidad en vgacon (CVE-2020-14331) que podría provocar un desbordamiento del búfer debido a la falta de comprobaciones adecuadas de la disponibilidad de memoria en el búfer de desplazamiento. La vulnerabilidad atrajo la atención de los desarrolladores que organizaron pruebas fuzzing del código vgacon en syzbot.

Además de que en verificaciones adicionales se revelaron varios problemas más similares en el código vgacon, así como problemas en la implementación del software del desplazamiento en el controlador fbcon.

Desafortunadamente, el código problemático se ha dejado desatendido durante mucho tiempo, presumiblemente debido al hecho de que los desarrolladores cambiaron al uso de consolas gráficas y las consolas de texto dejaron de usarse (la gente continúa usando las consolas vgacon y fbcon, pero no han sido la interfaz principal del kernel durante décadas y se extendió tanto las funciones como el desplazamiento integrado en el controlador (Mayús + RePág / RePág) probablemente tienen poca demanda).

En este sentido, Linus Torvalds decidió no intentar mantener el código no reclamado, sino simplemente eliminarlo.

Finalmente, se menciona que si hay usuarios que necesitan esta funcionalidad, el código para soportar el desplazamiento en la consola será devuelto al kernel tan pronto como haya un mantenedor listo o que quiera hacerse cargo para tomar su mantenimiento en sus propias manos, es decir sea el único en querer destinar tiempo a ello.

Leave A Comment

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