La mayoría de los procesadores que ejecutamos en nuestros puestos de trabajo y en los servidores, son vulnerables a un tipo de ataque descubierto recientemente.
Cuando explicamos cómo funciona un procesador, siempre tendemos a entender que cada instrucción de un programa se ejecuta en un orden consecutivo, una por cada ciclo del procesador; la realidad es que los microprocesadores pueden ejecutar varias de estas instrucciones simultáneamente en cada ciclo, y con ello acelerar la ejecución de nuestro programa; para poder ejecutar simultáneamente varias partes de un mismo programa, los procesadores intentan ‘adivinar’ el estado del hilo del programa, y ejecutar instrucciones futuras; si este proceso funciona bien, entonces adelantó trabajo ganando performance, por otro lado si falla sencillamente se descarta el trabajo y se vuelve a procesar con el nuevo estado. Esta característica es conocida como Ejecución fuera de orden [1].
La vulnerabilidad explota esta característica, ejecutando un proceso malintencionado simultáneamente al proceso a atacar, con el que se obtiene información del direccionamiento de memoria del proceso atacado y ganando acceso a la misma. esa información podría ser algo que fácilmente comprendemos como grave, como ser una contraseña de acceso, pero bien podría obtener información vital para ejecutar otros ataques que comprometan aún más al sistema.
Quienes participamos de proyectos de Software Libre, y estamos al tanto de las noticias referidas al Núcleo del sistema Operativo Linux (también conocido como el Kernel Linux), sabemos que hace algunas semanas se viene integrando una serie de parches que buscan neutralizar este vector de ataque, aunque aún no han llegado las versiones debidamente actualizadas a la mayoría de las distribuciones, ya que se había coordinado como fecha de publicación masiva de la vulnerabilidad el día 9 de enero, ahora que se hizo pública están por salir en las próximas horas actualizaciones del kernel que requieren ser aplicadas a la brevedad y reiniciar el sistema.
En realidad estamos hablando de dos vulnerabilidades diferentes:
Por un lado, Spectre, CVE-2017-5715 [2] y CVE-2017-5753 [3], que afectan a procesadores X86 de Intel y AMD (posiblemente incluso los viejos K6 y los Pentium II en adelante) aunque es se supone que es relativamente fácil de solucionar en software aunque aún se están desarrollando los parches; por otro lado, Meltdown CVE-2017-5754 [4], que es la más grave de todas y que afecta a procesadores Intel, ARM, y que según AMD sus procesadores no son vulnerables por diseño [5].
La vulnerabilidad es especialmente peligrosa en entornos de virtualización, donde un proceso malintencionado en un Guest podría obtener información de la memoria del Host, con lo cual afecta a los servicios en la nube tanto privadas [6][7] como públicas [8]
Información de la mano de la gente que ha descubierto esta vulnerabilidad en [9].
UPDATE:
Greg Korah Hartman, el responsable de las actualizaciones a los kernels estables y LTS en kernel.org, ha publicado un post el 6 de enero con información respecto del estado de estas vulnerabilidades [10].
Para quienes utilizan software privativo en sus puestos de trabajo, las actualizaciones de Microsoft y Apple ya se están distribuyendo por sus redes de actualización, así que a mantener el sistema debidamente actualizado.
[1] https://es.wikipedia.org/wiki/Ejecuci%C3%B3n_fuera_de_orden
[2] https://security-tracker.debian.org/tracker/CVE-2017-5715
[3] https://security-tracker.debian.org/tracker/CVE-2017-5753
[4] https://security-tracker.debian.org/tracker/CVE-2017-5754
[5] https://www.amd.com/en/corporate/speculative-execution
[6] https://xenbits.xen.org/xsa/advisory-254.html
[7] https://www.vmware.com/us/security/advisories/VMSA-2018-0002.html
[8] https://aws.amazon.com/security/security-bulletins/AWS-2018-013/
[9] https://meltdownattack.com/
[10] http://kroah.com/log/blog/2018/01/06/meltdown-status/