URL: https://linuxfr.org/news/automne-saison-chaude-chez-intel Title: Automne, saison chaude chez Intel Authors: David Marec ZeroHeure, Ysabeau đŸ§¶, Nils Ratusznik, M5oul, Davy Defaud et palm123 Date: 2019ćčŽ11月25æ—„T23:53:17+01:00 License: CC By-SA Tags: intel, sĂ©curitĂ©, zombieload, debian et fedora Score: 62 Mardi 12 novembre, Arte diffuse le concert du Bal des enragĂ©s au Helfest 2019. L’attention du public ainsi dĂ©tournĂ©e, Intel en profite pour lancer une vague de correctifs, [77 correctifs](https://www.intel.com/content/www/us/en/security-center/default.html), un grand nombre de CVE (des failles) y est dĂ©voilĂ©. Les failles concernent les processeurs eux‐mĂȘmes (et microcontrĂŽleurs) et les micrologiciels trop nombreux qui tournent dans vos cartes‐mĂšres. ---- [Blog Intel](https://blogs.intel.com/technology/2019/11/ipas-november-2019-intel-platform-update-ipu) [Annonce FreeBSD TSX](https://www.freebsd.org/security/advisories/FreeBSD-SA-19:26.mcu.asc) [Annonce FreeBSD MCEPSC](https://www.freebsd.org/security/advisories/FreeBSD-SA-19:25.mcepsc.asc) [Linux, vulnĂ©rabilitĂ©s matĂ©rielles](https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/index.html) ---- # MatĂ©riel Fin mai 2019, Intel dĂ©voilait [une faille](https://nvd.nist.gov/vuln/detail/CVE-2019-11091) autour de sa technologie [MDS](https://software.intel.com/security-software-guidance/insights/deep-dive-intel-analysis-microarchitectural-data-sampling). MDS est une optimisation qui permet de remplir des *petites structures temporaires* (*micro‐architecturaux*) lors des opĂ©rations `load`, `fill` et `store`. Lorsque le code d’une branche est rencontrĂ©, le mĂ©canisme de prĂ©diction va exĂ©cuter le code en avance sans attendre le rĂ©sultat de la branche et ainsi remplir ces structures. Consultez ce [diagramme](https://mdsattacks.com/diagram.html) pour mieux vous le reprĂ©senter. En cas d’invalidation de la branche, ces structures ne sont pas vidĂ©es. ExploitĂ©e par le biais dĂ©sormais cĂ©lĂšbre de l’attaque par canal auxiliaire d’exĂ©cution spĂ©culative — _speculative execution side channel_ —, la faille permet trois attaques : [RIDL, _Fallout_](https://mdsattacks.com/) et _[zombieload](https://zombieloadattack.com)_. Pour les contrer, les dĂ©veloppeurs du noyau Linux ont d’abord introduit le [paramĂštre de dĂ©marrage](https://www.kernel.org/doc/html/v5.2/admin-guide/kernel-parameters.html) `mds`. Enfin, parce que, bon, ça commence Ă  bien faire, la version 5.2 amĂšne le paramĂštre `mitigation` qui permettra Ă  terme d’activer ou non une bien belle collection de contre‐mesures processeur. Cette fois, Intel remet le couvert avec la technologie [_TSX Asynchronous Abort_ (TAA)](https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/tsx_async_abort.html), liĂ©e aux extensions TSX dĂ©jĂ  abordĂ©es lors de faille [Lazy‐FPU](https://linuxfr.org/news/faille-lazy-fpu-state-restore). Souvenez‐vous, il est notĂ© Ă  propos de ces extensions que « ce serait presque _Ă©tudiĂ© pour_ ». L’exploitation de la faille repose aussi sur des registres dits « micro‐architecturaux ». De fait, les correctifs du mois de mai n’ont corrigĂ© qu’une partie du problĂšme... La contre‐mesure repose sur le dĂ©tournement d’une instruction obsolĂšte, ou annexe, pour *nettoyer* les registres concernĂ©s par la faille. Ceci implique une mise Ă  jour du microcode **et** du systĂšme, ce dernier devant appeler Ă  point nommĂ© cette instruction. En cas d’annulation de transaction TSX, les Ă©critures effectuĂ©es au cours de la transaction sont annulĂ©es et les registres restaurĂ©s. Mais, lorsqu’une annulation en cours est asynchrone, une opĂ©ration `load` peut encore se terminer et lire ces registres micro‐architecturaux pour les faire passer Ă  la branche exĂ©cutĂ©e de maniĂšre spĂ©culative. Sous Linux, le paramĂštre d’amorçage `tsx_async_abort=off|full` a Ă©tĂ© ajoutĂ© pour gĂ©rer les contre‐mesures. La directive `tsx=off|on|auto` autorisera au non les extensions TSX. Vous pouvez combiner ces deux variables. Ce n’est pas tout, une autre faille _[Jump Conditional Code Erratum](https://www.intel.com/content/dam/support/us/en/documents/processors/mitigations-jump-conditional-code-erratum.pdf)_, toujours liĂ©e Ă  cette complexitĂ© micro‐architecturale, est annoncĂ©e. Une sĂ©rie d’instructions appelĂ©es *micro‐ops*, est mise en cache (structure DSB) et dĂ©codĂ©e en dehors de sa chaĂźne de traitement. Seulement l’une de ces instructions (JCC) peut provoquer un comportement indĂ©fini lorsqu’elle est mal alignĂ©e. La contre‐mesure consiste Ă  Ă©viter que toute instruction de saut conditionnel soit mise en cache DSB, d’oĂč de nombreux retours sur le traitement standard et une perte de performance significative. Évidemment, Intel recommande donc de mettre Ă  jour les microcodes de ses processeurs via les outils de vos distributions et systĂšmes d’exploitation : * [devcpu-data](https://www.freshports.org/sysutils/devcpu-data/), pour FreeBSD ; * [intel-microcode](https://packages.debian.org/sid/intel-microcode), pour Debian ; * [microcode_ctl](https://pagure.io/microcode_ctl), pour la famille Red Hat (RHEL, Fedora et CentOS) ; * [intel-ucode](https://www.archlinux.org/packages/extra/any/intel-ucode/), pour Arch Linux. Sans lien avec MDS, la faille [_Machine check error erratum_](https://software.intel.com/security-software-guidance/insights/deep-dive-machine-check-error-avoidance-page-size-change) permet Ă  un attaquant de redĂ©marrer ou d’arrĂȘter un systĂšme. Une instruction `fetch` dans certaines conditions va lever par erreur l’exception `machine check` et provoquer un redĂ©marrage ou un arrĂȘt. Les cartes graphiques [ne sont pas Ă©pargnĂ©es](https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00260.html), via notamment le mode d’exĂ©cution en _ring‐2_, _System Management Mode_ (SMM), qui permet d’interrompre l’exĂ©cution normale du systĂšme d’exploitation pour passer la main Ă  un micrologiciel. On peut se demander si cette faille n’est pas liĂ©e au correctif du SDK SGX, qui a un mode d’exĂ©cution rĂ©servĂ© dans lequel aucun autre mode (ou _ring_) n’est censĂ© pouvoir accĂ©der. Sous Linux, vous trouverez dans `/sys/devices/system/cpu/vulnerabilities/` une liste des failles. Il suffit de lancer un `cat` sur chaque fichier de ce rĂ©pertoire pour obtenir le statut de votre processeur. Sous FreeBSD, la clef ` hw.mds_disable` active les contre‐mesures. # Micrologiciels (firmwares) Ces failles *matĂ©rielles* ont pour effet de bord de se propager aux micrologiciels fournis par Intel pour vos machines, qui vont permettre d’exploiter au mieux ces failles. Et ce, d’autant plus que le code, fermĂ©, de ces derniers, ne semble pas d’une qualitĂ© trĂšs Ă©levĂ©e, malgrĂ© des noms pompeux, avec _[trust](https://www.youtube.com/watch?v=KPvnvYxhU3Q)_ dedans. On trouve beaucoup d’erreurs de codage, telles que : * _insufficient session validation_ ; * _insufficient access control_ ; * _insufficient input validation_ ; * _unhandled exception_ ; * _stack overflow_ ; * _out of bound read_ ; * _memory corruption_ ; * _heap corruption_. ## IntelÂź Trusted Execution Engine (TXE), Technologie IntelÂź Platform Trust Elles sont supposĂ©es ĂȘtre les garantes du sytĂšme d’exploitation et des environnements que vous allez faire tourner, basĂ©es sur un module TPM, [trouĂ© lui aussi](http://tpm.fail/). Au menu, Ă©lĂ©vation de privilĂšges et fuite de donnĂ©es. Malheureusement, on commence Ă  trouver aussi ce genre de micrologiciels (*trusted*) sur des architectures non‐Intel, comme des systĂšmes monopuces (SoC) ARM. ## IntelÂź Active Management Technology (AMT) Un outil d’assistance et de maintenance Ă  distance, qui permet une Ă©lĂ©vation de privilĂšges. À distance. Il repose principalement sur l’Intel Management Engine ([IME](https://en.wikipedia.org/wiki/Intel_Management_Engine)). Autrefois planquĂ© dans le _hostbridge_, aujourd’hui dans le PCH. Pensez Ă  le dĂ©sactiver, si vous le pouvez. Un outil qui repose sur plein de petits modules : * _IntelÂź Converged **Security** and Manageability Engine_ ; * _IntelÂź **Securing** and Management Engine_ ; * _IntelÂź Server Platform Services_. ## Baseboard Management Controller C’est un autre outil de maintenance Ă  distance que l’on retrouve sur les serveurs et modules de calcul, dont une [version libre](https://github.com/Intel-BMC/openbmc) existe. Pour celui‐ci, il y a un risque critique d’élĂ©vation de privilĂšges, dĂ©ni de service et de fuite de donnĂ©es, via le rĂ©seau. ## UEFI Une vulnĂ©rabilitĂ© a Ă©tĂ© annoncĂ©e sur la famille Xeon. ## PĂ©riphĂ©riques Les microcodes des cartes rĂ©seau [Intel Ethernet 700 Series](https://www.intel.com/content/www/us/en/products/docs/network-io/ethernet/network-adapters/ethernet-700-series-video.html) permettent une Ă©valuation de privilĂšges, dĂ©ni de service et fuite de donnĂ©es. # Logiciel Le SDK IntelÂź SGX (_Software Guard Extensions_) permet une Ă©lĂ©vation de privilĂšges. TĂ©lĂ©charger la [derniĂšre version](https://01.org/intel-software-guard-extensions/downloads). [N. D. M. : le site _01.org_ appartient bien Ă  Intel.] # Bilan Intel affirme que la majoritĂ© de ces failles a Ă©tĂ© trouvĂ©e « en interne ». Pourtant, on trouve nombre de chercheurs indĂ©pendants remerciĂ©s dans les CVE. En fait, une bonne partie des failles dĂ©couvertes dans les microcodes me semble sortie d’un logiciel d’analyse de code. Malheureusement, une partie de ces contre‐mesures et mises Ă  jour, surtout celles concernant les micrologiciels, devront ĂȘtre apportĂ©es par les constructeurs, les fournisseurs de cartes. Les machines dĂ©diĂ©es au marchĂ© des particuliers risquent d’attendre longtemps... Greg Kroah‐Hartman a conclu lors de l’[Open Source Summit Europe](https://events19.linuxfoundation.org/events/open-source-summit-europe-2019/) : vous allez devoir choisir entre la sĂ©curitĂ© et la performance. Car, dĂ©sactiver l’_hyperthreading_, les extensions TSX, retirer des ÎŒops du cache induit une importante perte de performance. Notez que si la dĂ©sactivation de l’[_hyperthreading_](https://linuxfr.org/users/davidmarec/journaux/rumeurs-sur-l-hyper-threading-tlbleed) rend plus difficile la plupart de ces attaques, cela ne suffit gĂ©nĂ©ralement pas. De mĂȘme, la distribution alĂ©atoire de l’espace d’adressage noyau ([KASLR](https://fr.wikipedia.org/wiki/Address_space_layout_randomization)) n’empĂȘche pas l’exploitation de ces failles.

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /