Dvije ranjivosti koje su se najviše objavljivale u 2010-ima bile su vrlo usko povezane jedna s drugom. Umjesto da budu sigurnosne ranjivosti u softveru, Spectre i Meltdown su ranjivosti u temeljnom dizajnu CPU-a zbog kojih je problem teže riješiti. Sami problemi su posebno ozbiljni, omogućujući otkrivanje memorije iz drugih aplikacija i operacijskog sustava.
Pregled
CPU-i koriste nevjerojatno napredne dizajne za postizanje najviših performansi, uključujući tehnike uključujući spekulativno izvršenje i predviđanje grananja. Špekulativno izvršenje je mjesto gdje CPU počinje pokrenuti proces prije nego što zna da li treba, u pokušaju da uštedi vrijeme kada utvrdi da treba. Predviđanje grane je podskup spekulativnog izvršenja kojim se pokušava predvidjeti ishod procesa, a zatim počinje računati sljedeći korak na temelju te predviđene vrijednosti dopuštajući CPU-u da izvrši niz instrukcija iz narudžba.
Spectre ranjivost proizlazi iz implementacije ove dvije značajke. Omogućuje aplikaciji da probije tehnike izolacije memorije ugrađene u većinu modernih softvera, omogućujući otkrivanje memorije, uključujući tajne poput lozinki i ključeva za šifriranje. Jedan od problema sa Spectreom je taj što se podacima može pristupiti iz aplikacija koje nemaju nikakve sigurnosne propuste jer je potreban samo zlonamjerni program.
Ranjivost Meltdowna temelji se na nekim memorijskim tehnikama, kao i na gore spomenutom spekulativnom sustavu izvršavanja. Koristi "uvjet utrke" između izvršenja procesa i provjere privilegija i omogućuje zlonamjernom programu pristup memoriji drugih aplikacija i operativnog sustava.
Savjet: "Uvjet utrke" je problem u kojem bi se jedan zadatak trebao oslanjati na drugi, ali se ispravan redoslijed izvršenja ne provodi. To može rezultirati prvim pokretanjem "drugog" procesa i korištenjem neinicijalizirane memorije koja je trebala sadržavati rezultat "prvog" procesa, propuštajući prethodni sadržaj te memorije. U ovom konkretnom slučaju, proces se ne bi trebao pokrenuti dok provjera dopuštenja ne potvrdi da je dopuštena, ali provjera dopuštenja može se dogoditi kao druga zbog optimizacije izvedbe.
Učinci
Sredinom 2017. više je timova neovisno otkrilo i privatno prijavilo Meltdown i Spectre proizvođačima CPU-a koji su razvili zakrpe. Zbog zakrpa koje ciljaju na optimizaciju performansi, na kraju su smanjili performanse CPU-a do 30% u najgorem slučaju, uz smanjenje učinka od 2-14% više reprezentativno za ljude iskustva.
Ranjivosti su utjecale na mnoge x86 procesore, IBM POWER CPU i neke ARM-temeljene procesore. Meltdown utječe na hardver koji se obično nalazi na osobnim računalima, kao i na poslužiteljima u oblaku. Spectre utječe na osobna računala, poslužitelje u oblaku i mobilne uređaje. Svi Intelovi CPU-ovi od 1995. do sredine 2018. bili su osjetljivi na probleme (s izuzetkom Itanium i Atom linija prije 2013.). AMD CPU-i nisu bili pod utjecajem Meltdowna, ali su bili ranjivi na Spectre.
Softverske zakrpe za ublažavanje posljedica su razvijene i puštene preko davatelja operativnih sustava koji rješavaju većinu problema. Od sredine 2018. Intel je ažurirao svoj CPU dizajn kako bi uključio hardverska ublažavanja problema.
Oba problema mogu se iskoristiti putem zlonamjernih web-stranica s izrađenim JavaScriptom, pa je to zaista važno provjerite jesu li sigurnosne zakrpe instalirane na svakom sustavu, čak i ako će doći do gubitka performansi teška. Nažalost, problemi se ne mogu riješiti jednom zakrpom, jer su oni iznimno složeni problemi s dubokim integracijom u hardver, sigurnosne zakrpe će se nastaviti s vremenom kao i novije varijante otkrio.