Un parche de Microsoft contra Meltdown volvió más inseguras las instalaciones de Windows 7
Meltdown y Spectre se están mostrando como dos problemas difíciles de afrontar, posiblemente porque se trata de corregir o mitigar fallos de seguridad derivados del diseño de los propios procesadores. La propia Intel tuvo problemas con una de las primeras actualizaciones de su firmware publicada en enero, y Linux 4.16, que fue publicado hace poco, continúa añadiendo mitigaciones. Hace poco fue Microsoft la que, mediante un parche contra Meltdown, volvió más inseguros los PC que funcionan con Windows 7.
Según el investigador en seguridad sueco Ulf Frisk, el gigante de Redmond ha introducido sin querer un fallo en un parche contra Meltdown que permitía a aplicaciones sin privilegios leer contenidos e incluso escribir datos en la memoria del kernel del sistema operativo. Lo peor es que, además de leer, el fallo permitía hacer dicho proceso a velocidades de gigabytes por segundo. Para explotar el fallo no se requiería de ninguna API sofisticada, sino solo una lectura y escritura estándar.
El origen del problema está en el bit de permiso del supervisor (el kernel) que era establecido al usuario en la entrada autorreferenciada de PML4, la jerarquía de tabla de paginación en memoria de 4 niveles que utiliza la Unidad de Gestión de Memoria (MMU) de la CPU para traducir las direcciones virtuales de un proceso a direcciones físicas en la memoria RAM. Esto hizo que las tablas de paginación estuvieran disponibles para el código en modo usuario en cada proceso, cuando normalmente solo tendrían que ser accesibles desde el propio kernel.
Windows tiene una entrada especial en la parte superior de la tabla de paginación PML4 que se referencia a sí misma. En Windows 7, la autorreferencia está en la posición 0x1ED y el offset 0xF68. Esto hace que PML4 siempre esté mapeado en la dirección 0xFFFFF6FB7DBED000 en la memoria virtual, que solo tendría que ser accesible por el kernel. Que el bit de permiso sea incorrectamente asignado al usuario provoca que PML4 sea mapeado en todos los procesos y lo expone a la ejecución de código en modo usuario. En Windows 10 la dirección de memoria utilizada para realizar esto está aleatorizada.
Conseguido el acceso tanto para lectura como escritura en las tablas de paginación, resulta relativamente sencillo obtener acceso arbitrario a toda la memoria física, al menos que se disponga de la protección adicional proporcionada por las Tablas de Paginación Extendidas, que son utilizadas en la virtualización.
Además de Windows 7, Windows Server 2008 R2 también se he visto afectado por este parche contra Meltdown defectuoso, aunque Microsoft ya ha publicado correcciones de emergencia para reparar el fallo.
Via: www.muyseguridad.net