jueves, 18 de enero de 2018

Posibles consecuencias de Meltdown y Spectre

Tras el revuelo que se montó con las dos vulnerabilidades que se detectaron estas navidades (bueno, unos meses antes) que ya analicé en las dos entradas anteriores, quisiera hacer una reflexión acerca de lo que en realidad son los sistemas modernos de vulnerables o no.

Lo primero que hay que decir es que sí, que todos los sistemas de los últimos 10 años son vulnerables y lo van a ser hasta que se solucione el problema y se cambien las CPUs por otras nuevas. Esto incluye a Intel, AMD, ARM, Power y todas las CPUs con ejecución especulativa (o como leñe se traduzca al español y que no suene tan mal) Si quieres uno seguro, los SPARC con encriptación de la memoria por HW.

Ahora la cuestión ¿cómo de complicado es explotar estos fallos? Pues ahí tengo una buena noticia: es muy complicado, lo que no quiere decir que te quedes tranquilo del todo, pero por lo menos, no vamos a morir todos esta semana (y la que viene, seguramente tampoco) pero tampoco que extrañaría que en un tiempo, alguien sea capaz de sacarle jugo.

Hay gente que saca provecho de todo .. hasta de los cuadro de Kandinsky

Meltdown, aparte de afecta únicamente a Intel (los AMD lovers están de enhorabuena) se puede parchear con el parche KPTI o KAISER que lo que es separar los datos de kernel y de usuario en dos espacios de direccionamiento diferente con lo que un intento de acceder a la parte protegida es infructuoso. Lo malo es que obliga a cambios de direccionamiento y el impacto en el rendimiento es negativo, no tanto como se decía inicialmente y mucho mayor en CPUs y sistemas operativos antiguos como Windows Server. No hay mal que por bien no venga ... se puede forzar la renovación tecnológica (cada vez que veo, en 2018 peticiones de nuevas máquinas con Windows 2008 se me revuelven las tripas) Respecto a SPECTRE, no hay paliación, pero le pasa lo mismo, si no le ofreces los datos en el mismo espacio de direcciones no puede acceder a ellos.



Por otro lado, ninguno de estos agujeros puede escribir en ninguna parte, sólo pueden leer, así que no debemos temer que nos inyecten código malicioso, pero si podrían pillar claves privadas, usuarios y otros datos delicados y confidenciales que deberían estar protegidos. Aquí tenemos que tener en cuenta dos cosas:
  • Aleatorización del espacio de direcciones. En el pasado los sistemas operativos tenían un mapa de memoria más o menos fijo y yendo directamente a posiciones de memoria se podían obtener resultados en concreto (la memoria de vídeo, el stack, variables del sistema, etc) De hecho, muchas veces se programaba directamente pensando en estas direcciones con el fin de mejorar las prestaciones. Eso ya no es así, pero una parte la memoria está "virtualizada" (los programas tienen mapas de memoria propia que se copia en memoria real) y se ha incorporado un elemento "aleatorio" a la hora de distribuir la memoria del kernel, de manera que no está siempre en las mismas posiciones, lo que dificulta el acceso a determinados áreas del sistema. No es lo mismo crear un virus que saque datos de unas posiciones determinadas que no uno que tenga que buscar primero.
  • Mapa de memoria de MS-DOS
  • La velocidad de acceso a los datos de estas vulnerabilidades es relativamente escasa. Según he leido, 500 KB/s en el caso de Meltdown y 10 KB/s en el caso de SPECTRE. Eso significa que si tenemos que extraer y analizar 1 MB de datos tardaremos 100 segundos en el segundo caso en el mejor de los casos y haciendo un impacto en el sistema que nos estaría gritando "¡eh! ¡que estoy aquí putenandote el ordenador!" y la cosa no es así ¿verdad? queremos ser discretos. Si para un 1 Mb necesitamos 100 segundos, para 1 GB que son 1024 veces más como que la cosa no parece eficaz (el PC desde el que escribo tiene 16 GB, son 455 horas de análisis si no me he equivocado)

Como ya hemos dicho que no se permite escribir, hay que utilizar otras maneras de entrar en los sistemas, bien vía troyanos, vulnerabilidades de otros componentes ... o desplegando una VM con código malicioso que afecta a las nubes públicas (por eso se han dado tanta prisa en desplegar los parches) 

Pero por no estar en una cloud pública o tener KPTI instalado no vas a estar seguro. Quizás no te puedan acceder a claves privadas en el kernel pero por ejemplo, si te pueden meter un keylogger y capturarte passwords como muestra el vídeo.




Para resumir: El riesgo existe aunque la manera de protegerse también y es relativamente sencilla:
  • Mantén el sistema operativo actualiza. Evita los sistemas operativos antiguos que no tienen parche de seguridad.
  • No te instales software de orígenes dudosos.
  • Ojo al spam, phising, troyanos, etc
  • Mantén el antivirus actualizado.
  • No sería mala idea encriptar el HD (perjudica a las prestaciones)
  • Tomate el ordenador en serio, sobre todo si lo tienes conectado a Internet (cosa que haces ya que si no, no estarías leyendo esto)
  • Ojo con los android que las apps las carga el diablo (IOS creo que es un poco más seguro, pero hay que tener cuidado también)

No hay comentarios:

Armaduras.

He de reconocer que últimamente no me estiro demasiado en el tema bloguero este. Tampoco voy a molestarme en hacer propósito de enmienda so...