☰

Meltdown un Spectre, ievainojamības procesoru darbībā

2018. gads sācies ar mazāk pozitīviem jaunumiem kiberdrošības jomā. Nesen konstatētas divu veidu ievainojamības galvenokārt Intel, AMD un ARM izstrādātajos procesoros, kas sniedz iespēju potenciālajiem uzbrucējiem nozagt sensitīvus datus, piemēram, paroles un citu lietotāja informāciju. Atklātās ievainojamības nodēvētas par Meltdown [1] un Spectre [3]. Kaut arī atklātās ievainojamības pēc savas būtības ir nopietna problēma, tomēr CERT.LV speciālisti aicina šobrīd mierīgi novērtēt situāciju, jo Meltdown un Spectre ir nosacīti sarežģītas ievainojamības, kuras prasa sagatavošanos, lai tās masveidā izmantotu ļaunprātīgiem mērķiem.

Uzskatāms un viegli uztverams piemērs, lai saprastu, kas ir Meltdown un Spectre ievainojamības: varam iedomāties situāciju, kad, pamanot ciemiņus nākam ciemos (piemēram, pa logu vai dzirdot soļus/sarunas), liekam jau vārīties ūdeni tējkannā. Kad ciemiņi ieradušies, varam uzreiz piedāvāt tēju vai kafiju. Ja ciemiņi piekrīt, tad ir jāgaida daudz īsāks laiks, nekā tad, ja sāktu vārīt ūdeni tikai pēc viņu atbildes saņemšanas. Ja viņi atsakās, tad varam pārtraukt ūdens vārīšanu.

Ja mūsu ciemiņi ir vienkārši izslāpuši, tad viņi būs priecīgi par ātri pasniegto dziru un papildus jautājumus, iespējams, neuzdos. Bet, ja viņi ir ne tikai izslāpuši, bet arī ziņkārīgi, tad vēlēsies noskaidrot, piemēram, cik ilgi pirms viņu ierašanās mājas saimnieks ir viņus pamanījis. To attiecīgi var noteikt nomērot ūdens temperatūru tējkannā.

Mūsdienu datora procesori ir ļoti ātri, un spēj apstrādāt informāciju ievērojami ātrāk, nekā to iespējams ielasīt no operatīvās atmiņas. Lai uzlabotu procesoru veiktspēju, procesori izmanto vairāku līmeņu kešatmiņu. Kešatmiņa, salīdzinājumā ar datora operatīvo atmiņu, ir salīdzinoši maza, toties darbības ar to ir daudz ātrākas. Viens no optimizācijas paņēmieniem, kas tiek lietots mūsdienu procesoros, lai paātrinātu darbības ar atmiņu, ir "spekulatīvā izpilde" ("Speculative Execution"): līdzīgi kā mēs vārām ūdeni, pirms esam saņēmuši atbildi no ciemiņiem, procesors izpilda instrukcijas, pirms vēl ir saņēmis datus no operatīvās atmiņas. Kad dati no operatīvās atmiņas ir ielādēti kešatmiņā, procesors izmanto tikai to instrukciju rezultātus, kuras ir realizējušās, un atmet visas pārējās.

Problēma pastāv tajā, ka ir iespējams noteikt, kādi dati ir tikuši ielādēti kešatmiņā, kuru izmanto visas datora programmas. To realizē ar specifiskā veidā konstruētu datu apstrādi un mērot piekļuves laiku tiem. Tieši šādu pamatprincipu lieto Meltdown un Spectre sensitīvas informācijas izgūšanai.

Procesoru darbības optimizācijas funkcionalitāte (Out-of-order Execution ar Speculative Execution) pieļauj nepriviliģētam uzbrucējam, ar parasta sistēmas lietotāja tiesībām, izgūt sensitīvu informāciju no datora atmiņas. Augstāk minētās ievainojamības – Meltdown un Spectre, sniedz praktiskus, laika-balstītus sānu kanāla (time-based side channel), uzbrukumus pret procesora kešatmiņu, lai izgūtu sensitīvu informāciju, tādu kā paroles, šifru atslēgas un fiksētas atmiņas adreses sistēmas tālākai ekspluatācijai.

Šo uzbrukumu realizācijai, kā minimums, ir nepieciešama attālināta vai lokāla piekļuve sistēmai un koda izpildes nosacījums. Būtiski uzbrukumi varētu tikt vērsti pret publisku koplietojumā esošu mākoņa vides pakalpojumu infrastruktūru, kurā nav ieviesti aizsardzības risinājumi. Piemēram, šāds uzbrukums varētu tikt vērsts pret mākoņa pakalpojuma infrastruktūru, kura nodrošina virtuālos privātos serverus (VPS). Ļaunprātīgs lietotājs var leģitīmā veidā iegādāties savu VPS, un, sekmīgi realizējot uzbrukumu, piekļūt citu, šajā mākonī esošo, lietotāju VPS sensitīvai informācijai vai pārņemt vadību pār tām. Taču vislielākais, publiski izplatītākais uzbrukumu vektors varētu būt ļaundabīga JavaScript koda izvietošana uz kompromitētām mājas lapām, kurš izpildītos upura Internet pārlūkprogrammā un ļautu izgūt sensitīvu informāciju no pārlūkprogrammas, tādu kā uzglabātās paroles, sesiju identifikatorus (session tokens) un sīkdatnes (cookies). Šāds uzbrukums ļautu uzbrucējam iegūt piekļuvi upura Interneta pakalpojumu resursiem, piemēram tādiem kā sociālie tīkli, elektroniskā pasta sistēma, vai pat Interneta bankas konts.

Pieejamie operējošo sistēmu un Interneta pārlūkprogrammu ielāpi pilnībā nenovērš šāda veida ekspluatāciju, taču cenšas to ievērojami sarežģīt, jo uzbrukums nav mērķēts pret programmnodrošinājumu, bet gan pret procesoru. Neskatoties uz to, tiek rekomendēts ieviest aizsardzības risinājumus, veikt informācijas sistēmu monitoringu un analīzi, un nodrošināt laicīgu reakciju incidentu novēršanā.

Mājas lietotājam tiek rekomendēts atjaunot savas Interneta pārlūkprogrammas uz to jaunākajām versijām un operējošo sistēmu – ar pieejamiem automātiskajiem atjauninājumiem, kā arī obligāti savu Interneta pakalpojumu piekļuvi aizsargāt ar spēcīgu daudzfaktoru autentifikāciju, tādu kā kodu kalkulatori, SmartID vai saņemot piekļuves kodu īsziņā.

Zemāk redzama tabula, kurā strukturētā veidā apkopota informācija no autoritatīviem pirmavotiem, lai sniegtu detalizētu un koncentrētu pārskatu par abām ievainojamībām un to ietekmi.

Tabula ar Meltdown un Spectre salīdzinājumu zemāk:

  Meltdown Spectre
CVE CVE-2017-5754 CVE-2017-5753 and CVE-2017-5715
Reported 2017-06-01 2017-06-01
Disclosed Prematurely on 2018-01-02 Prematurely on 2018-01-02
Systems affected Intel (and possibly others) [2] Intel, AMD, ARM (and possibly others) [4]
Technology abused

Out-of-Order Execution [2]

(Parallel instruction execution ahead)

Speculative Execution [4]

(Result speculative prediction and execution – Out-of-Order Execution + Speculative Execution)

Attack CPU data cache timing side-channel attack [5] CPU data cache timing side-channel attack [5]
Attack description

Meltdown breaks the most fundamental isolation between user applications and the operating system. This attack allows a program to access the memory, and thus also the secrets, of other programs and the operating system. [1]

Meltdown exploits side-channel information available on most modern processors, e.g., modern  Intel  microarchitectures  since  2010  and  potentially on other CPUs of other vendors. [2]

Spectre breaks the isolation between different applications. It allows an attacker to trick error-free programs, which follow best practices, into leaking their secrets. In fact, the safety checks of said best practices actually increase the attack surface and may make applications more susceptible to Spectre. [3]
Attack effect

Meltdown breaks the mechanism that keeps applications from accessing arbitrary system memory. Consequently, applications can access system memory. [1]

(Access to nearly whole system memory – all running process Kernel and User land memory. Mostly usable for privilege escalation and sandbox/hypervisor escape attacks)

Spectre tricks other applications into accessing arbitrary locations in their memory. [3]

(Access to other application’s whole memory – target process Kernel and User land memory. Mostly usable for sensitive information extraction from current process)

 

Priveleges required Unprivileged [2] Unprivileged [4]
Access required Remote or local with RCE (e.g., shell access) Remote or local with RCE (e.g., shell access, browser session)
Attack complexity Complex Highly complex
Attack steps

1. Execute transient instructions - make the CPU execute one or more instructions that would never occur in the executed path.  We call such an instruction, which is executed out of order, leaving measurable side effects, a transient instruction; and
2. CPU data cache timing side-channel attack – transfer the microarchitectural side effect of the transient instruction sequence to an architectural state to further process the leaked secret. [2]

1. Mistrain the branch prediction - setup phase, where  the  adversary  performs  operations  that  mistrain the  processor  so  that  it  will  later  make  an  exploitably erroneous speculative prediction;
2. Trigger the speculative execution with conditional branch misprediction - the processor speculatively executes instruction(s) that transfer confidential information from the victim context into a microarchitectural side channel. This may be triggered by having the attacker request that the victim to perform an action (e.g., via a syscall, socket, file, etc.); and
3. CPU data cache timing side-channel attack - attacks  using  flush+reload  or evict+reload,  the recovery process consists of timing how long reads take from memory addresses in the cache lines being monitored. [4]

Patch Linux: KAISER/KPTI; Android: available; OSX: available; Windows: no real patch available (due to conflict with third party antivirus products potentially resulting in system crashes) [6] Linux: KAISER/KPTI; Android: available; OSX: available; Windows: no real patch available (due to conflict with third party antivirus products potentially resulting in system crashes) [6]
Public PoC Rumored/available Rumored/available

 

CERT.LV speciālistu apkopotie ieteikumi, kā pasargāt sevi no Meltdown un Spectre.

 

Pirmavotu atsauces:
[1] https://meltdownattack.com
[2] https://meltdownattack.com/meltdown.pdf
[3] https://spectreattack.com
[4] https://spectreattack.com/spectre.pdf
[5] https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html
[6] https://www.sans.org/webcasts/meltdown-spectre-understanding-mitigating-threats-106815

Attēls: Pixabay.com