Después de tres años desde la ola de vulnerabilidades (, , , , ) en el subsistema AF_PACKET del núcleo de Linux hay otro problema (), que permite a un usuario local no privilegiado ejecutar código con derechos de root o salir de contenedores aislados, siempre que tenga acceso root en ellos.
Para crear un socket AF_PACKET y explotar la vulnerabilidad se requieren permisos CAP_NET_RAW. Sin embargo, este permiso puede ser adquirido por un usuario no privilegiado en contenedores que se crean en sistemas con soporte habilitado para espacios de nombres de usuario. Por ejemplo, los espacios de nombres de usuario están habilitados por defecto en Ubuntu y Fedora, pero no están activados en Debian y RHEL. En Android, el proceso mediaserver tiene el derecho de crear sockets AF_PACKET, a través del cual puede ser explotada la vulnerabilidad.
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 el valor de la variable netoff será menor que la variable maclen, lo que provocará un desbordamiento al calcular "macoff = netoff - maclen" y una posterior instalación incorrecta del puntero al búfer para los datos entrantes. Como resultado, un atacante puede iniciar una escritura de entre 1 y 10 bytes fuera del área del búfer asignado. Se informa que se está desarrollando un exploit que permite obtener derechos de root en el sistema.
El problema está presente en el núcleo desde julio de 2008, es decir, se manifiesta en todos los núcleos actuales. La corrección está disponible por ahora en forma de . Se pueden rastrear las actualizaciones de paquetes en las distribuciones en las siguientes páginas: , , , , , .
Fuente: opennet.ru
