Intel procesoru ievainojamība, kas izraisa datu noplūdi, izmantojot trešo pušu kanālus

Ķīnas un Amerikas universitāšu pētnieku grupa konstatējusi jaunu Intel procesoru ievainojamību, kas noved pie trešās puses informācijas noplūdes par spekulatīvo operāciju rezultātu, ko var izmantot, piemēram, slēpta komunikācijas kanāla organizēšanai starp procesiem vai identificēt noplūdes sabrukšanas uzbrukumu laikā.

Ievainojamības būtība ir tāda, ka izmaiņas EFLAGS procesoru reģistrā, kas notiek instrukciju spekulatīvas izpildes rezultātā, ietekmē turpmāko JCC instrukciju izpildes laiku (lēciens, ja ir izpildīti noteikti nosacījumi). Spekulatīvās darbības netiek pabeigtas un rezultāts tiek atmests, bet izmestās EFLAGS izmaiņas var noteikt, analizējot JCC instrukciju izpildes laiku. Salīdzināšanas darbības, kas veiktas spekulatīvajā režīmā pirms pārejas, ja tās ir veiksmīgas, rada nelielu aizkavi, ko var izmērīt un izmantot kā satura atlases zīmi.

Intel procesoru ievainojamība, kas izraisa datu noplūdi, izmantojot trešo pušu kanālus

Atšķirībā no citiem līdzīgiem sānu kanālu uzbrukumiem jaunā metode neanalizē piekļuves laika izmaiņas kešatmiņā saglabātajiem un nekešatmajiem datiem, un tai nav nepieciešama stadija, lai EFLAGS reģistru atiestatītu sākotnējā stāvoklī, kas apgrūtina uzbrukuma noteikšanu un bloķēšanu. Kā demonstrāciju pētnieki īstenoja Meltdown uzbrukuma variantu, izmantojot jaunu metodi, lai iegūtu informāciju par spekulatīvas operācijas rezultātu. Informācijas noplūdes organizēšanas metodes darbība Meltdown uzbrukuma laikā tika veiksmīgi demonstrēta sistēmās ar Intel Core i7-6700 un i7-7700 centrālo procesoru vidē ar Ubuntu 22.04 un Linux kodolu 5.15. Sistēmā ar Intel i9-10980XE centrālo procesoru uzbrukums tika veikts tikai daļēji.

Meltdown ievainojamība ir balstīta uz to, ka spekulatīvas instrukciju izpildes laikā procesors var piekļūt privātam datu apgabalam un pēc tam izmest rezultātu, jo iestatītās privilēģijas aizliedz šādu piekļuvi lietotāja procesam. Programmā spekulatīvi izpildītais bloks ir atdalīts no galvenā koda ar nosacījuma atzaru, kas reālos apstākļos vienmēr tiek aktivizēts, bet sakarā ar to, ka nosacījuma priekšraksts izmanto aprēķinātu vērtību, kuru procesors nezina iepriekšējas izpildes laikā. kods, visas filiāles opcijas tiek spekulatīvi izpildītas.

Klasiskajā Meltdown versijā, tā kā spekulatīvi izpildītām operācijām tiek izmantota tā pati kešatmiņa kā parasti izpildītām instrukcijām, spekulatīvās izpildes laikā ir iespējams kešatmiņā iestatīt marķierus, kas atspoguļo atsevišķu bitu saturu slēgtā atmiņas apgabalā, un pēc tam. parasti izpildāmā kodā nosaka to nozīmi, analizējot piekļuves laiku kešatmiņā saglabātajiem un nekešatajiem datiem. Jaunajā variantā kā noplūdes marķieris tiek izmantotas izmaiņas EFLAGS reģistrā. Slēptā kanāla demonstrācijā viens process modulēja pārraidītos datus, lai radītu apstākļus EFLAGS reģistra satura maiņai, bet cits process analizēja izmaiņas JCC instrukcijas izpildes laikā, lai atjaunotu pirmā procesa pārraidītos datus.

Avots: opennet.ru

Pievieno komentāru