Spectre no permanecerá muerto
Poco después de que se encontrara encontrado en un repositorio públicodos nuevas vulnerabilidades (CVE-2020-27170 y CVE-2020-27171) se han encontrado en el código del Kernel de Linux que protege contra ella.
Ambas vulnerabilidades permiten a un usuario local leer la memoria del kernel, que podría contener información sensible como claves de cifrado. El código de prueba de concepto también se ha puesto a disposición de forma privada, pero es de suponer que acabará llegando a puntos de venta públicos.
El fallo de código está presente en todas las versiones del kernel hasta la 5.12-rc3, la versión candidata más reciente. Todas las distribuciones son vulnerables.
Se están preparando parches KernelCare para todas las distribuciones compatibles, que deberían empezar a estar disponibles la próxima semana.
La primera vulnerabilidad, CVE-2020-27170afecta a la forma en que funciona la mitigación del kernel contra las cargas especulativas fuera de límites. Un código sin privilegios que extendía una funcionalidad específica del BPF (Berkeley Packet Filtering) del kernel tenía acceso a punteros y podía realizar operaciones aritméticas de punteros fuera de límites, lo que a su vez podía convertirse en un vector de ataque para la exfiltración de contenido de la memoria del kernel. Las operaciones con punteros podían utilizarse porque algunos de los punteros que expone el BPF no se limitaban correctamente.
La segunda vulnerabilidad, CVE-2020-27171utiliza el mismo tipo de extensión de programa BPF en sistemas de 64 bits, donde de nuevo una operación de puntero sufre de un fallo off-by-one. Debido a la naturaleza de los dispositivos informáticos, el primer número es 0, en lugar del más natural 1, y un error de programación común es no tener esto en cuenta al realizar operaciones matemáticas. Este fallo permitiría modificar un puntero de tal manera que dejaría al descubierto un bloque de 4 GB de memoria del núcleo. Si se sincroniza correctamente, esto podría permitir a un usuario sin privilegios acceder a ubicaciones de memoria protegidas.
Los informes detallados sobre vulnerabilidades mencionan la existencia de una prueba de concepto divulgada de forma privada para cada vulnerabilidad, pero un atacante suficientemente motivado podría reunir suficiente información sobre el problema a partir del informe para desarrollar su propio código de ataque.