Hay dos nuevos defectos de seguridad graves descubiertos, Spectre y Meltdown .
¿La Raspberry Pi es vulnerable a Spectre y / o Meltdown?
Hay dos nuevos defectos de seguridad graves descubiertos, Spectre y Meltdown .
¿La Raspberry Pi es vulnerable a Spectre y / o Meltdown?
Respuestas:
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:
Pi 1 y cero (W) : ARM11
Pi 2 V1 : BRAZO Cortex-A7
Pi 2 V1.2 y Pi 3 : ARM Cortex-A53
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.
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.
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.