¿Es la Raspberry Pi vulnerable al exploit Spectre o Meltdown?

58

Hay dos nuevos defectos de seguridad graves descubiertos, Spectre y Meltdown .

¿La Raspberry Pi es vulnerable a Spectre y / o Meltdown?

Janghou
fuente
1
Según los investigadores: por el momento, no está claro si los procesadores ARM y AMD también se ven afectados por Meltdown.
Janghou
1
Hay un ejemplo de que puede robar una contraseña con Javascript en un navegador (Chrome / Firefox).
Janghou
44
@ alex2003super: No te asustes. Aunque la escala de los dispositivos afectados es asombrosa, las probabilidades de que usted se vea realmente afectado por este problema de alguna manera real son bastante bajas. E incluso si no lo fueran, enloquecer no ayudaría. :)
Lightness compite con Monica el
1
Parece que no son vulnerables, aquí hay un artículo reciente sobre el tema raspberrypi.org/blog/…
Omar Elabd
55
Esta publicación le puede interesar: raspberrypi.org/blog/…
pfm

Respuestas:

61

Según la propia ARM , los núcleos de procesador utilizados en todos los modelos anteriores a Pi 4 no son vulnerables .

La mayoría de los procesadores Arm no se ven afectados por ninguna variación de este mecanismo de especulación de canal lateral. A continuación se puede encontrar una lista definitiva del pequeño subconjunto de procesadores diseñados por Arm que son susceptibles. [ver enlace para la tabla]

Los núcleos de procesador utilizados por los antiguos Pis son:

Ninguno de los núcleos anteriores se enumera como vulnerable a ninguna versión del ataque (de hecho, no se enumeran en absoluto, porque no hay vulnerabilidad conocida a estos ataques).

El Raspberry Pi 4 usa el Cortex-A72 , que se enumera como vulnerable a las variantes 1, 2, 3a y 4. Como se indica en ¿Es el Raspberry Pi 4 vulnerable a las vulnerabilidades de Specter? , Raspbian contiene mitigaciones de software para estas vulnerabilidades, por lo que el riesgo de explotación debe ser bajo. Otros sistemas operativos pueden no contener mitigaciones apropiadas, y aunque ARM dice que se ha lanzado una mitigación de hardware para el Cortex-A72, no está claro si esto se ha aplicado al Pi 4.

Tenga en cuenta que las Variantes 1 y 2 (CVE-2017-5753 y CVE-2017-5715) se conocen como Spectre , y las Variantes 3 (CVE-2017-5754) y 3a (un ataque relacionado investigado por ARM) se denominan Meltdown . Por lo tanto, ninguno de los dispositivos Raspberry Pi anteriores a Pi 4 se cree que sea vulnerable a Spectre o Meltdown.

Aurora0001
fuente
Me pregunto si los cambios en el kernel de Linux que se requieren en otras arquitecturas se enviarán a las versiones de Linux que se ejecutan en Raspberry Pi. Supuestamente, estos cambios ralentizarán el sistema, por lo que tal vez el RP se verá afectado aunque los parches no sean necesarios.
Bobby Durrett
44
El parche del kernel detecta en qué procesador se está ejecutando y se desactiva automáticamente si no es un modelo afectado. Además, los núcleos para Raspberry Pi (y la mayoría de las otras computadoras de placa única) están diseñados específicamente para el hardware disponible, y no hay razón para que los encargados del mantenimiento incluyan o habiliten el parche en cuestión.
Perkins
1
@BobbyDurrett, los cambios de Meltdown en el kernel se encuentran en la sección específica de x86 de la base de código. Los cambios relacionados con Spectre están por todas partes, pero la mayoría de ellos están en secciones específicas del procesador del código, o son manejados por el compilador. Algunos bits, como los cambios estructurales en el código de red, pueden filtrarse en el Pi, pero la mayoría no.
Mark
Gracias por los comentarios. Es interesante pensar qué partes del código del kernel de Linux son específicas del procesador. Supongo que con un sistema operativo que se ejecuta en muchos tipos diferentes de CPU, tiene que hacer un buen trabajo al dividir el código que es específico para cada procesador.
Bobby Durrett
22

El Pi (todas las versiones) no es vulnerable.

Spectre y Meltdown requieren ejecución fuera de orden. El Cortex-A7 usado en los primeros Pi 2 y el Cortex A53 usado en los últimos Pi 2 y Pi 3 es una arquitectura estrictamente en orden. El ARM11 utilizado en el Pi 1 está parcialmente fuera de servicio, pero no de una manera que permita que Specter o Meltdown funcionen.

ARM confirma esto : solo un subconjunto muy limitado de procesadores ARM tiene hardware que los hace vulnerables a Spectre, un subconjunto aún más limitado es vulnerable a Meltdown, y se cree que todos ellos permiten mitigar la amenaza.

marca
fuente
10

Me gustaría ofrecer mi opinión diferente sobre esto.

Acerca de Meltdown, es una vulnerabilidad muy específica en algunos procesadores, por lo que si ARM dice que la CPU en Raspberry Pi no es vulnerable, entonces probablemente sea confiable.

Sin embargo, Specter es una vulnerabilidad más general. Hasta ahora, solo se han demostrado dos variantes, pero estoy bastante seguro de que hay más variantes. La falla en la CPU es que el estado del predictor de rama no se vacía cuando se realiza un cambio de contexto, y ese estado del predictor de rama se indexa por los bits de orden inferior de la dirección de instrucción de rama, y ​​no se etiqueta en absoluto. Por lo tanto, puede tener dos ramas que comparten el mismo estado de predicción de rama, incluso a través de los límites del proceso.

Estoy muy seguro de que la CPU en todos los modelos de Raspberry Pi es similar a prácticamente todas las demás CPU existentes en el sentido de que el predictor de ramificación es solo una gran variedad de contadores de saturación de 2 bits (fuertemente tomado, débilmente tomado, débilmente no tomado, fuertemente) no tomado). El índice de esta matriz son los bits de orden inferior de la dirección de instrucción de bifurcación, y no hay etiqueta, y este estado predictor nunca se vacía.

Ahora, si dos ramas comparten el mismo estado predictivo, puede medir qué camino ha tomado una rama en particular en el pasado muy reciente. ¡La fuga de información de Spectre está ahí! Si puede activar de manera confiable el navegador para que ejecute algún código de ramificación en su contraseña desde JavaScript, y medir las formas en que se han ido las ramas, de hecho podría extraer la contraseña. Ahora, este es un ejemplo extremo, nadie en su sano juicio se ramificaría en cada bit de su contraseña de una manera que se pueda activar desde JavaScript, pero esto demuestra el problema.

No creas todo lo que dice ARM. Lo que significa ARM es probablemente que los exploits que Google ha desarrollado no funcionan en estas CPU ARM. No significa que serían invulnerables para Spectre. Algún otro tipo de exploit podría funcionar.

Consulte esta pregunta: https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fix y comprenda las implicaciones de su respuesta. Un código JavaScript deshonesto que se ejecuta en su navegador puede, debido a Spectre, medir las formas en que se han ido otras ramas del proceso. Incluso una instrucción de vaciado del predictor de bifurcación no solucionará este problema JavaScript deshonesto, a menos que el navegador vacíe activamente el predictor de bifurcación antes de ejecutar código no confiable.

Spectre estará con nosotros durante mucho, mucho tiempo, ya que el predictor de rama que usa 14 bits como índice no está etiquetado con los 18 bits restantes de un espacio de direcciones de 32 bits, ya que requeriría 20 bits (contador de saturación de 2 bits) , Etiqueta de 18 bits) en lugar de solo 2 bits. ¡Esto multiplicaría el tamaño del predictor de rama por diez! Espero que los fabricantes de CPU agreguen una instrucción de vaciado del predictor de bifurcación que funciona incluso en el espacio de usuario sin privilegios especiales y que el kernel lo use cuando cambie de contexto y el espacio de usuario para usarlo cuando ejecute código JITed no confiable. Esto solucionaría la mayoría de los problemas de Spectre en la práctica, pero en teoría, no todos.

juhist
fuente
" Ahora, si dos ramas comparten el mismo estado predictivo, puede medir qué camino ha tomado una rama en particular en el pasado muy reciente " . ¿Cómo se hace esto sin ejecución especulativa?
Peter Taylor
@PeterTaylor estas CPU ARM tienen un predictor de ramificación y, por lo tanto, tienen una ejecución especulativa. Lo que les falta es la ejecución fuera de orden.
juhist
Están documentados para obtener instrucciones especulativas, pero eso no es una ejecución especulativa. Es un punto justo que aún sea posible usarlo como un oráculo.
Peter Taylor
Incluso la búsqueda especulativa puede ser suficiente, ya que habrá una diferencia de latencia menor pero medible.
juhist
Linux ya estaba agregando la aleatorización de la dirección del núcleo; No se puede predecir la dirección de una sucursal.
MSalters