Qué vomitivo me resulta todo esto. Los estadounidenses tienen lavado el cerebro y los mayores se los lavan a los menores diciendo que deben sentirse orgullosos de ser estadounidense. Siempre me ha parecido más que tonto sentirse orgulloso por nacer en tal o cual lado, no le veo nada de lo que haya que estar orgullosos. Definitivamente el chauvinismo, el patriotismo y el nacionalismo deberían ser considerados una especie de retraso mental.
Portada
mis comunidades
otras secciones
#42 Resumen: No sería solución y a tí también te afecta.
Es importante entender que esta es la primera demostración de la idea de que se pueden atacar sistemas "trasteando" con la ejecución predictiva que hacen prácticamente todos los procesadores "potentes" del mercado (desde hace años!). Los que tuvieron esa idea pensaron en formas concretas de ponerla en práctica. El resultado son, actualmente, dos ataques concretos: "Meltdown" y "Spectre".
MELTDOWN, que solo afecta a procesadores Intel, es el que más ha preocupado a corto plazo: resulta que, usando este tipo de ataque, es posible saltarse las protecciones de memoria que debería asegurar el procesador. Eso significa que un atacante puede leer CUALQUIER parte de la memoria que le de la gana, incluida la memória de otras máquinas virtuales alojadas en el mismo hardware, desde dentro de una máquina virtual mismo!
Esto dejaba "en bolas" a todos los tinglados cloud porque cualquiera podría robarle info a "sus vecinos" (que son otros clientes). Este bug es el que se han apresurado a mitigar por todos lados (ya hay patches para Linux, Windows y MacOS). Estos parches lo que hacen es putear al procesador a drede para que la ejecución predictiva no funcione, evitando así que se pueda "disparar" el bug (a costa de disminuir el rendimiento de la CPU claro!).
De aquí viene la idea de "si no virtualizo no hay problema", pero es una idea falsa. Si no virtualizas pero tienes CPU intel, lo que pasa con este ataque es que un programa cualquiera, ejecutado por un usuario cualquiera, puede leer la memoria del sistema operativo, y por tanto obtener privilegios de root/administrador/sistema y controlar tu pc por completo (el sueño de todo worm/virus/cosa maliciosa). Por eso el parche también te lo aplican a ti que no virtualizas.
SPECTRE es otro ataque, más sutil y difícil de explotar. Con este ataque (en realidad son dos) lo que se consigue es leer cualquier parte de la memoria *de tu mismo proceso* (no puedes leer lo de otros procesos). Esto puede sonar poco peligroso, pero no lo es por un sencillo motivo: ahora mismo estás usando un programa (tu navegador web) que ejecuta programas de otra gente sin preguntarte (scripts javascript). Usando este ataque, es teóricamente posible que una web cualquiera lea los datos de las otras webs que tienes abiertas, incluyendo contraseñas, cookies de sesión, etc. Vamos, que visitando una web cualquiera te podrían robar la tarjeta de crédito que estás metiendo en amazon para comprar una chorrada, por ejemplo. De momento no han conseguido llevarlo a la practica en javascript (es complicado porque hay un JIT que interpreta y compila el código javascript, así que no es fácil terminar generando instrucciones específicas para disparar el bug), pero es solo cuestión de tiempo.
Durante este tiempo, tanto los desarrolladores de navegadores, como todos aquellos programas que permitan ejecutar scripts o plugins de terceros tratarán de buscar formas para evitar que esos scripts/plugins puedan disparar el bug.
DESGRACIADAMENTE, esto será una guerra que durará mucho tiempo. Estos dos ataques concretos son solo la primera oleada de ataques basados en "trastear con la ejecución predictiva", porque en el fondo el problema es del diseño del hardware. Este diseño se viene usando desde hace más de una década, y hoy en día lo usan prácticamente todas las CPUs "potentes" (incluídas tablets y moviles). El CERN dice que lo mejor es cambiar de CPU (a una que no haga ejecución predictiva), pero... eso no existe hoy en día (con potencia como para hacer el trabajo que hacen las CPUs afectadas). Por tanto, vamos a estar haciendo "chapuzas" para evitar los ataques que vayan apareciendo, mientras otra gente se dedica a buscar nuevos ataques que exploten este problema.
Y ya para terminar de hacerme pesado, voy a explicar un poco cuál es ese problema. La idea de la ejecución predictiva es que, cuando el procesador debería quedarse esperando alguna información de la memoria, en vez de quedarse parado "asume" qué datos vendrán y va ejecutando como si los tuviera. Si cuando llega la información esta coincide con lo esperado, se sigue ejecutando con ese trabajo ya adelantado (yuhu!). Si no, el procesador "deshecha" ese trabajo que ha "adelantado", vuelve al punto donde se habría parado, y ejecuta a partir de ahí pero con la información de verdad. Esta idea está muy bien (y funciona muy bien!), pero tiene un problema: el seguir ejecutando en vez de esperar tiene efectos secundarios, aunque luego deseches el trabajo. De hecho, no está claro que sea posible deshacer TODO lo que hayas cambiando mientras "se adelantaba trabajo". Lo que si está claro es que los procesadores actuales no consiguen deshacerlo, y de eso es de lo que se aprovechan Meltdown y Spectre: consiguen que el procesador vaya "adelantando trabajo" y luego observan los efectos secundarios producidos para descubrir información que en teoría no les toca conocer!