LVI ir jauna uzbrukumu klase spekulatīvajam izpildes mehānismam CPU

Publicēts informācija par jaunu uzbrukumu klasi LVI (slodzes vērtības injekcija, CVE-2020-0551) par spekulatīvo izpildes mehānismu Intel CPU, ko var izmantot, lai nopludinātu atslēgas un slepenus datus no Intel SGX anklāviem un citiem procesiem.

Jauna uzbrukumu klase ir balstīta uz manipulācijām ar tām pašām mikroarhitektūras struktūrām, kas tiek izmantotas uzbrukumos MDS (Mikroarhitektūras datu izlase), Spoks un sabrukums. Tajā pašā laikā jaunus uzbrukumus nebloķē esošās aizsardzības metodes pret Meltdown, Spectre, MDS un citiem līdzīgiem uzbrukumiem. Efektīvai LVI aizsardzībai ir nepieciešamas aparatūras izmaiņas CPU. Organizējot aizsardzību programmatiski, pievienojot kompilatora LFENCE instrukciju pēc katras ielādes operācijas no atmiņas un aizstājot RET instrukciju ar POP, LFENCE un JMP, tiek reģistrēts pārāk daudz pieskaitāmās izmaksas - pēc pētnieku domām, pilnīga programmatūras aizsardzība novedīs pie tā samazināšanās. veiktspēja 2-19 reizes.

Daļu no problēmas bloķēšanas grūtībām kompensē fakts, ka uzbrukums šobrīd ir vairāk teorētisks nekā praktisks (uzbrukums ir teorētiski iespējams, taču ļoti grūti īstenojams un atkārtojams tikai sintētiskos testos).
Intel piesavināts problēmai ir mērens bīstamības līmenis (5.6 no 10) un atbrīvots SGX vides programmaparatūras un SDK atjaunināšana, kurā tā mēģināja bloķēt uzbrukumu, izmantojot risinājumu. Piedāvātās uzbrukuma metodes šobrīd ir attiecināmas tikai uz Intel procesoriem, taču nevar izslēgt iespēju LVI pielāgot citiem procesoriem, kuriem piemērojami Meltdown klases uzbrukumi.

Problēmu pagājušā gada aprīlī atklāja Lēvenas universitātes pētnieks Džo van Bulks, pēc kura, piedaloties 9 pētniekiem no citām universitātēm, tika izstrādātas piecas pamata uzbrukuma metodes, no kurām katra ļauj eksistēt specifiskākus. iespējas. Neatkarīgi šī gada februārī pētnieki no Bitdefender arī atklāja vienu no LVI uzbrukuma variantiem un ziņoja par to Intel. Uzbrukuma varianti atšķiras ar dažādu mikroarhitektūras struktūru izmantošanu, piemēram, iepriekš izmantoto krātuves buferi (SB, Store Buffer), aizpildīšanas buferi (LFB, Line Fill Buffer), FPU konteksta slēdža buferi un pirmā līmeņa kešatmiņu (L1D). tādos uzbrukumos kā ZombieLoad, RIDL, Fallout, LazyFP, Priekšvēse и Sakust.

LVI ir jauna uzbrukumu klase spekulatīvajam izpildes mehānismam CPU

Galvenais pagodinājumi LVI pret MDS uzbrukumiem ir tāda, ka MDS manipulē ar mikroarhitektūras struktūru satura noteikšanu, kas paliek kešatmiņā pēc spekulatīvas kļūdu apstrādes vai ielādes un uzglabāšanas operācijām.
LVI uzbrukumi ļauj ievietot uzbrucēja datus mikroarhitektūras struktūrās, lai ietekmētu turpmāku upura koda spekulatīvo izpildi. Izmantojot šīs manipulācijas, uzbrucējs var iegūt privāto datu struktūru saturu citos procesos, izpildot noteiktu kodu mērķa CPU kodolā.

LVI ir jauna uzbrukumu klase spekulatīvajam izpildes mehānismam CPU

Par ekspluatācijas problēma cietušā procesa kodeksā vajadzētu satikties īpašas kodu sekvences (sīkrīki), kurās tiek ielādēta uzbrucēja kontrolēta vērtība, un šīs vērtības ielāde izraisa izņēmumu (fault, abort vai assist) izmešanu, izmetot rezultātu un atkārtoti izpildot instrukciju. Kad tiek apstrādāts izņēmums, tiek parādīts spekulatīvs logs, kura laikā sīkrīkā apstrādātie dati noplūst. Konkrēti, procesors sāk izpildīt koda fragmentu (sīkrīku) spekulatīvajā režīmā, pēc tam nosaka, ka prognoze nebija pamatota, un atgriež operācijas to sākotnējā stāvoklī, bet spekulatīvās izpildes laikā apstrādātie dati tiek noglabāti L1D kešatmiņā. un mikroarhitektūras buferi un ir pieejami izguvei no tiem, izmantojot zināmas metodes atlikušo datu noteikšanai, izmantojot trešo pušu kanālus.

"Palīdzības" izņēmumu, atšķirībā no "kļūdas" izņēmuma, procesors apstrādā iekšēji, neizsaucot programmatūras apstrādātājus. Palīdzība var rasties, piemēram, ja ir jāatjaunina A (piekļuve) vai D (netīrs) bits atmiņas lapas tabulā. Galvenās grūtības, veicot uzbrukumu citiem procesiem, ir tas, kā iniciēt palīdzības rašanos, manipulējot ar upura procesu. Pašlaik nav uzticamu veidu, kā to izdarīt, taču iespējams, ka nākotnē tie tiks atrasti. Uzbrukuma veikšanas iespēja līdz šim ir apstiprināta tikai Intel SGX anklāviem, citi scenāriji ir teorētiski vai reproducējami sintētiskos apstākļos (nepieciešams kodam pievienot noteiktus sīkrīkus)

LVI ir jauna uzbrukumu klase spekulatīvajam izpildes mehānismam CPU

LVI ir jauna uzbrukumu klase spekulatīvajam izpildes mehānismam CPU

Iespējamie uzbrukuma vektori:

  • Datu noplūde no kodola struktūrām lietotāja līmeņa procesā. Linux kodola aizsardzība pret Spectre 1 uzbrukumiem, kā arī SMAP (Supervisor Mode Access Prevention) aizsardzības mehānisms ievērojami samazina LVI uzbrukuma iespējamību. Ja nākotnē tiks noteiktas vienkāršākas LVI uzbrukuma metodes, kodolam var būt nepieciešams pievienot papildu aizsardzību.
  • Datu noplūde starp dažādiem procesiem. Uzbrukumam ir nepieciešama noteiktu koda daļu klātbūtne lietojumprogrammā un metodes definīcija izņēmuma veikšanai mērķa procesā.
  • Datu noplūde no resursdatora vides uz viesu sistēmu. Uzbrukums tiek klasificēts kā pārāk sarežģīts, un tam ir nepieciešami dažādi grūti īstenojami soļi un darbības prognozes sistēmā.
  • Datu noplūde starp procesiem dažādās viesu sistēmās. Uzbrukuma vektors ir tuvu datu noplūdes organizēšanai starp dažādiem procesiem, taču papildus tam ir nepieciešamas sarežģītas manipulācijas, lai apietu izolāciju starp viesu sistēmām.

Publicēja pētnieki daži prototipus ar uzbrukuma izpildes principu demonstrāciju, taču tie vēl nav piemēroti reālu uzbrukumu veikšanai. Pirmais piemērs ļauj novirzīt spekulatīvu koda izpildi upura procesā, līdzīgi kā uz atdevi orientētu programmēšanu (ROP,Atgriešanās programmēšana). Šajā piemērā cietušais ir īpaši sagatavots process, kurā ir nepieciešamie sīkrīki (uzbrukuma piemērošana reāliem trešo pušu procesiem ir sarežģīta). Otrais piemērs ļauj mums iesaistīties aprēķinos AES šifrēšanas laikā Intel SGX anklāvā un organizēt datu noplūdi spekulatīvas instrukciju izpildes laikā, lai atjaunotu šifrēšanai izmantotās atslēgas vērtību.


Avots: opennet.ru

Pievieno komentāru