TRŽIŠTE<>
022018<><>

Meltdown i Spectre

Globalno topljenje

Zima je došla, a sa njom i nesvakidašnje otopljenje kome se zaista niko nije nadao. Otkriće dve ranjivosti modernih procesora veliki je događaj za čitav računarski i informatički kontekst.

Kada smo krajem prošle godine sa zadovoljstvom slagali utiske o događajima u svetu informacionih tehnologija, često smo pominjali povratak AMD-a na veliku scenu bitke procesora. Ryzen arhitektura i njene implementacije donele su dugo očekivanu radost ljubiteljima AMD-ovih proizvoda, ali i utabale put povratku ravnoteže u segmentu koji je bio najvažnija tema u svetu informacionih tehnologija prve dekade tekućeg milenijuma. I tek što se rasplamsala nada u nesporno zanimljiviji period istorije mikroprocesora, hladna zavesa potencijalno najvećeg tehničkog izazova našeg vremena spustila se na čitav procesorski univerzum. Zima je došla, a sa njom i nesvakidašnje otopljenje kome se zaista niko nije nadao.

Novogodišnja slavlja su još trajala, trpeze bile još uvek prepune đakonija, a pokloni se pakovali i delili širom planete, kada je internetom zaparao talas vesti o bezbednosnim problemima modernih procesora. Prve vesti su, kao što to obično biva, veoma šturo govorile o problemu sa Intelovim procesorima, čiji su primerci proglašeni nebezbednim usled postojanja više mehanizama za pristup podacima koji bi morali biti zaštićeni. Slobodan pad akcija američke korporacije je bio najmanji od problema koji će, nakon objave da je Google, zapravo, odgovoran za pronalazak bezbednosnih propusta, dobiti centralno mesto na svim tehnološkim portalima. Intel je zapao u veliki problem, a sa njim i čitava industrija. No, krenimo redom.

Poslednji džedaj

Evolucija modernog procesora ima veliki broj kritičnih tačaka u kojima su tržište, pioniri ove oblasti i menadžeri velikih kompanija odlučivali o pravcu i smeru kretanja čitave industrije. U nekoliko navrata, manje kompanije i pretendenti na procesorski presto su pokušavali da promenama osnovnih paradigmi pronađu način da tržišnu javnost ubede kako je njihov pristup bolji, brži i efikasniji. Ipak, kraj prošlog milenijuma je doneo stabilnost oivičenu u x86 arhitekturi američke kompanije Intel. S vremenom je ova arhitektura postala toliko dominantna da su je i mnogi konkurenti prihvatili. Mnogi, ali ne svi. Čak je i američki Intel, u saradnji sa kompanijom Hewlett-Packard, podržavao arhitekturu koja se razvijala nezavisno od x86, poznatu pod imenom procesora koji ju je koristio, Itanium.

U vreme razvoja prvih superskalarnih procesora, namenjenih masovnoj upotrebi u personalnim računarima, a čiji je šampion bio originalni Pentium, u procesoru su se, kao temeljne, ustanovile funkcionalnosti protočne obrade (eng. pipeline) i predikcije grananja (eng. branch prediction). Ove tehnike su tadašnjim procesorima donele značajna ubrzanja u „krcanju” programskog kôda, što je i pokrenulo veće interesovanje za personalne računare devedesetih godina prošlog veka. Nove arhitekture su izlazile, svet je upoznao i MMX verziju originalnog Pentiuma, zatim Pentium II, Pentium III, a paralelno sa Intelovim razvojem rastao je i konkurent - kompanija AMD, koja se zajedno sa kompanijama VIA i Cyrix borila za prolaz međ’ velikane, i brzim vozom dospela u poziciju da proizvodi procesore koji su po performansama konkurentni onima iz dominantnog Intela, a povoljniji po ceni. Upravo na kraju prošlog milenijuma, u pripremi četvrte generacije Pentium linije, AMD je predstavio prvi proizvod svoje K7 arhitekture, Athlon, koji je temelj velikog broja događaja koji će uslediti u naredne, skoro dve decenije.

Upravo tih godina, kada je AMD snažno ugrozio Intelovu dominaciju, počele su naporne noći inženjera američke korporacije. Tražila su se brza i kvalitetna rešenja, a novac, navodno, nije bio problem. Pentium 4 je doživeo nekoliko svojih implementacija, a bilo mu je potrebno više od pet godina kako bi povratio poljuljano poverenje i religijsku poziciju dominantnog igrača u polju. Jednu od ključnih uloga u povratku na tron, odigrale su upravo tehnike ubrzavanja procesora na nivou protočne obrade i predviđanja grananja, koje su zacementirale metod po imenu spekulativno izvršavanje kao centralnu tačku istiskivanja performansi iz procesorskih arhitektura.

Špekulanti, maskirani prevaranti

Kako bi se razumelo spekulativno izvršavanje, čije iskorišćenje dovodi do problema s početka ove priče, potrebno je razumeti kako moderan procesor radi. Sa ciljem da se uproste ove paradigme, prihvatimo da je procesor jedinica koja izvršava dve karakteristične akcije: dohvat podataka iz memorije i izvršavanje instrukcija (računanje). Zahvaljujući brzom razvoju elektronike i tehnike proizvodnje procesorskih komponenata, brzina izvršavanja instrukcija je s vremenom rasla fantastičnim tempom, gotovo eksponencijalno. Sa druge strane, proces dohvatanja podataka nije rastao ni blizu pomenutim tempom. Kako je jaz između ove dve aktivnosti s vremenom postajao sve veći, a izvršavanja instrukcija ne može biti bez dohvata istih, inženjeri i konstruktori su napravili nešto što se zove sistem protočne obrade, u kom procesor dovlači instrukcije pre no što su mu zaista neophodne za izvršavanje. Sve ovo je moguće zahvaljujući pomenutom prediktoru grananja, koji zahvaljujući dugoj istoriji evolucije, ima popriličnu preciznost predviđanja. Ovaj element ima zadatak da predvidi tok kojim će kôd unutar jednog procesa obrade ići, i da u sistem protočne obrade „dovede” što veći broj instrukcija kako bi procesor uštedeo na čitanjima iz memorije. Kao smeštajna memorija za ovu namenu, koristi se keš (cache), brza memorija niskog nivoa kojoj procesor može da pristupa velikim brzinama, i u čitanju i u pisanju. Keš treba shvatiti kao ograničenu memoriju, po kapacitetu, jer prednost brzog pristupa važi samo dok je veličina ove memorije optimalna. Po pravilu, radi se o stotinama kilobajta ili megabajtima keš memorije.

Uz pomenutu keš memoriju, gde procesor smešta neophodne podatke za izvršavanje instrukcija, pomenuti sistem protočne obrade dolazi do izražaja. U arhitekturi modernog procesora, po pravilu se ne nalazi samo jedan sklop za izvršavanje, već više njih, što omogućava da u paraleli, u istom taktu, može da se izvrši više od jedne operacije. Tako delove svake instrukcije (dekodiraj instrukciju, dohvati parametre, izvrši izračunavanje, smesti rezultat) možemo preklopiti u sistemu protočne obrade, štedeći dragocene cikluse. Protočna obrada u procesoru je, kao i svaka fabrika, dobra samo ukoliko je puna. Za punjenje protočne obrade zadužen je upravo prediktor grananja.

Procesore, kao centralne jedinice obrade, dominantno koristi jedan specijalni program po imenu operativni sistem. Ovaj program, čija je centralna uloga posredovanje između hardvera i velikog broja aplikativnih programa, ima specifična prava pristupa memoriji procesora. Drugi procesi, koji nisu procesi operativnog sistema, nemaju privilegije pristupa svim aspektima memorije procesora, već samo onima za koje imaju dozvolu. Na ovaj način su razdvojeni sistemski i korisnički memorijski prostor. Procesor, zavisno od programa koji mu se obraća, dozvoljava određeni skup akcija. Tehnika „zamene uloga” naziva se promenom konteksta (eng. context switch) gde se sa korisničkog procesa „skače” na sistemski i obratno. Ipak, svaki put kada se „skoči” na kontekst jednog od ova dva procesa, potrebno je pročitati odgovarajuće parče memorije, kako bi se u kešu našli svi potrebni podaci. Kako smo rekli, čitanje memorije je „skupa” operacija, pa svaki dobar arhitekta procesora teži da uštedi sva moguća čitanja. Prilikom promene konteksta, Intel ima mehanizam kojim delove memorije sistema zapravo čuva u kontekstima korisničkih procesa, kako bi olakšao povratak natrag u svet operativnog sistema, bez potrebe čestog čitanja iste memorije.

Odličan trik za unapređenje performansi, zar ne? Tako smo i mi mislili, sve ove godine. Ipak, u dva nezavisna istraživanja, jedno na univerzitetu u Gracu u Austriji i drugo u Cirihu u Švajcarskoj, pokazano je da u pomenutom mehanizmu spekulativnog izvršavanja i promene konteksta između sistemskog i korisničkog procesa postoji prostor za zloupotrebu koji potencijalno ugrožava milijarde uređaja širom planete. Naime, prilikom spekulativnog izvršavanja, Intelov procesor ne proverava da li kôd pristupa delu memorije koji je sistemski ili korisnički. Ova provera se izvodi na samom kraju procesa (u četvrtoj tački), kada se odlučuje da li će se dozvoliti upis rezultata ili ne. Ipak, za vreme dok ovaj proces traje, dobro napisani zloćudni kôd u stanju je da pročita delove memorije kojima inače nema pravo pristupa. Ukoliko mu je dato dovoljno vremena, integracijom rezultata iz nekoliko ovakvih procesa, pomenuti kôd dobija pristup gotovo svakom parčetu memorije na napadnutom računaru.

U kovitlacu izazova

Prethodnih nekoliko decenija, bezbednost je bila jedan od najvažnijih aspekata računarstva. Sa velikom ozbiljnošću, pažljivo i posvećeno, komponente velikih sistema su slagane kako bi zaštitile osnovne postulate izolacije memorije, koji definišu koji proces sme da pristupa kojim delovima memorijskog prostora. Evolucijom ovog pristupa, danas imamo centre podataka u kojima svaki virtuelni procesor tačno zna kojim aspektima fizički pristupa, što omogućava da u istom centru možemo vrteti veliki broj aplikacija, na zajedničkom hardveru, bez problema sa sigurnošću i bezbednošću informacija pojedinačnih procesa. Ipak, kako su otkrivene ranjivosti modernih procesora zajedničke za arhitekture kompanija Intel, AMD i ARM, potencijalno ugroženi su i personalni računaru u domovima i kancelarijama, ali i serveri velikih farmi Facebooka, Amazona, Googlea, Microsofta, Alibabe i drugih.

Ove dve ranjivosti imaju imena, čak i prigodne logoe, koje možete pronaći na sajtu meltdownattack.com, gde se nalazi i pozamašan broj dodatnih informacija o ova dva (ili tri) izazova. Prvi u grupi ovih izazova nosi ime Meltdown (topljenje), a dobio ga je jer topi zidove koji štite memorijski prostor kojem zlonamerni korisnik ne bi mogao da pristupi. Tim koji je istraživao ovaj problem, a koji čine Werner Haas i Thomas Prescher iz nemačke kompanije Cyberus Technology, odnosno Daniel Gruss, Moritz Lipp, Stefan Mangard i Michael Schwarz sa Tehnološkog univerziteta u Gracu, pokazao je ranjivosti Intelovih procesora na operativnim sistemima Linux, MacOSx i Windows. Ranjivosti su uočene i prilikom korišćenja virtuelizacije i popularnih kontejnera (eng. kernel-sharing sandbox solutions, containers) poput Dockera ili LXC-a. U izvršenim testovima pokazano je da se u slučaju upotrebe kontejnera može pristupiti podacima drugih kontejnera, ukoliko se nalaze na istom hardveru. Za potrebe pomenutog testa, korišćeni su desktop i laptop računari sa Intelovim procesorima, kao i Intel Xeon računari koji pogone EC2 instance na Amazon Web Services i DigitalOcean platformama. Prema rečima istraživača u objavljenom radu, prilikom „napada” nisu pristupali adresnim prostorima drugih korisnika na ovim cloud platformama, iz etičkih razloga.

Uspešni napadi su izvršeni na procesorima iz različitih generacija i arhitektura, od Celerona G540 do Xeona E5-2650 v4. Istraživači su pokušali da istovetne rezultate prikažu i na AMD i ARM procesorima, ali u tome nisu uspeli iz, kako sami navode, višestrukih razloga. U radu se navodi, između ostalog, da je primer koji je pokazao rezultate na Intelovim procesorima neadekvatan za AMD i ARM procesore, ali da bi fokusiraniji pristup mogao da pruži više uspeha.

U zaključku svog rada na temu Meltdowna, autori predlažu i rešenje prigodnog imena Kaiser, koje u većini slučajeva dovodi do rešenja ovog problema. U većini, ali ne u svim. Autori su istakli i da su kontaktirali proizvođače testiranih procesora, te da se zahvaljuju Intelu na profesionalnosti i načinu reakcije, kao i ARM-u na brzoj reakciji nakon dopisa. Kako saznajemo, pečevi koji koriste ovo rešenje su već isporučeni na veliki broj uređaja širom planete, za Linux, Windows, macOS X i iOS platforme.

Ozbiljniji od dva pronađena problema u modernim procesorima, Spectre, svoje je ime dobio po spekulativnom izvršavanju. Pojednostavljeno, Spectre navodi procesor da spekulativno izvrši naredbe koje se ne bi desile u regularnom izvršavanju kôda, otvarajući vrata za druge, zloslutne procese – napadače, sa ciljem da pristupe zaštićenom memorijskom prostoru. U slučaju ove ranjivosti, autori su uspeli da prikažu uspešne napade na Intel, AMD (uključujući Ryzen) i ARM procesorima (iz Samsunga i Qualcomma).

Razlike između Spectre i Meltdown ranjivosti postoje. Za početak, Meltdown ne koristi prediktor grananja. Zatim, radi se o problemu koji je karakterističan za Intelovu arhitekturu procesora, u kojoj spekulativno izvršavanje može „otopiti zid” kojim se brani zaštićeni memorijski prostor. Dakle, Meltdown napad omogućava korisničkom procesu da pristupi sistemskom memorijskom prostoru i da kešira informacije, dok sistem ne shvati da se radi o pogrešnom pristupu i stane sa izvršavanjem neželjenih instrukcija.

Implikacije Spectre ranjivosti su različite na različitim arhitekturama procesora. Kako neki među njima, poput AMD-ovog Ryzena, imaju inovativan pristup ovoj tehnici, potencijalno postoje specifični Spectre pristupi za svaku od arhitektura. Upravo zbog ovoga, rešavanje ove ranjivosti nije nimalo jednostavno. Srećom, jednako je komplikovano njihovo iskorišćavanje. Ipak, to što je probijanje ove barijere teško, ne čini ga nemogućim, a svakako ga čini privlačnim za armiju hakera širom planete, koji su objavljivanjem ovih radova dobili i podstrek da kopaju tamo gde je do sada retko ko pokušavao da pronađe „tajni ulaz” – u hardveru.

Iluzija besplatnog ručka

Prvu iluziju besplatnog ručka kod procesa smo otkrili krajem prve milenijumske dekade, kada su Intel i AMD već uveliko isporučivali višejezgarne procesore. Tada smo podsećali da se softveraši ne smeju osloniti na hardver, da će svaka nova generacija doneti određenu napredak u performansama i da je potrebno da shvate da se radi o drugačijoj utakmici. Višejezgarni procesori, konkurentno izvršavanje i paralelno izvršavanje su, zaista, bili potpuno drugačije utakmice od prethodnih. U međuvremenu, softver je napredovao, iako bismo mogli reći da je to bilo u manjoj meri od one koju smo očekivali. Višejezgarnost je iskorišćena od strane operativnih sistema i multimedijalnih igara, kao i nekih popularnih korisničkih aplikacija, ali ne i od većine.

Ako smo tada tvrdili da se radi o drugoj utakmici, problemi sa Meltdown i Spectre ranjivostima nam ukazuju da se od januara 2018. godine radi o – drugoj igri. Naime, do pre samo mesec dana, verovalo se da je softver mesto gde treba ugrađivati sigurnosne mehanizme za zaštitu osetljivih podataka, jer je na hardverskom nivou sve mirno i sigurno. Sada znamo da taj argument nikako ne stoji. Iako nas proizvođači hardvera uveravaju da u svoje proizvode ugrađuju sve bolje i kvalitetnije bezbednosne sisteme kako se generacije menjaju, na ovom primeru smo uočili da postoje fundamentalni problemi koji se ne mogu rešiti jednostavnim zakrpama u softveru.

Dodatno, kada se u obzir uzme nestabilnost zakrpa koje su isporučene na Windows platformama, i za Intelove i AMD-ove procesore, koje bacaju vaše ljubimce u zagrljaj plavog ekrana u slučaju neuspeha, a smanjuju performanse u slučaju uspeha, mora se priznati da je neposredna budućnost ovih izazova i te kako siva. Istaknuti borac za slobodni softver i jedan od kreatora Linuxa kao operativnog sistema, Linus Torvalds, osudio je Intelove zakrpe za Linux kao neozbiljne. Naravno, ukoliko poznajete Torvaldsov način obraćanja, jasno vam je da smo iskoristili eufemizam. Posle dugog puta u kome su proizvođači procesora uživali baveći se tržištem, sada se moraju ponovo baviti sobom. Bezbednosni problemi koji mogu narasti iz ova dva izazova su nesagledivi i hitar odgovor čitave zajednice je neophodan, ako ni zbog čega drugog, onda da bi se hakeri-namernici oterali od ranjenika.

Odgovor tržišta

Uprkos tome što je njihovo ime direktno asocirano sa pomenuta dva izazova, Intel se u čitavoj situaciji poneo poprilično profesionalno, ako izuzmemo činjenicu da je krajem prošle godine izvršni direktor prodao deo svojih deonica. Iako ta dva događaja ne moraju biti direktno povezana, mnogi su pomislili kako je to bio potez smanjivanja štete. Očekivano, Intelove deonice su bile u padu od početka januara, iako su se u međuvremenu poprilično oporavile, nakon što su usledile prve reakcije. Ipak, čini se da priča za Intel nije ni blizu gotova, jer će najveći broj problema doći iz enterprise sveta, gde ova kompanija ima gotovo 95 odsto tržišta. Centri podatka imaju dominantno Intelove procesore, te će gubici u performansama, koji idu od 5 do 15 odsto u mnogim analizama, i te kako morati da se nadoknade, a to samo znači tužbe u pravcu Intela.

AMD je na početku krize delovao dosta dobro. Istraživači nisu pronašli da Meltdown uspeva da iznenadi AMD-ove procesore, što je AMD odmah iskoristio, rekavši da njihova arhitektura ne dozvoljava ovaj napad. Takođe, AMD je brzo izašao u javnost sa saopštenjem da jedna od dve Spectre varijante takođe nije u stanju da ugrozi njihove procesore usled arhitekturalnih razlika u odnosu na Intelove procesore. Mnogi smatraju da je ovo bila greška, koja će privući hakere da pronađu probleme i u AMD-ovim procesorima, koji bi mogao poprilično da plati, ukoliko bi u tome hakeri zaista bili uspešni.

Apple je veoma interesantna kompanija u ovom kontekstu, jer poseduje i personalne računare sa Intelovim čipovima i telefone i tablete sa čipovima zasnovanim na ARM arhitekturama. Ipak, u pitanju je kompanija sa najčvršćim stiskom nad kompletnim hardverskim i softverskim stekom i najboljim odzivom softverskih zakrpa od svih platformi, te se čini da će najlakše spustiti zakrpe na svoje uređaje. To ih, pak, neće spasiti od pokrenutih tužbi udruženih korisnika koji ih tuže za nemar kod prodaje iPhone i drugih iuređaja krajem prošle godine, iako su znali da se radi o uređajima sa ranjivošću koja nije rešena, a za koju je jedino rešenje popravak koji umanjuje performanse. Priča je tek počela i neće se skoro završiti.

• • •

Otkriće dve ranjivosti modernih procesora je veliki događaj za čitav računarski i informatički kontekst. Do radova koji otkrivaju pomenute probleme procesora, IT je bio faktor koji omogućava niz neverovatnih dostignuća. Svi smo bili fokusirani na globalno umrežene uređaje (IoT) i takozvanu veštačku inteligenciju (AI), ne razmišljajući da bi problemi mogli biti locirani na hardveru, koji je oduvek bio bastion bezbednosti.

Kuriozitet ovog pronalaska nije samo činjenica da su istraživači koji su otkrili nedostatke uglavnom sa evropskih univerziteta, već da je ono što su oni uspeli združenim radom, samostalno uspeo da pokaže i dokaže momak po imenu Jan Horn, 22-godišnji Nemac sa adresom u Cirihu, koji je kao deo Google Project Zero programa istraživao obimnu Intelovu dokumentaciju i pronašao oba nedostatka, gotovo bez asistencije. Ovaj vanredno talentovani momak je mogao da bude centralna osoba ove neverovatno važne priče, ali mu mesto dajemo na kraju, kao šlag na torti. Zahvaljujući njegovom radu, kako na otkrivanju problema, tako i u komunikaciji sa Intelovim inženjerima još od leta prošle godine, najveći broj uređaja sa Intelovim čipovima će biti otporan na Meltdown napade vrlo brzo.

Posledice Meltdown i Spectre izazova neće biti samo u poslovnim rezultatima kompanija čiji su procesori ranjivi. Pravi rezultat ova dva izazova će biti povećanje pažnje u izradi hardvera, na mikroarhitekturalnom nivou, što će generisati neka nova dostignuća i pokrenuti jednu novu granu u evoluciji procesora. Da bi krenuo napred, često prvo moraš – otići natrag.

Momir ĐEKIĆ

 
 AKTUELNOSTI
CES 2018, 9–12. januar, Las Vegas

 TRŽIŠTE
Meltdown i Spectre
Šta mislite o ovom tekstu?

 PRIMENA
Mejkerska subkultura

 KOMPJUTERI I FILM
Black Panther
Early Man
Filmovi, ukratko

 VREMENSKA MAŠINA
Terminator 2, Riva TNT i MASH

 PRST NA ČELO
Google prop’o
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera