Vulnerabilidad en microprocesador, aprovechada por rootkits en Linux

Imagen de squirrel
Enviado por squirrel en

Foros: 

Por squirrel

Una vulnerabilidad en los procesadores Intel x86_64 debida a un incorrecto manejo de los punteros de retorno de excepciones de protección está siendo aprovechada por rootkits en Linux para obtener escalado de privilegios y/o bloqueos de las máquinas afectadas. El problema afecta tanto al SO principal de la máquina como a versiones paravirtualizadas en Xen, ya sea Linux, Windows en cualquiera de sus versiones o alguna variante de BSD unix.

Si bien los principales fabricantes y distribuciones ya han publicado versiones corregidas, todavía parece haber multitud de equipos vulnerables, por lo que se recomienda proceder a su actualización y parcheado lo antes posible.

Aparentemente afecta también

Aparentemente afecta también a sistemas Windows (W7 y WServer2008, ambos de 64 bits), aunque no a IOs.

Corregidme si me equivoco pero parece además que en linux debes tener acceso local a la máquina o bien contraseña de root (para poder editar el fichero rc.local). Si esto es así, creo que en la practica el riesgo es bajo.

Cuestión tonta

Yo iba a preguntar por si los micros de AMD están afectados, y por lo que he leído, no. Así que creo que me puedo anticipar a quien pretenda mofarse de los sistemas libres.

Ahí es ná, un/otro bug hardware. Qué país.

==== Este espacio se ha dejado deliberadamente en blanco. ====

La solución, aplicando el método RTFA

Una vez lees el artículo, te das cuen de que hasta Microblando informa de la vulnerabilidad. Ergo muy fumado debo de ir para afirmar que la distro de linux de Microblando es vulnerable... ;)

Mal va esto si un fabricante de HW fabrica micros con estas 'features'.

==== Este espacio se ha dejado deliberadamente en blanco. ====

Un SO de 32bit no estaría afectado

Intel x86 de 32bit y AMD x86_64 de 32 o 64bit [1] y [2] son los microprocesadores CISC más extendidos y asentados. Intel comenzó con IA64 o Itanium pero AMD x86_64 se impuso en su segmento e intel también lo tuvo que comercializar para no quedarse atrás en una carrera en la que AMD despegó definitivamente como fabricante asentado de microprocesadores o CPU (microprocesador central) que ahora, fusionada con ATI, lo es también de GPU (microprocesador de gráficos).

Las características que eran incluidas en los diseños tradicionales de microprocesadores CISC para aumentar la velocidad estaban siendo ignoradas por los programas de usuario que realmente eran ejecutados en ellas y se pensó que eso hacía que la tecnología RISC fuera en realidad más adecuada puesto que, además, la velocidad del procesador en relación con la memoria de la computadora que accedía era cada vez más alta porque eso era lo que mejor se iba vendiendo de manera paulatina, escalonada y sin que se atisbara un claro límite.

El Itanium, nombre en código o alias Merced, fue el primer microprocesador o CPU de la arquitectura Intel IA64, creada por Hewlett-Packard y desarrollada conjuntamente con Intel que la lanzó al mercado en mayo de 2001. IA64 (del inglés Intel Architecture-64) es una arquitectura de 64bit que luego se comercializó con los nombres Itanium e Itanium 2, en realidad máquinas RISC (del inglés Reduced Instruction Set Computer, que se traduce en microprocesadores con un conjunto de instrucciones reducidas como las de los PowerPC, DEC Alpha, MIPS, ARM, SPARC, etc.) pero que emulan a una máquina CISC por temas de retrocompatibilidad con la muy extendida arquitectura x86 ya asentada por aquel entonces de 32 bit; el tipo de procesador más comúnmente utilizado en equipos de escritorio basado en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su ejecución.

[CISC] Complex instruction set computing
[...]
Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos, en contraposición a la arquitectura RISC.
[...]
Los CISC pertenecen a la primera corriente de construcción de procesadores, antes del desarrollo de los RISC. Ejemplos de ellos son: Motorola 68000, Zilog Z80 y toda la familia Intel x86, AMD x86_64 usada en la mayoría de las computadoras personales actuales.
.
Hay que hacer notar, sin embargo que la utilización del término CISC comenzó tras la aparición de los procesadores RISC como nomenclatura despectiva por parte de los defensores/creadores de éstos últimos.

Así que la tecnología hardware afectada es la de Intel compatible con la de AMD x86_64 pero, si instalamos o ya tenemos funcionando un sistema operativo de 32bit en una máquina con hardware Intel compatible x86_64, arquitectura conocida como AMD x86_64 (nótese que no tiene nada que ver con IA64 o Itanium), corregidme si estoy equivocado pero, en mi opinión, no estaría afectado por este problema.

El hardware y no sólo el software para tareas críticas debería ser, al menos opcionalmente, también libre. Porque un hardware que no esté bien asentado hace que en realidad se tengan los pies de barro y el corazón en un puño por impecable que a nivel software se desempeñen dichas tareas.

¡QUÉ EL FSM NOS COJA COLAPSAOS! ;-)

Saludos cordiales,

Pedro Fernández.

_____________________________________________________________________________________
[1] Para intentar un acercamiento imagino un autobús o interurbano con capacidad para 32 viajeros y otro con capacidad para 64 realizando su recorrido entre dos puntos o ciudades cualesquiera sin interrupción y a la velocidad de la luz; lo que me permite una mejor comprensión grosso modo del asunto sin necesidad de entrar en mucho más detalle porque, en realidad, la cuestión de cara a un usuario medio puede que no tenga mayor interés si no dispone de 4 o más GiB de memoria física en su máquina para empezar a notar que algo importante ha cambiado en la forma en que ésta interactúa al tener una mayor capacidad de proceso de datos por unidad de tiempo.

[2] Ver también el enlace http://en.wikipedia.org/wiki/X86_64 disponible en varios idiomas para ampliar información y del que destaca el siguiente parráfo por esclarecedor:

[...]
Prior to launch, "x86-64" and "x86_64" were used to refer to the instruction set. Upon release, AMD named it AMD64.[3] Intel initially used the names IA-32e and EM64T before finally settling on Intel 64 for their implementation. x86-64 is still used by many in the industry, while others, notably Sun Microsystems[4] (now Oracle Corporation) and Microsoft,[5] use x64 while the BSD family of OSs use AMD64.

Imágenes: 

AMD64_Logo.png

Bajo nivel

Claramente se trata de un problema a muy bajo nivel y en un lugar mucho mas crítico que cualquier otro bug a nivel de SO. Emparchar un SO para cubrir un problema de seguridad a nivel de microprocesador es realmente una patada en los dientes y no deja de ser un solución atada con alambre. Aca todos los SO pasan a ser vulnerables y sus mayores fortalezas a nivel de software no sirven de nada.

Si cada vez que se genera una excepción cuando se realiza un cambio de contexto en modo protegido un atacante puede tomar privilegios de root, el problema es realmente grave y compromete cualquier servidor que use esta familia de micros de Intel para guardar informacion sensible.

Vamos descartando la familia Intel IA64?

Saludos

La llamada [3] no incluída

Puede que la llamada [3], que no incluí en mi anterior comentario porque se hacía demasiado extenso, lo hubiera dejado aún más claro.

Además, se puede consultar la entrada de la Wikipedia en inglés 'IA64' [ http://en.wikipedia.org/wiki/IA64 ] con una información muy detallada, fotografías, dibujos y gráficos sobre esta arquitectura que no está afectada por el problema que nos ocupa. Entrada que, por otra parte, puede ser accedida también en otros idiomas; aunque la entrada en inglés proporcionada es en mi opinión la mejor elaborada y la más prolija.

Saludos cordiales,

Pedro Fernández
--

________________________________________________________________________________________________________
[3] En el momento de su lanzamiento (Junio de 2001), Itanium no era superior a los microprocesadores contemporáneos RISC y CISC. Compitió por el segmento bajo del mercado (de 4 CPUs para abajo) con los servidores basados en los procesadores x86, y en el segmento alto con las arquitecturas IBM POWER y Sun SPARC.

Intel reposicionó al Itanium para concentrarse en la gama alta y los ordenadores HPC, intentando duplicar el acertado esquema de mercado horizontal de los x86 (una sola arquitectura, múltiples vendedores de sistemas). Su éxito se limita a reemplazar a los sistemas PA-RISC y Alpha de HP y a los MIPS en los HPC de Silicon Graphics. POWER y SPARC permanecen fuertes, mientras que la arquitectura x86 de 32 bit crece en el espacio empresarial.

Con las economías de escala alimentadas por su enorme base instalada, x86 es la arquitectura horizontal preeminente en el mercado empresarial. Intel y HP reconocen que Itanium no es competitivo y lo reemplazan por el Itanium 2 un año antes de lo planeado, en 2002. Solamente algunos miles de los Itanium se vendieron, debido a la disponibilidad limitada causada por baja producción, relativamente pobre rendimiento y alto coste aunque IBM creó un supercomputador basado en este procesador.

AMD x86-64 tampoco está afectada

Necesario, desde luego, no es porque AMD x86-64 tampoco está afectada. La Cray Titan, por ejemplo, la incorpora con notable éxito. Cito:

[...] Titan fue anunciado en octubre de 2011 y se volvió operacional en octubre de 2012.[3] [4] Se espera que supere los 20 petaFLOPS, es decir 20 billones de FLOPS, con un pico teórico de 24,8 petaFLOPS. Sin embargo, la velocidad real alcanzada es de 17,59 petaFLOPS, lo que la convierte en la supercomputadora más rápida del mundo.
.
Está equipada con CPUs AMD x86-64 Opteron 6274 de 16 núcleos y GPUs Nvidia Tesla K20. [...]

Y aunque lo estuviera no creo que una cosa así lo justifique. Supongo que lo dices en broma ;-)

Pues claro que lo decía

Pues claro que lo decía un poco en broma ;-)

Pero solo un poco.

Ahora si hablamos de supercomputadores China esta creando uno con los procesadores Loongson.

Tenemos que tener encuentra que los procesadores AMD e INTEL no son demasiado eficientes para los supercomputadores, lo mas importante no es el numero de CPUs sino de GPUs, que es mucho más eficiente. Ten en cuenta que se crearon supercomputadores con PS3 porque sus procesadores son más eficientes.

No era mi intención hablar del TOP500

sino que sólo pretendía ubicar el problema de una forma clara para poder entenderlo sin lugar a error porque, identificar con exactitud el hardware afectado por este problema, es un tanto confuso para un usuario medio o para quienes no están al tanto de la nomenclatura empleada por la industria.

Si a alguien más le ha servido como aclaración y consigue darse cuenta de si está afectado o no por este problema para que tome las medidas de seguridad que estime convenientes en su o sus sistemas informáticos y poder pasar al siguiente problema, ya es suficiente.

Problemas software más o menos críticos siempre hay y se van solucionando constantemente; por eso es tan importante actualizar nuestros sistemas operativos. En cuanto a los problemas hardware me ha resultado de gran ayuda el acertado comentario del autor de la presente entrada, squirrel, que cito a continuación porque resume muy bien la cuestión:

Tampoco es el fin del mundo, los fallos en microprocesadores hace años que aparecen y los que hacen sistemas operativos tienen que hacer código especial para ver si están en un micro afectado y esquivarlo. Puede parecer chapuzas, pero es el estado de la industria desde hace años, no sólo en microprocesadores si no en un montón de componentes (placas base, controladoras RAID, controladoras de disco, tarjetas gráficas, PCI...). A decir verdad, muchas veces lo raro es que las cosas funcionen casi siempre bien.

Ahora, si alguien tiene interés; en la entrada http://es.wikipedia.org/wiki/TOP500 se recoge información acerca de la supercomputación. Pero no; mi intención era mucho más humilde y se resume en el párrafo de squirrel antes citado y a quien agradezco, una vez más, que nos haya informado porque, al tratarse de un hardware tan específico, no era fácil explicarlo con claridad para que todos lo pudiéramos entender medianamente bien.

Saludos cordiales,

Pedro Fernández
--

P.S. El llamado TOP 500 recoje abundante información sobre los supercomputadores; y en la entrada proporcionada de la Wikipedia, pero en su versión en inglés, se dice:

Number of systems
==============
By number of systems as of June 2012:

Top processor architecture

* x86-64 - 435
Intel Xeon - 372 <----- Esta es la tecnología afectada, pero no la de AMD, y sólo para SO de 64 bit
AMD Opteron - 62

* Power - 58

* SPARC - 5

En cuanto a lo de las GPU; lo que comentas es de cajón dado que usan tecnología de 256 bit o más, pero ese sería otro tema porque su utilidad es específica en el cálculo de coma flotante.

opinar

Texto puro

  • No se permiten etiquetas HTML.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.
By submitting this form, you accept the Mollom privacy policy.