{"id":20650,"date":"2023-06-02T11:47:49","date_gmt":"2023-06-02T09:47:49","guid":{"rendered":"https:\/\/www.kaspersky.fr\/blog\/?p=20650"},"modified":"2023-06-02T11:47:49","modified_gmt":"2023-06-02T09:47:49","slug":"transient-cpu-eflags","status":"publish","type":"post","link":"https:\/\/www.kaspersky.fr\/blog\/transient-cpu-eflags\/20650\/","title":{"rendered":"De nouvelles vuln\u00e9rabilit\u00e9s hardware affectent les processeurs Intel"},"content":{"rendered":"<p>Les chercheurs des universit\u00e9s du Maryland aux \u00c9tats-Unis et de Tsinghua en Chine ont publi\u00e9 un <a href=\"https:\/\/arxiv.org\/pdf\/2304.10877.pdf\" target=\"_blank\" rel=\"nofollow noopener\">rapport scientifique<\/a> qui d\u00e9crit une nouvelle m\u00e9thode d\u2019attaque par canal auxiliaire qui exploite une vuln\u00e9rabilit\u00e9 hardware jusqu\u2019alors inconnue des processeurs Intel. M\u00eame si la vuln\u00e9rabilit\u00e9 ne semble concerner que les derniers processeurs du fabricant de puces, l\u2019attaque est plus efficace si elle cible les mod\u00e8les plus anciens qui sont aussi expos\u00e9s \u00e0 la vuln\u00e9rabilit\u00e9 <a href=\"https:\/\/www.kaspersky.fr\/blog\/spectre-meltdown-in-practice\/18496\/\" target=\"_blank\" rel=\"nofollow noopener\">Meltdown<\/a>. Ce rapport n\u2019aurait qu\u2019un int\u00e9r\u00eat purement scientifique si ce n\u2019est pour un d\u00e9tail\u00a0: les cybercriminels volent les informations sensibles en modifiant les donn\u00e9es du <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Registre_d%27%C3%A9tat\" target=\"_blank\" rel=\"nofollow noopener\">registre d\u2019\u00e9tat<\/a>.<\/p>\n<h2>Clairement et simplement, s\u2019il vous pla\u00eet<\/h2>\n<p>Les vuln\u00e9rabilit\u00e9s hardware du processeur li\u00e9es \u00e0 l\u2019ex\u00e9cution sp\u00e9culative des instructions ont fait l\u2019objet de diverses \u00e9tudes <a href=\"https:\/\/www.kaspersky.fr\/blog\/spectre-meltdown-in-practice\/18496\/\" target=\"_blank\" rel=\"nofollow noopener\">depuis plus de cinq ans<\/a>. Pour simplifier autant que possible, toutes les attaques propos\u00e9es peuvent \u00eatre r\u00e9sum\u00e9es de la fa\u00e7on suivante\u00a0: le processeur est forc\u00e9 tant bien que mal \u00e0 lire les donn\u00e9es auxquelles l\u2019utilisateur ne devrait pas avoir acc\u00e8s. Imaginez cette situation th\u00e9orique\u00a0: le programme des cybercriminels n\u2019a pas acc\u00e8s \u00e0 la cl\u00e9 de chiffrement utilis\u00e9e pour prot\u00e9ger les donn\u00e9es sensibles. Si nous donnons l\u2019ordre au processeur de \u00ab\u00a0lire la cl\u00e9 de chiffrement d\u2019une adresse concr\u00e8te\u00a0\u00bb, l\u2019instruction ne sera pas suivie. <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Ex%C3%A9cution_sp%C3%A9culative\" target=\"_blank\" rel=\"nofollow noopener\">L\u2019ex\u00e9cution sp\u00e9culative<\/a> des instructions vole au secours des cybercriminels\u00a0; il s\u2019agit d\u2019une fonctionnalit\u00e9 importante des processeurs modernes qui existe depuis pr\u00e8s de trente ans. Pour acc\u00e9l\u00e9rer les choses, au lieu d\u2019attendre qu\u2019une instruction finisse, le processeur ex\u00e9cute la suivante en parall\u00e8le.<\/p>\n<p>Si la premi\u00e8re instruction v\u00e9rifie les droits d\u2019acc\u00e8s aux informations sensibles, elle devrait en th\u00e9orie ne pas autoriser l\u2019ex\u00e9cution de l\u2019instruction suivante qui autoriserait la lecture des informations. Pourtant, c\u2019est trop tard\u00a0: l\u2019instruction suivante est d\u00e9j\u00e0 ex\u00e9cut\u00e9e de fa\u00e7on sp\u00e9culative. Il convient de souligner que nous n\u2019avons pas encore acc\u00e8s aux donn\u00e9es contrairement au processeur qui lui peut y acc\u00e9der. Dans le cas des vuln\u00e9rabilit\u00e9s connues comme <a href=\"https:\/\/www.kaspersky.fr\/blog\/spectre-meltdown-in-practice\/18496\/\" target=\"_blank\" rel=\"nofollow noopener\">Spectre<\/a>, les donn\u00e9es sont temporairement charg\u00e9es dans le cache du processeur mais ne peuvent pas simplement \u00eatre lues. Pourtant, elles peuvent \u00eatre lues via las canaux auxiliaires. Par exemple, en ex\u00e9cutant une instruction de fa\u00e7on r\u00e9p\u00e9t\u00e9e puisque le temps de traitement d\u00e9pend des donn\u00e9es dans le cache. La r\u00e9p\u00e9tition de l\u2019op\u00e9ration plusieurs (voire des milliers de) fois permet aux cybercriminels de r\u00e9cup\u00e9rer les donn\u00e9es en regardant si les commandes envoy\u00e9es, et apparemment inoffensives, sont ex\u00e9cut\u00e9es plus ou moins rapidement.<\/p>\n<p>Nous savons que cette description \u00ab\u00a0simplifi\u00e9e\u00a0\u00bb est encore compliqu\u00e9e \u00e0 comprendre. Ce nouveau rapport est encore plus d\u00e9concertant puisque les auteurs ont d\u00e9cid\u00e9 de ne pas prendre le temps de d\u00e9crire l\u2019attaque en d\u00e9tail. Le diagramme ci-dessous en dessine les grands lignes\u00a0:<\/p>\n<div id=\"attachment_20651\" style=\"width: 1354px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/93\/2023\/06\/02113515\/transient-cpu-EFLAGS-overview.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-20651\" class=\"size-full wp-image-20651\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/93\/2023\/06\/02113515\/transient-cpu-EFLAGS-overview.jpg\" alt=\"Aper\u00e7u du temps d'ex\u00e9cution transitoire du canal auxiliaire.\" width=\"1344\" height=\"733\"><\/a><p id=\"caption-attachment-20651\" class=\"wp-caption-text\">Aper\u00e7u du temps d\u2019ex\u00e9cution transitoire du canal auxiliaire. <a href=\"https:\/\/arxiv.org\/pdf\/2304.10877.pdf\" target=\"_blank\" rel=\"noopener nofollow\">Source<\/a>.<\/p><\/div>\n<p>\u00a0<\/p>\n<p>Essayons de comprendre. EFLAGS est un registre d\u2019\u00e9tat du processeur Intel qui conserve tous les statuts d\u2019exploitation du processeur. Il peut <a href=\"http:\/\/www.c-jump.com\/CIS77\/ASM\/Instructions\/I77_0070_eflags_bits.htm\" target=\"_blank\" rel=\"nofollow noopener\">conserver<\/a> les r\u00e9sultats des calculs, notamment s\u2019ils sont \u00e9gaux \u00e0 z\u00e9ro (ce que l\u2019on appelle l\u2019indicateur de z\u00e9ro ou ZF). C\u2019est \u00e0 ce moment-l\u00e0 que la magie op\u00e8re\u00a0: imaginez qu\u2019un de vos coll\u00e8gues pense \u00e0 un chiffre entre 1 et 10 et qu\u2019il doit s\u2019en souvenir et ne le dire \u00e0 personne. Vous dites tous les chiffres entre 1 et 10, en esp\u00e9rant remarquer une r\u00e9action de sa part \u00e0 un moment donn\u00e9, mais il ne veut pas vous dire quelle est la bonne r\u00e9ponse et vous r\u00e9pond \u00e0 chaque fois \u00ab\u00a0chrysanth\u00e8me\u00a0\u00bb. Pourtant, lorsque vous prononcez le bon chiffre il met plus de temps \u00e0 dire \u00ab\u00a0chrysanth\u00e8me\u00a0\u00bb que les autres fois.<\/p>\n<p>Quelque chose de similaire se passe avec cette nouvelle attaque. Nous r\u00e9alisons plusieurs calculs avec les donn\u00e9es sensibles. Tous ces calculs sont faits de fa\u00e7on sp\u00e9culative. Les r\u00e9sultats sont \u00e9crits avec l\u2019indicateur ZF (qu\u2019ils soient ou non \u00e9gaux \u00e0 0). Nous ne pouvons pas directement conna\u00eetre le statut de cet indicateur. Puis nous ex\u00e9cutons une instruction JCC assez inhabituelle (notamment l\u2019instruction JZ, \u00ab\u00a0<em>jump if zero<\/em>\u00ab\u00a0) qui s\u2019ex\u00e9cute un peu lentement si nous avons bien devin\u00e9\u00a0! C\u2019est ce retard mesurable dans la r\u00e9ponse qui constitue la vuln\u00e9rabilit\u00e9.<\/p>\n<h2>Ce n\u2019est pas encore un probl\u00e8me<\/h2>\n<p>L\u2019aspect le plus int\u00e9ressant de cette attaque est qu\u2019elle ne fonctionne pas seule. Afin de garantir que l\u2019ex\u00e9cution sp\u00e9culative des instructions requises est possible, les cybercriminels doivent exploiter une autre vuln\u00e9rabilit\u00e9. Le document dont nous parlons exploite la vuln\u00e9rabilit\u00e9 <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Meltdown_(vuln%C3%A9rabilit%C3%A9)\" target=\"_blank\" rel=\"nofollow noopener\">Meltdown<\/a>, d\u00e9couverte en 2018, qui autorise volontiers les intrus \u00e0 acc\u00e9der aux informations interdites. Par cons\u00e9quent, les donn\u00e9es sensibles sont lues avec une fiabilit\u00e9 de 100 % sur tous les anciens processeurs concern\u00e9s par cette vuln\u00e9rabilit\u00e9 (l\u2019\u00e9tude a utilis\u00e9 les processeurs Intel Core i7 de sixi\u00e8me et septi\u00e8me g\u00e9n\u00e9ration). M\u00eame si l\u2019\u00e9tude a \u00e9chou\u00e9 avec les processeurs de dixi\u00e8me g\u00e9n\u00e9ration, ces derniers avaient aussi un certain retard lorsqu\u2019ils ex\u00e9cutaient une instruction particuli\u00e8re du set JCC.<\/p>\n<p>En r\u00e9alit\u00e9, les types d\u2019attaques encore plus versatiles, comme Spectre qui vole les informations du cache du processeur, ont une application beaucoup plus limit\u00e9e. Au moins, dans ce cas, il \u00e9tait \u00e9vident qu\u2019il fallait faire quelque chose\u00a0: la probabilit\u00e9 de souffrir d\u2019une attaque avanc\u00e9e qui cible les donn\u00e9es critiques est non nulle. Quant \u00e0 ce nouveau rapport, il s\u2019agit l\u00e0 d\u2019une id\u00e9e qui, si elle fonctionne, concerne plut\u00f4t les anciens processeurs Intel.<\/p>\n<p>Pourtant la nouvelle est importante\u00a0: il y a d\u00e9sormais un nouveau m\u00e9canisme du canal auxiliaire qui permet d\u2019extraire les donn\u00e9es en utilisant le registre du statut de l\u2019indicateur. \u00c0 l\u2019avenir, il ne peut \u00eatre exclu que cette approche pourrait aussi affecter les nouveaux processeurs si elle est associ\u00e9e \u00e0 une autre vuln\u00e9rabilit\u00e9. Peut-\u00eatre que tout sera r\u00e9solu avant qu\u2019il y ait une nouvelle attaque. Apr\u00e8s tout, la d\u00e9pendance du temps d\u2019ex\u00e9cution de l\u2019instruction aux donn\u00e9es est un probl\u00e8me assez grave. Il y a une sous-discipline de la cryptographie qui traite la protection des algorithmes de chiffrement dans les <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Attaque_temporelle\" target=\"_blank\" rel=\"nofollow noopener\">attaques temporelles<\/a>.<\/p>\n<p>Dans tous les cas, des recherches sont en cours pour \u00e9tudier les processeurs modernes en d\u00e9tail. Heureusement, l\u2019ex\u00e9cution d\u2019une attaque qui exploite les vuln\u00e9rabilit\u00e9s hardware est tout aussi difficile que sa compr\u00e9hension. M\u00eame si nous n\u2019avons pas encore vu quelque chose qui pourrait \u00eatre ex\u00e9cut\u00e9 \u00e0 grande \u00e9chelle, les experts en s\u00e9curit\u00e9 informatique des entreprises qui g\u00e8rent des donn\u00e9es extr\u00eamement sensibles auraient int\u00e9r\u00eat \u00e0 prendre ce facteur en consid\u00e9ration et \u00e0 le consid\u00e9rer comme une menace, et devraient au moins suivre son \u00e9volution.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"kesb-top3\">\n","protected":false},"excerpt":{"rendered":"<p>Explication courte et en langage clair d\u2019une m\u00e9thode avanc\u00e9e utilis\u00e9e pour voler les donn\u00e9es en exploitant les fonctionnalit\u00e9s des processeurs modernes. <\/p>\n","protected":false},"author":665,"featured_media":20652,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2112,3150],"tags":[290,3317,322],"class_list":{"0":"post-20650","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-processeur","11":"tag-vulnerabilites"},"hreflang":[{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/transient-cpu-eflags\/20650\/"},{"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":"es","url":"https:\/\/www.kaspersky.es\/blog\/transient-cpu-eflags\/28862\/"},{"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":"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.fr\/blog\/tag\/vulnerabilites\/","name":"Vuln\u00e9rabilit\u00e9s"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/posts\/20650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/users\/665"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/comments?post=20650"}],"version-history":[{"count":3,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/posts\/20650\/revisions"}],"predecessor-version":[{"id":20655,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/posts\/20650\/revisions\/20655"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/media\/20652"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/media?parent=20650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/categories?post=20650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.fr\/blog\/wp-json\/wp\/v2\/tags?post=20650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}