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 |
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; |
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