Vulnerabilidad en e2fsck al procesar directorios especialmente diseñados

En la utilidad e2fsck suministrada como parte del paquete e2fsprogs, identificado vulnerabilidad (CVE-2019-5188), que le permite ejecutar el código de un atacante al verificar un sistema de archivos que contiene directorios especialmente diseñados. La vulnerabilidad se confirmó en las versiones 1.43.3 a 1.45.4. Vulnerabilidad solucionada en la actualización e2fsck 1.45.5. En los kits de distribución el problema sigue sin corregirse (Debian, Arch Linux, SUSE/openSUSE, Ubuntu, RHEL).

La vulnerabilidad es causada por un error en la función mutate_name() en el archivo rehash.c, que se utiliza al reconstruir las tablas hash asociadas con un directorio, asegurando que todos los archivos en el directorio coincidan con el directorio. La corrupción de la estructura hash_entry asociada con un directorio podría provocar que un atacante escriba datos en un área fuera del búfer asignado. Si se identifican varios archivos con el mismo nombre en la tabla hash como vinculados a un directorio, la utilidad e2fsck cambia el nombre de los archivos duplicados agregando ~0, ~1, etc. al nombre. Para almacenar temporalmente el nuevo nombre durante dicho cambio de nombre, se asigna un búfer de 256 bytes en la pila.

El tamaño de los datos que se copiarán está determinado por la expresión "entrada->nombre_len & 0xff", pero el valor de entrada->nombre_len se carga desde una estructura en el disco en lugar de calcularse a partir del tamaño real del nombre. Si el tamaño es cero, entonces el índice de la matriz toma el valor -1 y se crean condiciones para el desbordamiento de enteros a través del límite inferior del búfer (desbordamiento de enteros insuficiente) y sobrescribir otros datos en la pila con el valor "~0". Para sistemas de 64 bits, la explotación de la vulnerabilidad se considera poco probable y no requiere restricciones en el tamaño de la pila (ulimit -s unlimited). Para sistemas de 32 bits, la explotación se considera posible, pero el resultado depende en gran medida de cómo el compilador compiló el ejecutable.

Para llevar a cabo un ataque, un atacante necesita corromper los datos de cierta manera en la partición con el sistema de archivos ext2, ext3 o ext4. Dado que esta operación requiere privilegios de superusuario, la vulnerabilidad representa una amenaza cuando la utilidad e2fsck escanea unidades externas o imágenes FS recibidas externamente.

Fuente: opennet.ru

Añadir un comentario