Una vulnerabilidad en XFS que permite leer datos en bruto del dispositivo de bloque

Se ha descubierto una vulnerabilidad en el código del sistema de archivos XFS (CVE-2021-4155), que permite a un usuario local no privilegiado leer datos de bloques no utilizados directamente desde un dispositivo de bloques. Todas las versiones significativas del núcleo de Linux superiores a 5.16 que contienen el controlador XFS son vulnerables a este problema. La solución se incluyó en la versión 5.16, así como en las actualizaciones de los núcleos 5.15.14, 5.10.91, 5.4.171, 4.19.225, etc. El estado de la formación de actualizaciones para resolver el problema en las distribuciones se puede rastrear en estas páginas: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

La vulnerabilidad es causada por un comportamiento incorrecto de dos ioctl específicos de XFS (XFS_IOC_ALLOCSP) e ioctl (XFS_IOC_FREESP), que son funcionalmente análogos a la llamada del sistema fallocate() del núcleo. Al aumentar el tamaño de un archivo que no está alineado con el tamaño de bloque, los ioctl XFS_IOC_ALLOCSP/XFS_IOC_FREESP no establecen a cero los bytes restantes hasta el siguiente límite de bloque. Así, en XFS con un tamaño de bloque estándar de 4096 bytes, un atacante puede leer hasta 4095 bytes de datos previamente escritos desde cada bloque. En estas áreas puede haber datos de archivos eliminados, archivos desfragmentados y archivos con bloques deduplicados.

Puedes comprobar si tu sistema tiene el problema utilizando un simple prototipo de exploit. Si después de ejecutar la secuencia de comandos propuesta puedes leer el texto de Shakespeare, entonces el controlador del sistema de archivos es vulnerable. El montaje inicial de la partición XFS para la demostración requiere privilegios de superusuario.

Dado que ioctl(XFS_IOC_ALLOCSP) y ioctl(XFS_IOC_FREESP) son prácticamente funcionalmente idénticos al fallocate() estándar, y su única diferencia es la fuga de datos, su existencia se asemeja a una puerta trasera. A pesar de la política general de no modificar las interfaces existentes en el núcleo, se ha tomado la decisión, a sugerencia de Linus, de eliminar completamente estos ioctl en la siguiente versión.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster