{"id":28862,"date":"2023-06-05T09:59:00","date_gmt":"2023-06-05T07:59:00","guid":{"rendered":"https:\/\/www.kaspersky.es\/blog\/?p=28862"},"modified":"2023-06-08T10:42:22","modified_gmt":"2023-06-08T08:42:22","slug":"transient-cpu-eflags","status":"publish","type":"post","link":"https:\/\/www.kaspersky.es\/blog\/transient-cpu-eflags\/28862\/","title":{"rendered":"Nueva vulnerabilidad de hardware en procesadores Intel"},"content":{"rendered":"<p>Un grupo de investigadores de la Universidad de Maryland en los EE. UU. y la Universidad de Tsinghua en China publicaron un <a href=\"https:\/\/arxiv.org\/pdf\/2304.10877.pdf\" target=\"_blank\" rel=\"nofollow noopener\">art\u00edculo cient\u00edfico<\/a> que documenta un nuevo m\u00e9todo de ataque de canal lateral que explota una vulnerabilidad de hardware previamente desconocida en los procesadores Intel. Aunque la vulnerabilidad parece afectar a los \u00faltimos procesadores del fabricante de chips, resulta m\u00e1s eficaz en el ataque contra modelos m\u00e1s antiguos que tambi\u00e9n est\u00e1n expuestos a la vulnerabilidad <a href=\"https:\/\/www.kaspersky.es\/blog\/spectre-meltdown-in-practice\/26793\/\" target=\"_blank\" rel=\"nofollow noopener\">Meltdown<\/a>. Esta investigaci\u00f3n ser\u00eda puramente de inter\u00e9s cient\u00edfico de no ser por un aspecto: los atacantes roban informaci\u00f3n confidencial al cambiar los datos del <a href=\"https:\/\/es.wikipedia.org\/wiki\/Registro_de_estado\" target=\"_blank\" rel=\"nofollow noopener\">registro de estado<\/a>.<\/p>\n<h2>En castellano, por favor<\/h2>\n<p>Las vulnerabilidades del procesador de hardware vinculadas a la ejecuci\u00f3n especulativa de instrucciones han sido objeto de investigaci\u00f3n durante <a href=\"https:\/\/www.kaspersky.es\/blog\/spectre-meltdown-in-practice\/26793\/\" target=\"_blank\" rel=\"noopener\">m\u00e1s de cinco a\u00f1os<\/a>. En resumen, todos los ataques propuestos se pueden resumir de la siguiente manera: la CPU se ve obligada de alguna forma a leer datos a los que el usuario no deber\u00eda tener acceso. Imag\u00ednate que el programa de los atacantes no tiene acceso a la clave de cifrado utilizada para proteger los datos confidenciales. Si le indicamos a la CPU que \u201clea la clave de cifrado en una direcci\u00f3n determinada\u201d, esta no seguir\u00e1 la instrucci\u00f3n. La ayuda llega (al atacante) en forma de <a href=\"https:\/\/es.wikipedia.org\/wiki\/Ejecuci%C3%B3n_especulativa\" target=\"_blank\" rel=\"nofollow noopener\">ejecuci\u00f3n especulativa<\/a> de instrucciones, una caracter\u00edstica importante de las CPU modernas, que existe desde hace casi tres d\u00e9cadas: para acelerar las cosas, en lugar de esperar a que termine una instrucci\u00f3n, el procesador ejecuta la siguiente en paralelo.<\/p>\n<p>Si la primera instrucci\u00f3n comprueba los derechos de acceso a informaci\u00f3n sensible, en teor\u00eda no deber\u00eda permitir la ejecuci\u00f3n de la siguiente instrucci\u00f3n para leer esta informaci\u00f3n. Pero ya es demasiado tarde: la siguiente instrucci\u00f3n se ejecuta de forma especulativa. Ten en cuenta que a\u00fan no tenemos acceso a estos datos, pero la CPU s\u00ed. En el caso de las vulnerabilidades conocidas como <a href=\"https:\/\/www.kaspersky.es\/blog\/spectre-meltdown-in-practice\/26793\/\" target=\"_blank\" rel=\"nofollow noopener\">Spectre<\/a>, los datos se cargan temporalmente en la memoria cach\u00e9 de la CPU, pero as\u00ed no se pueden leer. Sin embargo, s\u00ed se pueden leer a trav\u00e9s de canales laterales; por ejemplo, ejecutando repetidamente una instrucci\u00f3n, cuyo tiempo de procesamiento var\u00eda seg\u00fan los datos en la cach\u00e9. Repetir una operaci\u00f3n de este tipo muchas (incluso miles de) veces permite a los atacantes recuperar datos simplemente observando la rapidez o lentitud con la que se ejecuta un comando aparentemente inofensivo.<\/p>\n<p>Somos conscientes de que esta descripci\u00f3n \u201csimple\u201d todav\u00eda suena complicada. El nuevo art\u00edculo es a\u00fan m\u00e1s desconcertante, especialmente porque los autores decidieron no realizar una descripci\u00f3n detallada del ataque. El siguiente diagrama lo describe en su totalidad:<\/p>\n<div id=\"attachment_28864\" style=\"width: 1354px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-28864\" class=\"wp-image-28864 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/88\/2023\/06\/08095545\/transient-cpu-EFLAGS-overview.jpg\" alt=\"Descripci\u00f3n general del canal lateral temporal de ejecuci\u00f3n transitoria.\" width=\"1344\" height=\"733\"><p id=\"caption-attachment-28864\" class=\"wp-caption-text\">Descripci\u00f3n general del canal lateral temporal de ejecuci\u00f3n transitoria. <a href=\"https:\/\/arxiv.org\/pdf\/2304.10877.pdf\" target=\"_blank\" rel=\"nofollow noopener\">Fuente. <\/a><\/p><\/div>\n<p>Intentemos esclarecer el asunto. EFLAGS es un registro de bandera en el procesador Intel que realiza un seguimiento del estado operativo de la CPU. Puede <a href=\"http:\/\/www.c-jump.com\/CIS77\/ASM\/Instructions\/I77_0070_eflags_bits.htm\" target=\"_blank\" rel=\"nofollow noopener\">almacenar<\/a> el resultado de los c\u00e1lculos, en particular si es igual a cero (la llamada bandera cero o ZF). Despu\u00e9s, la magia entra en juego: imag\u00ednate que un compa\u00f1ero tuyo piensa en un n\u00famero del 1 al 10 y le pides que no lo comparta con nadie. Contin\u00faas diciendo los n\u00fameros del 1 al 10 (buscando cualquier se\u00f1al que pueda delatar a tu compa\u00f1ero), pero este no quiere compartir la respuesta correcta contigo y responde cada vez con la palabra \u201ccrisantemo\u201d. Sin embargo, cuando pronuncias el n\u00famero correcto, tarda un poco m\u00e1s en decir \u201ccrisantemo\u201d en comparaci\u00f3n con las otras veces.<\/p>\n<p>Algo similar ocurre en este nuevo ataque: realizamos numerosos c\u00e1lculos con datos sensibles. Todos estos c\u00e1lculos se hacen de forma especulativa. El resultado se escribe en la bandera ZF (igual o no igual a cero). No podemos saber directamente el estado de esta, pero despu\u00e9s ejecutamos una instrucci\u00f3n JCC bastante in\u00fatil (en concreto la instrucci\u00f3n JZ: \u201csaltar si es cero\u201d), que se ejecuta un poco m\u00e1s lento si acertamos. Y es este retraso en la respuesta lo que constituye la vulnerabilidad.<\/p>\n<h2>\u00bfD\u00f3nde est\u00e1 el problema?<\/h2>\n<p>El aspecto m\u00e1s interesante de este ataque es que no funciona por s\u00ed solo. Para garantizar la ejecuci\u00f3n especulativa de las instrucciones requeridas, los delincuentes deben explotar una vulnerabilidad m\u00e1s. El documento que estamos analizando utiliza la vulnerabilidad <a href=\"https:\/\/es.wikipedia.org\/wiki\/Meltdown_(vulnerabilidad)\" target=\"_blank\" rel=\"nofollow noopener\">Meltdown<\/a>, descubierta en el 2018, que brinda acceso a informaci\u00f3n que est\u00e1 fuera del alcance de los intrusos. Como resultado, los datos confidenciales se leyeron con un 100 % de eficiencia en todas las CPU antiguas afectadas por esta vulnerabilidad (el estudio utiliz\u00f3 Intel Core i7 de sexta y s\u00e9ptima generaci\u00f3n). Aunque el experimento fall\u00f3 en las CPU de d\u00e9cima generaci\u00f3n, tambi\u00e9n experimentan cierto retraso a la hora de ejecutar una instrucci\u00f3n determinada del conjunto JCC.<\/p>\n<p>En realidad, los tipos de ataques a\u00fan m\u00e1s vers\u00e1tiles como Spectre, que roban informaci\u00f3n de la memoria cach\u00e9 de la CPU, tienen una aplicaci\u00f3n bastante restringida. Pero al menos en su caso, resultaba obvio la necesidad de respuesta: la probabilidad de un ataque avanzado dirigido a datos cr\u00edticos era distinta de cero. En cuanto al nuevo art\u00edculo, estamos lidiando m\u00e1s con la idea de que, si funciona, se aplica a los procesadores Intel m\u00e1s antiguos.<\/p>\n<p>Pero la noticia en s\u00ed es significativa: existe un nuevo mecanismo de canal lateral para extraer datos utilizando el registro de estado de la bandera. No se puede descartar que en el futuro esta estrategia, combinada con alguna otra vulnerabilidad, tambi\u00e9n afecte a las nuevas CPU. O tal vez todo se resuelva antes de que veamos un nuevo ataque: despu\u00e9s de todo, la dependencia del tiempo de ejecuci\u00f3n de la instrucci\u00f3n en los datos es un problema bastante serio. Existe toda una subdisciplina de la criptograf\u00eda que se ocupa de la protecci\u00f3n de los algoritmos de cifrado contra los <a href=\"https:\/\/en.wikipedia.org\/wiki\/Timing_attack\" target=\"_blank\" rel=\"nofollow noopener\">ataques temporales<\/a>.<\/p>\n<p>En cualquier caso, la investigaci\u00f3n con toda la informaci\u00f3n sobre las CPU modernas sigue en curso. Por fortuna, ejecutar ataques contra vulnerabilidades de hardware resulta tan dif\u00edcil como comprenderlas. Y, aunque todav\u00eda no hemos visto nada que pueda aplicarse a gran escala, ser\u00eda prudente que los responsables de la seguridad de la informaci\u00f3n de las empresas que manejan datos altamente confidenciales tuvieran en cuenta estas amenazas y que, como m\u00ednimo, monitorizaran su evoluci\u00f3n.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"kesb-top3\">\n","protected":false},"excerpt":{"rendered":"<p>Te explicamos de forma breve y sencilla el nuevo m\u00e9todo avanzado de robo de datos que utiliza las funciones de las CPU modernas.<\/p>\n","protected":false},"author":665,"featured_media":28863,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2202,2754],"tags":[435,3559,784],"class_list":{"0":"post-28862","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-enterprise","9":"tag-cpu","10":"tag-procesadores","11":"tag-vulnerabilidades"},"hreflang":[{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/transient-cpu-eflags\/28862\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/transient-cpu-eflags\/25691\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/transient-cpu-eflags\/21110\/"},{"hreflang":"en-us","url":"https:\/\/usa.kaspersky.com\/blog\/transient-cpu-eflags\/28346\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/transient-cpu-eflags\/25991\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/transient-cpu-eflags\/26367\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/transient-cpu-eflags\/35326\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/transient-cpu-eflags\/48229\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/transient-cpu-eflags\/20650\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/transient-cpu-eflags\/21345\/"},{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/transient-cpu-eflags\/30181\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/transient-cpu-eflags\/26296\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/transient-cpu-eflags\/31998\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/transient-cpu-eflags\/31686\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.es\/blog\/tag\/vulnerabilidades\/","name":"vulnerabilidades"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/posts\/28862","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/users\/665"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/comments?post=28862"}],"version-history":[{"count":1,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/posts\/28862\/revisions"}],"predecessor-version":[{"id":28865,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/posts\/28862\/revisions\/28865"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/media\/28863"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/media?parent=28862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/categories?post=28862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.es\/blog\/wp-json\/wp\/v2\/tags?post=28862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}