Supongamos que tengo una computadora con un procesador Intel pre-Skylake que no tiene microcódigo para mitigar el ataque de Spectre V2. Entonces, según tengo entendido, si el núcleo y todas las aplicaciones de espacio de usuario se compilan con retpoline, están protegidas, ¿no?
Pero recompilar todos los programas de espacio de usuario con retpoline es una tarea, así que básicamente quiero saber en cuáles debería centrarme y por qué.
¿Qué puede hacer un "ataque Spectre V2" contra una aplicación de espacio de usuario en particular? ¿Puede un ataque de este tipo obtener información de todo el sistema, o solo información "en" esa aplicación de espacio de usuario? Si esto último es cierto, solo las aplicaciones con información confidencial deben compilarse con retpoline, ¿verdad?
Además, ¿cómo se atacan las aplicaciones de espacio de usuario? ¿Se realiza el ataque haciéndoles ejecutar un trozo de código malicioso? Si es así, ¿solo las aplicaciones que pueden ejecutar código deben ser parchadas? Además, es por eso que Firefox, a pesar de no estar compilado con retpoline, no puede ser atacado gracias a ¿Su corrección reduce la resolución de los temporizadores ?
Pido esto en un contexto de Linux ya que, por lo que sé, ninguno de Microsoft y Apple usan retpoline.
Editar Una pregunta similar es: Actualizaciones de firmware / microcódigo de Intel que hacen a los procesadores" inmunes "a Specter y Meltdown? pero esta pregunta es diferente. Esta pregunta es sobre qué aplicaciones de espacio de usuario deben compilarse con retpoline y cómo los ataques de Specter V2 funcionan mientras que la otra es sobre cómo se mitigan Specter y Meltdown en general.
Editar 2 Un comentario sugirió esta pregunta y respuesta: Meltdown and Specter Attacks responde a mi pregunta aquí. He copiado las partes relevantes (que creo) a continuación
¿Cómo funciona Specter?
Specter funciona en un nivel diferente y no permite el acceso a los datos del espacio del kernel desde el espacio del usuario. En este ataque, el atacante engaña la ejecución especulativa para ejecutar de manera predecible las instrucciones erróneamente. En pocas palabras, el predictor está obligado a predecir un resultado de rama específico (si - > verdadero), que resulta en solicitar un acceso de memoria fuera de enlace que el proceso víctima normalmente no hubiera solicitado, lo que resultaría en una ejecución especulativa incorrecta. . Luego por el canal lateral, recupera el valor de esta memoria. De esta manera, la memoria que pertenece al proceso víctima se filtra al proceso malicioso.
¿Son estos ataques una vulnerabilidad de ejecución remota de código?
No, no lo son.
Para poder aplicar este ataque, el atacante debe poder ejecutar código en el host de destino. Sin embargo, tenga en cuenta que si se combinan con otros vectores de ataque, por ejemplo, la carga de archivos o las vulnerabilidades de scripts entre sitios, existe la posibilidad de ejecutarlos de forma remota.
¿Puedo afectarme al visitar un sitio web?
Sí, ya existe una prueba de concepto de un exploit de JavaScript para Specter (solo).
Pero no entiendo cómo responden a mi pregunta. Así que supongo que esta pregunta se reduce a cómo esta otra respuesta responde a mi pregunta.