¡#QuéQuilombo! @Google descubre #Spectre #Meltdown: @intel y @Microsoft #EnElHorno mientras @AMD @ARMHoldings #Linux y #Apple #LoMiranPorTV

¿Se enteraron del quilombo con los procesadores de Intel? ¿Estuvieron leyendo o escuchando algo? Si la respuesta a las dos preguntas anteriores fue un “Si”, yo les pregunto: ¿entendieron de qué carajo se trata? Si la respuesta a esta tercera pregunta también es “Si", pueden dejar de leer ahora mismo esta publicación, les ahorro tiempo. Pero si por el contrario la respuesta es que no entendieron un sorete a la vela, entonces quizás lo que siga les ayude a entender la magnitud del despelote.

El martes 2 de Enero de 2107, The Register publicó información que se filtró en relación a un error en los procesadores de Intel que podría permitir a un atacante a obtener información muy sensible de los equipos afectados, como por ejemplo: claves de acceso. Al toque Intel salió a contar su verdad de la historia para evitar rumores. Pero entonces Google salió al ruedo a decir cómo es que empezó todo esto: el 1 de Junio de 2017 ellos mismos (Google) descubrieron un fallo en los procesadores de Intel, AMD y ARM (estos últimos, presentes en quichicientos modelos de teléfonos celulares). AMD por su parte salió a decir que ellos no tienen el fallo, pero para el caso, a quién carajo le importa si a fin de cuentas Intel tiene el 80% del mercado de CPUs mientras que AMD sólo tiene el 20% restante.

La cosa es que Google le avisó a los fabricantes de procesadores y a los desarrolladores de sistemas operativos, y entre todos se pusieron a laburar, y pusieron el 9 de Enero como fecha para que todo esto saliera a la luz. Y esta fecha es la que Microsoft tenía en el calendario para liberar finalmente su hotfix, aunque a causa de la información que se filtró de alguna manera a la prensa, todo se terminó precipitando.

Pero volvamos a lo importante: ¿de qué se trata esto? Einstein dijo alguna vez que “si no podés explicar algo de manera sencilla, entonces no lo entendés lo suficientemente bien”. Salvando los abismos y aclarando que no soy un experto en el tema, voy a tratar de bajarlo lo más a tierra que pueda.

Mencioné más arriba que el problema está en los procesadores. Específicamente en un chip que tienen los procesadores, y ese chip se encarga del manejo de la memoria. Y acá ustedes dirán: “¿estamos hablando de memoria o del procesador?”. Denme el beneficio de la duda y les explico…

Una computadora ejecuta procesos. Esos procesos realizan operaciones muy básicas: todas de SI o NO, de VERDADERO o FALSO, de UNO o CERO, como quieran decirlo. Por eso es que el lenguaje de las computadoras es el binario: ceros y unos es todo lo que una computadora entiende. Sí, todo se reduce a eso. Y Para todas esas operaciones, la computadora consta de un procesador que procesa (valga la redundancia) y una memoria donde se van almacenando datos (también en formato de unos u ceros). ¿Y cómo hace la computadora para saber en qué lugar de la memoria de la computadora dejó guardado algún dato en particular? Fácil: mediante la dirección de memoria donde empieza el dato que quiere recuperar. Lo explico de otra manera:

Piensen en la memoria (RAM) de la computadora como un libro. Ese libro está lleno de hojas (sectores de memoria donde hay datos). En un caso como ese, ¿cómo harían para buscar el capítulo 5 del libro? Bueno, irían al índice, y ahí encontrarían la página en la cual empieza el capítulo 5. Así, el libro vendría a ser toda la RAM, el índice vendría a ser la Tabla de memoria, el número de página la Dirección de memoria donde empieza el dato que necesitan, y las páginas que contienen el capítulo 5 serían los Sectores de memoria donde está el dato. Podría explicarlo con un crucigrama o con algunas otras cosas, pero lo que redunda abunda, así que mejor lo dejo así.

Cuestión que cuando una máquina tiene que procesar cosas, maneja los procesos en dos niveles: los procesos de Usuario y los procesos de Sistema. Los de usuario son todas las pelotudeces que uno quiere hacer, y los de Sistemas son todas las cosas que la computadora debe hacer para satisfacer nuestras pelotudeces. Por ejemplo: si me bajo de mi casilla de Gmail un PDF a mi laptop, los procesos de Usuario son los que me permiten desde el navegador seleccionar el archivo y poner “descargar”, y los procesos de Sistema son los que acceden al disco rígido de mi laptop para guardar el archivo en disco. ¡Y acá es donde todo se va al carajo! Pero sigamos…

Los estándares de seguridad de los sistemas informáticos se basan en el aislamiento de los sectores de memoria (RAM) que son accedidos por el núcleo (kernel) del sistema operativo (Windows/Linux) que se está ejecutando en un hardware dado (PC/Laptop/Server). En base a esto, los procesos de Usuario no pueden acceder a sectores de memoria que tienen información de Sistema (kernel), porque esas direcciones de memoria están aisladas y ocultas. La vulnerabilidad conocida como Meltdown (derretimiento o fundición) permite justamente, que un proceso lea información de la memoria que le pertenece a otros procesos, incluyendo procesos restringidos.

Pero ahí no termina la cosa porque además los procesadores modernos usan metodologías de predicción y de especulación para mejorar la velocidad de procesamiento. ¿Qué carajo significa esto? Que un procesador, en la vorágine de operaciones que realiza, supone o predice qué valores de memoria debe leer como resultado de una operación, y se anticipa a leerlos. No estoy en pedo. Es cierto lo que les digo. Las computadoras “suponen”. Entonces, si el resultado de la operación apunta al espacio de memoria donde está el valor correcto, ¡buenísimo porque entonces ya tiene el valor! Y en caso de que el resultado NO apunte a ese espacio de memoria sino a otro, entonces el procesador simplemente descarta el valor que había supuesto y va a buscar el adecuado. O sea: en el peor de los casos no perdió tiempo por tener que buscar algo que no necesitaba porque lo buscó “anticipadamente”. Y en el mejor de los casos ganó tiempo por tener algo antes de tener la confirmación de que lo necesitaba. El problema con toda esta especulación es que un atacante puede acceder a espacios de memoria restringidos, al inducir al procesador a “especular” que necesita ciertos espacios de memoria que verdaderamente no necesita, y accediendo de esta manera a información que no podría ser accedida de otra manera por el atacante. A este fallo lo bautizaron como Spectre (espectro), y por si una fuera poco, tiene dos variantes. ¡Qué quilombo!, ¿no?

Ustedes estarán pensando: ¿y cómo mierda hacemos todos los pelotudos que tenemos equipos basados en los procesadores afectados, para no ser vulnerables? Para cortar el problema de raíz, hay que cambiar el procesador (en muchos casos: cambiar la máquina, la Tablet o el teléfono afectado). Pero seamos realistas: no es posible o incluso viable hacer eso. Todo sale plata. Ahí es donde pasamos a la segunda opción: aplicar un “parche” o hotfix al sistema operativo (Windows/Linux/MacOS) que nos evite seguir siendo vulnerables.

¿De qué se trata el fix? De que el sistema operativo NO guarde información de los procesos de Usuario y de los procesos de Sistema, en los mismos sectores de memoria, con ese jueguito de hacer que los datos de los segundos sean “invisibles” para los procesos de los primeros. Así, los procesos de Sistema y los de Usuario pasan a usar sectores de memoria completamente diferentes. El problema es que esto genera demoras. Imaginen lo siguiente:

Ustedes tienen que hacer un cálculo en una hoja de papel. Empiezan a hacer el cálculo y en un momento dado, tienen que hacer un cálculo muy complicado que los excede, así que le piden a un amigo que haga el cálculo por ustedes y les escriba el resultado. Este amigo agarra la misma hoja de papel (mismo espacio de memoria) y hace el cálculo, pero tapando con la mano lo que hace para que sea “invisible” para ustedes. Cuando termina, escribe el en la parte de la hoja que ustedes ven, solo el resultado, y les devuelve el lápiz para que puedan seguir adelante. El temita de tener que usar sectores de memoria diferentes sería equivalente a que la hoja que ustedes usan sea diferente a la que usa este amigo, que además podría estar sentado en otro escritorio. El solo hecho de que el amigo tenga que venir a leer el cálculo al escritorio de ustedes, después irse al suyo para hacer el cálculo, y después volver al escritorio de ustedes para escribir el resultado, hace que todo el proceso sea mucho más lento. ¡Y ni hablar de si ustedes tienen que pedirle a este amigo que haga varios cálculos por ustedes! ¿Cuánto tiempo va a perder en ir y volver entre uno y otro escritorio varias veces?

La cosa es que el fix para el kernel (núcleo) de Linux fue liberado luego de que desarrolladores de todo el mundo trabajasen durante algo así como dos meses en el proyecto. El fix para MacOS también fue liberado por la marca de la manzanita. ¿Y el fix para Windows? Como mencioné más arriba, Microsoft tenía previsto liberarlo al público el martes 9 de Enero, así que todavía están a tiempo. De hecho, ya estuvieron emparchando sus Host servers en Asure, que vienen a ser los equipos físicos de Microsoft que permiten que millones de sus clientes usen aplicaciones en “la nube” de Microsoft, o “virtualicen” sus propios servidores. Olvídense, no voy a entrar en detalles respecto de esto de la nube y la virtualización porque sinó ahí sí que esto se hace interminable. Sólo voy a decir que Microsoft se aseguró de emparchar sus propios servidores justo a tiempo como para liberar el fix a sus clientes.

Lo grande, lo mejor (como dice JAF en su versión de Wonderful Tonight) es que se estima que el fix puede volver a las máquinas de un 5 a un 30% más lentas dependiendo del modelo del procesador. Lindo, ¿no?

Al momento, Google ya emparchó toda su infraestructura de cloud. Apple ya emparchó su MacOS y los equipos basados en Linux ya cuentan con el fix para el kernel. Microsoft tiene el fix, pero por ahora sigue corriendo de un lado a otro moviendo servidores virtuales de sus clientes entre equipos físicos vulnerables y no vulnerables.

Sin dudas, las vulnerabilidades de CPU bautizadas como Spectre y Meltdown son las peores en la historia de la informática Y si bien no hay manera de estimar la cantidad de equipos que puedan verse afectados, las estimaciones arrancan en los miles de millones. ¡Pero a no desesperarse! La realidad es que aprovecharse de estas vulnerabilidades para lanzar un ataque y obtener información que realmente valga la pena el esfuerzo, es extremadamente complicado y complejo. Así que relájense y apliquen los últimos fixes. Y si resulta ser que sus máquinas se vuelven carretas oxidadas de un día para el otro, sepan que mientras tanto aquí, en la gran cuidad, una nueva hora… comienza.

 

Añadir nuevo comentario

CAPTCHA
Marcá el cuadro de abajo para seguir.