Els “bugs” Meltdown i Spectre

En els darrers dies els sistemes operatius Windows, Linux i MacOS han implementat tots els pegats de seguretat que alteren significativament com els sistemes operatius gestionen la memòria virtual per protegir-se d’una falla fins ara no revelada. Això és més que destacable; ha quedat clar que Microsoft i els desenvolupadors del kernel de Linux han estat informats d’algun problema de seguretat no públic i s’han afanyat per corregir-lo. Però ningú no sabia prou be quin era el problema, donant lloc a molta especulació i experimentació basant-se en els llançaments dels pegats de seguretat per intentar conèixer l’arrel del mateix.

Ara sabem quin és problema, el “defecte”. I no és pas una bona notícia, perquè en realitat hi ha dos tipus de defectes amb impacte similar, i només un d’ells té una solució senzilla.

Els defectes han estat anomenats Meltdown i Specter. Meltdown va ser descobert independentment per tres grups: investigadors de la Universitat Tècnica de Graz a Àustria, la firma de seguretat alemanya Cerberus Security i el projecte Zero de Google. Spectre va ser descobert de manera independent pel Projecte Zero i l’investigador independent Paul Kocher.

Bàsicament, tots dos atacs s’aprofiten del fet que els processadors executen instruccions de forma especulativa. Tots els processadors moderns utilitzen l’execució especulativa en major o menor mesura; suposaran que, per exemple, una determinada condició serà veritable i executarà les instruccions en conseqüència. Si després resulta que la condició era falsa, les instruccions executades especulativament es descarten com si no tinguessin cap efecte.

Tanmateix, mentre els resultats descartats d’aquesta execució especulativa no alteren el resultat d’un programa, fan canvis en les característiques arquitectòniques de més baix nivell dels processadors. Per exemple, l’execució especulativa pot carregar dades a la memòria cau, encara que les dades mai no s’han carregat inicialment ni intencionadament. La presència de les dades en el caché es pot detectar, ja que accedir-hi serà una mica més ràpid que si no estigués en memòria cau. També es poden provar altres estructures de dades al processador, com ara el predictor de branques, i s’han mesurat el seu rendiment, que també es pot utilitzar per revelar informació confidencial.

 

Meltdown

El primer problema, Meltdown, és el que va estimular l’allau dels pegats del sistema operatiu. Utilitza l’execució especulativa per filtrar les dades del nucli als programes d’usuari habituals.
En aquest article es pot trobar un resum d’alt nivell de com els sistemes operatius virtualitzen la memòria del sistema, l’ús de pàgines de taules per assignar-los des de les adreces de memòria virtual a adreces físiques, com els processadors emmagatzemen en memòria cau aquestes assignacions i com es comparteix el mapejat de la taula del kernel entre processos per tal de maximitzar el valor d’aquesta memòria cau especial.

Tot i que tots els processadors moderns, inclosos els d’Intel, AMD i ARM, realitzen especulacions sobre accessos de memòria, els processadors d’Intel ho fan d’una manera especialment agressiva. La memòria del sistema operatiu té metadades associades que determinen si es pot accedir des dels programes d’usuari o si està restringit a l’accés des del nucli. Els xips Intel permeten que els programes d’usuari utilitzen especulativament les dades del kernel, i la verificació d’accés (per veure si la memòria del nucli és accessible per a un programa d’usuari) es du a terme un temps després que la instrucció es comença a executar. L’execució especulativa està bloquejada correctament, però es pot mesurar l’impacte que té l’especulació en el caché del processador.

Els investigadors afirmen que no han estat capaços d’executar el mateix tipus d’especulació basada en la memòria del kernel en els processadors AMD o ARM, encara que esperen tenir una certa forma d’utilitzar aquesta especulació ofensivament. Encara que AMD ha declarat específicament que els seus xips no especulen sobre les adreces del nucli d’aquesta manera, ARM ha dit que alguns dels seus dissenys poden ser vulnerables, i els empleats d’ARM han aportat pegats a Linux per protegir contra Meltdown.

Per a sistemes amb xips Intel, l’impacte és bastant greu, ja que potser qualsevol memòria del nucli pot ser llegida pels programes d’usuari. És aquest atac el que els pegats del sistema operatiu estan dissenyats per arreglar. Funciona eliminant l’assignació del nucli compartit, un disseny del sistema operatiu que ha estat un pilar des de principis de la dècada de 1990 a causa de l’eficiència que proporciona. Sense aquest mapping compartit, s’elimina la possibilitat que els programes d’usuari provoquin les lectures especulatives de la memòria del kernel, i per tant no hi ha manera de filtrar la informació del kernel. Però té un cost: fa que cada crida al kernel sigui una mica més lenta, ja que cada canvi del nucli ara requereix que la pàgina del kernel es torni a carregar.

L’impacte d’aquest canvi variarà moltíssim en funció de la càrrega de treball. Les aplicacions que depenen molt dels programes d’usuaris i que no inicien el nucli sovint tindran molt poc impacte; Els jocs, per exemple, haurien de veure molt poc canvi. Però les aplicacions que connecten al sistema operatiu extensivament, normalment per realitzar operacions de disc o xarxa, poden veure un impacte molt més important, per exemple els programes de processament d’imatge i so que recorren constantment a la CPU per a feines de compressió/descompressió de dades.

Spectre

Els propietaris dels sistemes AMD i ARM tampoc no dormiran tranquils, gràcies a Spectre. Spectre és un atac més general, basat en un ventall més ampli de característiques d’execució especulatives. En el document es descriu l’ús de l’especulació al voltant de, per exemple, les comprovacions de límits de matriu i les instruccions de les branques per filtrar la informació, amb atacs de prova amb èxit en els sistemes AMD, ARM i Intel. Els atacs d’Spectre es poden utilitzar tant per filtrar la informació del nucli als programes d’usuari, com també dels hipervisors dels maquinaris que hostatjen sistemes virtualitzats envers aquests. Gran patiment per a les granjes de servidors i grans centres de càlcul.

A més, Specter no ofereix cap solució directa. L’especulació és essencial per als processadors d’alt rendiment i, si bé hi pot haver maneres limitades de bloquejar certs tipus d’execució especulativa, no es coneixen tècniques generals que defensaran contra qualsevol fuga d’informació deguda a l’execució especulativa.

Les peces sensibles del codi es podrien modificar per incloure “instruccions de serialització” -instruccions que obliguen al processador a esperar que acabi totes les lectures de memòria pendents i, per tant, evitar especulacions basades en les lectures i escriptures -que impedeixin la majoria d’especulacions. ARM ha introduït aquesta instrucció en resposta a Spectre, i els processadors x86 d’Intel i AMD també. Però aquestes instruccions haurien de ser molt acuradament col·locades, sense cap forma fàcil d’identificar la ubicació correcta.

A curt termini, sembla que la majoria dels sistemes tindran en breu pegats per Meltdown. Almenys per a Linux i Windows, aquests pegats permeten als usuaris finals desactivar-los si aixó ho prefereixen. Els usuaris més vulnerables són probablement proveïdors de serveis en el núvol; Meltdown i Spectre poden utilitzar-se, en principi, per a atacs posteriors contra hipervisors, cosa que facilita als usuaris maliciosos atacar també les màquines virtuals.

Per als usuaris d’escriptori típics, el risc és menys significatiu. Tot i que tant Meltdown com Spectre poden tenir valor en l’ampliació de l’abast d’un defecte existent, cap d’ells no és suficient per, per exemple, sortir d’un navegador web.

A llarg termini, esperem que una futura arquitectura Intel ofereixi algun tipus de solució, ja sigui evitant especulacions sobre aquest tipus d’accés a la memòria problemàtica o fent que el permís d’accés a la memòria sigui més ràpid, de manera que aquest interval de temps entre llegir la memòria del nucli i comprovar que el procés té permís per llegir la memòria del nucli, s’elimina.

Raspberry Pi 

Els mini ordinadors Raspberry Pi són segurs: utilitzen processadors basats en dissenys ARM més antics que no fan ús de l’execució especulativa.

D’una banda, aquesta és una de les raons per les quals fins i tot els més nous ordinadors Raspberry Pi no són tan ràpids com la majoria d’altres PC moderns. D’altra banda, Raspberry Pi va convertir accidentalment els seus nuclis ARM11, ARM Cortex-A7 i ARM Cortex-A53 en una característica de seguretat.

Tot i que les computadores Raspberry Pi no són exactament les PC més ràpides, podeu carregar-les amb una gran varietat de programari basat en GNU / Linux i utilitzar-los com a ordinadors de propòsit general per a tasques com ara navegació web, edició de documents o reproducció multimèdia. Fins i tot podeu utilitzar-los com a servidors.

Pot ser que hagin estat dissenyats per a educadors i estudiants, però també han demostrat ser populars amb gent que busca crear consoles de jocs retro, centres multimèdia i molt més.

Traduït lliurement i adaptat per EA3WR de l’original de Peter Bright (ArsTechnica)

 
 

**************************

Fes te soci d’URCAT, l’Associació Nacional dels Radioaficionats Catalans!

URCAT, Unió de Radioaficionats de Catalunya és totalment INDEPENDENT i NO pertany ni té cap tipus de vinculació formal a cap federació d’associacions, organització, associació ni altres clubs establertes a nivell nacional, estatal o internacional però manté excel·lents rel·lacions amb totes les federacions, associacions i clubs de radioaficionats amb presència a Catalunya.

**************************

 

 

Please follow and like us:
0

Deixa un comentari