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.