Si të mbroni serverin tuaj kundër dobësive të shkrirjes dhe spektrit
Çfarë janë Meltdown dhe Spectre?
Më 4 janar 2018, u zbuluan dobësi të shumta në hartimin e CPU-ve moderne. Duke përfituar nga disa optimizime të performancës së procesorit, këto dobësi—të quajtura Meltdown dhe Spectre—u mundësojnë sulmuesve të detyrojnë aplikacionet të zbulojnë përmbajtjen e sistemit dhe kujtesës së aplikacionit kur manipulohen siç duhet. . Këto sulme funksionojnë sepse privilegjet normale që kontrollojnë sjelljen brenda procesorit përmbyset përmes ndërveprimit të veçorive si ekzekutimi spekulativ, parashikimi i degëve, ekzekutimi jashtë rendit dhe ruajtja në memorie.
Meltdown u zbulua në CVE-2017-5715.
Për informacion më të detajuar, shikoni se si funksionon spektri? seksionet më poshtë.
A jam i prekur nga Meltdown dhe Spectre?
Meltdown dhe Spectre prekin shumicën e procesorëve modernë. Optimizimet e procesorit që përdoren në këto dobësi janë një veçori thelbësore e dizajnit të shumicës së CPU-ve, që do të thotë se shumica e sistemeve janë të cenueshme derisa të korrigjohen në mënyrë specifike. Kjo përfshin kompjuterë desktop, serverë dhe instanca llogaritëse që veprojnë në mjediset Cloud.
Arna për të mbrojtur kundër Meltdown po lëshohen nga shitësit e sistemit operativ. Ndërsa përditësimet po lëshohen gjithashtu për Spectre, ai përfaqëson një klasë të tërë dobësish, kështu që ka të ngjarë të kërkojë korrigjim më të gjerë të vazhdueshëm.
Në mjediset cloud dhe të virtualizuara, ofruesit do të duhet të përditësojnë infrastrukturën bazë për të mbrojtur mysafirët e tyre. Përdoruesit do të duhet të përditësojnë serverët e tyre për të zbutur ndikimin brenda sistemeve operative të ftuar.
Si mund ta mbroj veten?
Mbrojtja e plotë kundër kësaj klase cenueshmërie ka të ngjarë të kërkojë ndryshime në dizajnin e CPU-së.
Fatkeqësisht, për shkak se këto arna ndikojnë në rutinat e optimizimit brenda procesorit, arnimet zbutëse mund të ulin performancën e serverit tuaj. Shkalla e ngadalësimit varet shumë nga lloji i punës që kryhet, me proceset intensive I/O që përjetojnë ndikimin më të madh.
Statusi aktual i korrigjimit të zbutjes
Në kohën e shkrimit (9 janar 2018), shpërndarjet Linux kanë filluar të shpërndajnë arna, por asnjë shpërndarje ende nuk është rregulluar plotësisht.
Shpërndarjet që kanë lëshuar përditësime të kernelit me zbutje të pjesshme (të rregulluara për Meltdown DHE varianti 1 i Spectre) përfshijnë:
- CentOS 7: kernel 3.10.0-693.11.6
- CentOS 6: kernel 2.6.32-696.18.7
Shpërndarjet që kanë lëshuar përditësime të kernelit me zbutje të pjesshme (të rregulluara për Meltdown) përfshijnë:
- Fedora 27: kernel 4.14.11-300
- Fedora 26: kernel 4.14.11-200
- Ubuntu 17.10: kernel 4.13.0-25-gjenerike
- Ubuntu 16.04: kernel 4.4.0-109-gjenerike
- Ubuntu 14.04: kernel 3.13.0-139-gjenerike
- Debian 9: kernel 4.9.0-5-amd64
- Debian 8: kernel 3.16.0-5-amd64
- Debian 7: kernel 3.2.0-5-amd64
- Fedora 27 Atomike: kernel 4.14.11-300.fc27.x86_64
- CoreOS: kernel 4.14.11-coreos
Nëse kerneli juaj është përditësuar në të paktën versionin që korrespondon me sa më sipër, disa përditësime janë aplikuar.
Sistemet operative që nuk kanë lëshuar ende kernele me zbutje përfshijnë:
- FreeBSD 11.x
- FreeBSD 10.x
Ubuntu 17.04, i cili po arrin fundin e jetës më 13 janar 2018 nuk do të marrë arna. Përdoruesit inkurajohen fuqimisht të përditësojnë ose migrojnë.
Paralajmërim: Ne ju rekomandojmë fuqimisht që të përditësoni ose migroni për çdo version që ka arritur në fund të jetës. Këto publikime nuk marrin përditësime kritike të sigurisë për dobësitë si Meltdown dhe Spectre, të cilat mund të vënë në rrezik sistemet dhe përdoruesit tuaj.
Për shkak të ashpërsisë së kësaj dobësie, ne rekomandojmë aplikimin e përditësimeve kur ato bëhen të disponueshme në vend që të prisni për një grup të plotë të korrigjimeve. Kjo mund t'ju kërkojë të përmirësoni kernelin dhe të rindizni më shumë se një herë në ditët dhe javët në vijim.
Si t'i aplikoj përditësimet?
Për të përditësuar serverët tuaj, ju duhet të përditësoni softuerin e sistemit pasi të jenë të disponueshme arnimet për shpërndarjen tuaj. Mund ta përditësoni duke ekzekutuar menaxherin e rregullt të paketave për të shkarkuar versionin më të fundit të kernelit dhe më pas duke rindezur serverin tuaj për të kaluar në kodin e korrigjuar.
Shënim: Ky artikull është shkruar për të qenë përgjithësisht i zbatueshëm dhe agnostik i platformës. Nëse po përdorni DigitalOcean si ofruesin tuaj të pritjes dhe po ekzekutoni një Droplet më të vjetër, mund t'ju duhet të kryeni një hap shtesë përpara se të filloni.
Sistemi i menaxhimit të kernelit të vjetër të DigitalOcean përdorte kernele të menaxhuara nga jashtë që mund të ndryshoheshin në panelin e kontrollit. Nëse Droplet-i juaj përdor këtë sistem, do t'ju duhet ta konfiguroni atë që të përdorë menaxhimin e brendshëm të kernelit përpara se të vazhdoni (Droplet-et e reja e përdorin këtë sistem automatikisht). Për të kontrolluar nëse keni nevojë të përditësoni në kernelet e brendshme dhe për të mësuar se si të bëni kalimin, lexoni artikullin tonë Si të përditësoni një kernel të serverit DigitalOcean.
Për serverët Ubuntu dhe Debian, mund të përditësoni softuerin tuaj të sistemit duke rifreskuar indeksin tuaj të paketës lokale dhe më pas duke përmirësuar softuerin e sistemit tuaj:
- sudo apt-get update
- sudo apt-get dist-upgrade
Për serverët CentOS, mund të shkarkoni dhe instaloni softuer të përditësuar duke shkruar:
- sudo yum update
Për serverët Fedora, përdorni më mirë mjetin dnf
:
- sudo dnf update
Pavarësisht nga sistemi operativ, pasi të aplikohen përditësimet, rindizni serverin tuaj për të kaluar në kernelin e ri:
- sudo reboot
Pasi serveri të jetë përsëri në linjë, identifikohuni dhe kontrolloni kernelin aktiv kundrejt listës së mësipërme për t'u siguruar që kerneli juaj është përmirësuar. Kontrolloni shpesh për përditësime të reja për t'u siguruar që të merrni arna të tjera pasi ato bëhen të disponueshme.
Kontekst shtesë
Familja e dobësive Meltdown dhe Spectre shfrytëzon veçoritë që përmirësojnë performancën brenda procesorëve modernë. Një kombinim i veçorive të procesorit si ekzekutimi spekulativ, kontrolli i privilegjeve, ekzekutimi jashtë rendit dhe ruajtja e CPU-së lejon aksesin e leximit në vendndodhjet e memories që duhet të jenë jashtë kufijve. Rezultati është se programet e paprivilegjuar mund të detyrohen të zbulojnë të dhëna të ndjeshme nga memoria e tyre ose të aksesojnë memorien e privilegjuar nga kerneli ose aplikacione të tjera.
Si funksionon Meltdown?
Dobësia Meltdown funksionon duke mashtruar një procesor që të lexojë një vendndodhje memorie jashtë kufijve duke përfituar nga të metat në një optimizim të CPU-së të quajtur ekzekutim spekulativ. Ideja e përgjithshme funksionon si kjo:
- Bëhet një kërkesë për një vendndodhje të paligjshme memorie.
- Bëhet një kërkesë e dytë për të lexuar me kusht një vendndodhje të vlefshme memorie nëse kërkesa e parë përmbante një vlerë të caktuar.
- Duke përdorur ekzekutimin spekulativ, procesori përfundon punën në sfond për të dyja kërkesat përpara se të kontrollojë që kërkesa fillestare është e pavlefshme. Sapo procesori të kuptojë se kërkesat përfshijnë memorie jashtë kufijve, ai me saktësi i mohon të dyja kërkesat. Megjithëse rezultatet nuk kthehen nga procesori pasi kodi i kontrollit të privilegjit identifikon aksesin në memorie si të pavlefshëm, të dyja vendndodhjet e aksesuara mbeten në memorien e procesorit.
- Tani është bërë një kërkesë e re për vendndodhjen e vlefshme të memories. Nëse kthehet shpejt, atëherë vendndodhja ishte tashmë në memorien e CPU-së, që tregon se kërkesa e kushtëzuar më parë ishte ekzekutuar. Përdorimi i përsëritur i këtyre kushteve mund të përdoret për të kuptuar vlerën në vendndodhjet e kujtesës jashtë kufijve.
Meltdown përfaqëson një cenueshmëri specifike që mund të korrigjohet.
Si funksionon Spectre?
Spectre funksionon gjithashtu duke mashtruar një procesor për të keqpërdorur ekzekutimin spekulativ për të lexuar vlera të kufizuara. Njoftimet e zbulimit përshkruajnë dy variante me nivele të ndryshme kompleksiteti dhe ndikimi.
Për variantin 1 të Spectre, procesori mashtrohet për të ekzekutuar në mënyrë spekulative një lexim përpara se të zbatohet një kontroll i kufijve. Së pari, sulmuesi inkurajon procesorin të arrijë në mënyrë spekulative për një vendndodhje memorie përtej kufijve të tij të vlefshëm. Pastaj, si Meltdown, një udhëzim shtesë ngarkon me kusht një adresë ligjore në cache bazuar në vlerën jashtë kufijve. Koha për sa kohë duhet për të marrë më pas adresën ligjore zbulon nëse ajo ishte ngarkuar në cache. Kjo, nga ana tjetër, mund të zbulojë vlerën e vendndodhjes së kujtesës jashtë kufijve.
Varianti 2 i Spectre është më i ndërlikuari si për t'u shfrytëzuar ashtu edhe për t'u zbutur. Përpunuesit shpesh ekzekutojnë instruksione në mënyrë spekulative edhe kur hasin një deklaratë të kushtëzuar që ende nuk mund të vlerësohet. Ata e bëjnë këtë duke hamendësuar rezultatin më të mundshëm të kushtëzimit duke përdorur një mekanizëm të quajtur parashikimi i degëve.
Parashikimi i degës përdor historinë e ekzekutimeve të mëparshme përmes një shtegu kodi për të zgjedhur një shteg për të ekzekutuar në mënyrë spekulative. Kjo mund të përdoret nga sulmuesit për të përgatitur një procesor për të marrë një vendim spekulativ të pasaktë. Për shkak se historia e përzgjedhjes së degës nuk ruan referenca absolute për vendimin, një procesor mund të mashtrohet duke zgjedhur një degë në një pjesë të kodit edhe kur trajnohet në një tjetër. Kjo mund të shfrytëzohet për të zbuluar vlerat e kujtesës jashtë gamës së pranueshme.
konkluzioni
Spectre dhe Meltdown përfaqësojnë dobësi serioze të sigurisë; potenciali i plotë i ndikimit të tyre të mundshëm është ende në zhvillim.
Për të mbrojtur veten, jini vigjilentë në përditësimin e softuerit të sistemit tuaj operativ pasi arnimet lëshohen nga shitësit dhe vazhdoni të monitoroni komunikimet në lidhje me dobësitë Meltdown dhe Spectre.