Divas no visvairāk publiskotajām ievainojamībām 2010. gados bija ļoti cieši saistītas viena ar otru. Spectre un Meltdown nav programmatūras drošības ievainojamības, bet gan CPU pamatkonstrukcijas ievainojamības, kas padara problēmu grūtāk atrisināmu. Problēmas pašas par sevi ir īpaši nopietnas, ļaujot atklāt atmiņu no citām lietojumprogrammām un operētājsistēmas.
Pārskats
CPU izmanto neticami progresīvus dizainus, lai sasniegtu augstāko veiktspēju, tostarp metodes, tostarp spekulatīvā izpilde un atzaru prognozēšana. Spekulatīva izpilde ir vieta, kur centrālais procesors sāk palaist procesu, pirms tas zina, vai tas ir nepieciešams, lai ietaupītu laiku, kad tas konstatē, ka tas ir nepieciešams. Nozares prognozēšana ir spekulatīvas izpildes apakškopa, kas mēģina paredzēt procesa iznākumu un pēc tam sāk aprēķināt nākamo soli, pamatojoties uz šo paredzamo vērtību, ļaujot CPU izpildīt virkni instrukciju no pasūtījums.
Spectre ievainojamība rodas, ieviešot šīs divas funkcijas. Tas ļauj lietojumprogrammai pārkāpt lielākajā daļā mūsdienu programmatūras iebūvēto atmiņas izolācijas paņēmienu, kas ļauj izpaust atmiņu, tostarp tādus noslēpumus kā paroles un šifrēšanas atslēgas. Viena no Spectre problēmām ir tāda, ka datiem var piekļūt no lietojumprogrammām, kurām nav drošības ievainojamību, jo ir nepieciešama tikai ļaunprātīga programma.
Meltdown ievainojamība ir balstīta uz dažiem atmiņas paņēmieniem, kā arī iepriekš minēto spekulatīvo izpildes sistēmu. Tas izmanto “sacensību nosacījumu” starp procesa izpildi un privilēģiju pārbaudi un ļauj ļaunprātīgai programmai piekļūt citu lietojumprogrammu atmiņai un operētājsistēmai.
Padoms. “Sacensību nosacījums” ir problēma, kad vienam uzdevumam ir jāpaļaujas uz citu, bet netiek izpildīts pareizais izpildes rīkojums. Tā rezultātā vispirms var palaist “otro” procesu un izmantot neinicializētu atmiņu, kurai vajadzēja būt “pirmā” procesa rezultātam, kā rezultātā noplūdīs šīs atmiņas iepriekšējais saturs. Šajā konkrētajā gadījumā procesu nevajadzētu palaist, kamēr atļauju pārbaude nav apstiprinājusi, ka tas ir atļauts, taču atļauju pārbaude var notikt otrajā vietā veiktspējas optimizācijas dēļ.
Efekti
2017. gada vidū vairākas komandas neatkarīgi atklāja gan Meltdown, gan Spectre un ziņoja par tām privāti CPU ražotājiem, kuri izstrādāja ielāpus. Tā kā ielāpi bija vērsti uz veiktspējas optimizāciju, tie galu galā samazināja CPU veiktspēju līdz pat 30% sliktākajā gadījumā, un veiktspējas samazinājums par 2–14% vairāk atspoguļo cilvēku pieredzi.
Ievainojamības skāra daudzus x86 CPU, IBM POWER CPU un dažus ARM CPU. Sabrukšana ietekmē aparatūru, kas parasti atrodas personālajos datoros, kā arī mākoņa serveros. Spectre ietekmē personālos datorus, mākoņserverus un mobilās ierīces. Visi Intel CPU no 1995. gada līdz 2018. gada vidum bija neaizsargāti pret problēmām (izņemot Itanium un Atom līnijas pirms 2013. gada). Meltdown neietekmēja AMD CPU, taču tie bija neaizsargāti pret Spectre.
Programmatūras mazināšanas ielāpi tika izstrādāti un izlaisti ar operētājsistēmu nodrošinātāju starpniecību, kas atrisina lielāko daļu problēmu. Kopš 2018. gada vidus Intel ir atjauninājis savu CPU dizainu, lai iekļautu aparatūras problēmu mazināšanu.
Abas problēmas var izmantot, izmantojot ļaunprātīgas tīmekļa lapas ar izstrādātu JavaScript, tāpēc tas ir ļoti svarīgi pārliecinieties, vai drošības ielāpi ir instalēti katrā sistēmā, pat ja būs veiktspējas zudums smagas. Diemžēl problēmas nevar novērst ar vienu ielāpu, jo tās ir ārkārtīgi sarežģītas problēmas ar dziļām problēmām integrācija aparatūrā, drošības ielāpi turpināsies laika gaitā, jo jaunāki varianti atklāja.