Hipervizor je apstrakcija (najčešće programska) koja omogućuje izvođenje virtualnih računala/strojeva na računalu. Virtualni stroj je zapravo emulacija računala. Generalno postoje 2 tipa hipervizora. Tip 1 se izvodi direktno iznad hardvera i zbog toga pruža dobre performanse i sigurnost. Tip 2 se izvodi iznad operacijskog sustava i takvo rješenje je pogodno za korisnike koji nisu stručnjaci, žele brzinski isprobati neku novu okolinu ili žele isprobati neki program bez da ugroze svoje računalo. Upotreba hipervizora je danas sve raširenija zbog efikasnosti, sigurnosti i jednostavnosti korištenja. Napade na hipervizor teško je detektirati, ali još teže i ostvariti. Hyperjacking je najpoznatija grupa napada kojoj je cilj dobiti kontrolu nad računalom bilo postavljanjem novog ili preuzimanjem kontrole nad postojećim hipervizorom. Opasnost od napada može se minimizirati ako se slijede smjernice za sigurnost kojima je generalni cilj odvojiti hipervizor od mreže i konstantno ažuriranje hipervizora.
Ključne riječi: hipervizor; virtualizacija; virtualni stroj; hyperjacking;
Hipervisor (engl. Hypervisor) ili monitor virtualnog stroja (engl. Virtual machine monitor, VMM) je najčešće dio softvera koji omogućuje izvođenje jednog ili više virtualnih strojeva (engl. Virtual machine, VM) na računalu. Virtualni stroj je emulacija računala koja pruža sve funkcionalnosti kao pravo, fizičko računalo. Uz softversku implementaciju hipervizor može biti izveden kao firmware ili hardver. [2]
Računalo na kojem se izvode virtualni strojevi često se još naziva računalo/stroj domaćin, dok se virtualni strojevi nazivaju računala/strojevi gosti. Gosti (virtualni strojevi) koji se izvode uz pomoć hipervizora na domaćinu dijele iste fizičke resurse tog domaćina. Hipervizor se brine da se gosti izvode neometano jedni pored drugih. Svaki gost (VM) je logički odvojen od ostalih i to tako da mu hipervizor dodijeli dio računalne snage, memorije i diska domaćina. Logička odvojenost sprječava moguće interferencije gosti (VMa). To za posljedicu ima da nepopravljiva greška na jednom gostu (VMu), na primjer greška u memoriji ili sigurnosna kompromitiranosti, ne mora uzrovati grešku na ostalim gostima ili domaćinu. [1]
Upravo zbog logičke odvojenosti različitih virtualnih strojeva hipervizor se danas koristi sve više.
Generalno postoje dva glavna tipa hipervizora: tip 1 i tip 2.
Tip 1 se još naziva nativni hipervizor. Ovaj tip hipervizora se izvodi direktno na domaćinovom hardveru. Tip 1 ima direktnu interakciju s procesorom, memorijom i uređajima za pohranu fizičkog računala na kojem se izvodi. Bilo kakav operacijski sustav se izvodi iznad njega. To za posljedicu ima da ako primjerice operacijski sustav želi napraviti neki sistemski poziv i pristupiti hardveru, taj poziv mora uputiti hipervizoru.
Prednosti ovakve vrste hipervizora su: efikasnost, odnosno performanse zbog direktnog izvođenja na fizičkom hardveru, pojačana sigurnost zbog toga što nema nekog sloja između hipervizora i hardvera kojeg bi napadač mogao ugroziti poput operacijskog sustava.
Mane tipa 1 su: kompliciranije postavljanje za krajnjeg korisnika, potreba za dodatnom upravljačkom logikom (upravlja se sa gostima, ali i hardverom domaćina). [1][3]
Primjeri ovakvog tipa hipervizora su: Oracle VM Server for SPARC, Oracle VM Server for x86, Microsoft Hyper-V, Xbox One sistemski softver (koji je zapravo varijacija Microsoftovog Hyper-V rješenja) i VMware ESXi.
Na slici je prikazana shema računala koje koristi tip 1
Tip 2 ili ugošćeni hipervizor se izvodi iznad nekog operacijskog sustava kao svaki uobičajeni program. Gost (virtualni stroj) je zapravo samo obični proces na domaćinu. Kako bi se poboljšalo korisničko iskustvo i povećala funkcionalnost ovakvog rješenja, hipervizor tipa 2 se često dopunjuje s dodatnim alatima. Neki od tih alata na primjer omogućuju dijeljenje određenog direktorija i datoteka između gosta i domaćina ili pa mogućost kopiranja teksta na domaćinu i njegovog lijepljenja na gostu.
Prednosti ove izvedbe su: jednostavno korištenje za krajnjeg korisnika (pogotovo ako korisnik nije stručnjak), mogućnost lakog i brzog isprobavanja novih okolina ili operacijskih sustava (tip 2 se često koristi kod isprobavanja programa na različitim platformama ili kod provjera nekih sigurnosnih izazova bez ugrožavanja vlastitog računala).
Također ovakva izvedba ima i mane, neke od koji su: performanse zbog posredništva operacijskog sustava, sigurnosne prijetnje ako napadač ovlada operacijskim sustavom domaćina može ugroziti i sve goste. [1][3]
Primjeri ovakvog tipa hipervizora su: VMware Workstation, VMware Player, VirtualBox, Parallels Desktop (Mac).
Na slici je prikazana shema računala koje koristi tip 2
Valja napomenuti da ponekad razlika između tipova hipervizora nije jasna. Primjerice virtualni stroj zasnivan na jezgri (izvorno engl. Kernel-based Virtual Machine, KVM) je modul jezgre (engl. kernel) Linuxa koji omogućava jezgri operacijskog sustava da se ponaša poput hipervizora. KVM zahtjeva hardversku podršku za virtualizaciju kako bi jezgru efektivno pretvorio u hipervizor tipa 1. Ali ipak Linux jezgra je dio operacijskog sustava gdje se aplikacije natječu za iste resurse računala koje koristi i VM pa se KVM također može kategorizirati kao hipervizor tipa 2. [4]
Treba naglasiti da svi hipervizori ne rade na jednak način te da se za rješenja koja nisu otvorenog koda (engl. open source) ni ne zna kako rade. Primjer takvog rješenja je Microsoftov Hyper-V hipervizor. Ali za razumijevanje rada hipervizora postoji referenti model koji je generalizacija općenitih principa na kojima rade hipervizori.
Referentni model se sastoji od 3 glavna modula: dispečer, interpretator i alokator. Skica ovakvog referentnog modela dana je dolje. [5]
Dispečer prima i preusmjerava naredbe od virtualnog stroja (VMa) jedom od preostala dva modula.
Alokator se brine za dodjeljivanje sistemskih resursa virtualnom stroju. Svaki put kad virtualni stroj izvrši naredbu koja mijenja resurs računala domaćina, primjerice sadržaj diska, zove se alokator od strane dispečera. Alokator dalje zove hardver ili operacijski sustav ovisno o tipu hipervizora.
Interpretator se zovi svaki put kada virtualni stroj izvrši privilegirane naredbe (naredbe koje operacijski sustav izvršava u jezgrinom načinu rada). Primjerice prilikom mijenjanja konteksta programa ili isključivanja prekidanja.
Upotreba hipervizora i virtualizacijskih tehnologija doživjela je značajniji porast oko 2005. i 2006. godine. Više je faktora imalo utjecaj na to, a jedan od najznačajnijih je pojava hardverski asistirane virtualizacije. Upravo u to vrijeme su proizvođači procesora za stolna i poslužiteljska računala, Intel i AMD, predstavili ekstenzije za instrukcijski set x86 (odnosno x86-64) koje pomažu u virtualizaciji. Prve verzije tih ekstenzija (Intel VT-x i AMD-V) su nudile ograničenu hardversku potporu koja je pojednostavljivala virtualizaciju i nudila manje ubrzanje. Kasnije verzije proširile su hardversku potporu i time donesle značajnije ubrzanje za virtualizaciju. Valja napomenuti kako prije ovog napretka virtualizacija je bila moguća, ali je bila izvedena samo softverski te je zbog dodatnih softverskih apstrakcija bila sporija.
Uz mogućnost specijalizirane hardverske asistencije, općeniti napredak hardvera u brzini i mogućnostima također je uzrokovao popularnost hipervizora i virtualizacije. Budući da su računala mogla raditi sve više stvari istodobno, ideja da se pomoću hipervizora i više virtualnih strojeva iskoristi taj potencijal postala je sve privlačnija.
Hipervizor također pojednostavljuje upravljanje velikim računalnim sustavima koji se mogu pronaći u poslužiteljskim farmama ili podatkovnim centrima. Kod takvih sustava na jednom poslužitelju se može pronaći više virtualnih strojeva pa bi tradicionalni pristup upravljanja (jedan poslužitelj jedna aplikacija) bio neefikasan s pogleda iskorištavanja performansi i cijene. Također za takve velike sustave bitna je sigurnost i izolacija pojedinog računala (gosta odnosno VMa) koje pruža hipervizor.
Za razvijatelje usluga i aplikacija korištenje hipervizora također ima prednosti. Primjerice ako se razvija kompleksan sustav koji ima više međusobno povezanih usluga koje su ovisne o operacijskom sustavu ili verziji nekog programskog paketa. Ako usluga 1 radi samo na Windowsima, usluga 2 na Linuxu s verzijom nekog programskog paketa 2.0, a usluga 3 također na Linuxu s verzijom tog istog programskog paketa 1.0. Umjesto korištenja 3 različita računala, na istom poslužitelju se samo naprave tri virtualna stroja s odgovarajućim operacijskim sustavima i programskom potporom. Hipervizor će se pobrinuti da virtualni strojevi rade nezavisno i bez problema. Ovakav pristup je doveo do pojave arhitekture zasnivane na mikro uslugama. Usluge su odvojene te po potrebi se skalira samo usluga koja najviše „koči“ sustav, umjesto cijelog sustava. Ako primjerice usluga za prijavu korisnika je preopterećena, uzme se slika tog virtualnog stroja, stavi se na novi poslužitelj i stvore se novi virtualni strojevi identični originalu. Hipervizor se opet brine da svi virtualni strojevi (gosti) rade glatko i nezavisno.
Hipervizor se može primijeniti i u ugradbenim računalnim sustavima. Ali valjda imati na umu da su ti sustavi često ograničeni računalnom snagom, memorijom, brzinom kojom mogu komunicirati s mrežom itd. Stoga prije implementacije hipervizora u takav sustav treba procijeniti ako benefiti (sigurnost i robusnost na greške) mogu nadmašiti negativne strane (potreba za dodatnim sklopovljem, bilo za hardversku podršku virtualizacije ili dodatnu memoriju koju hipervizor treba). Također za neke sustave treba razmotriti da hipervizor ne bi ugrozio zahtjeve za rad u stvarnom vremenu.
Zanimljiva primjena hipervizora može se pronaći u Microsoftovoj igraći konzoli Xbox One, odnosno njezinom softveru. Softver se zasniva na modificiranom hipervisoru Hyper-V (koji se naziva NanoVisor). Iznad hipervizora se izvode dva odvojena operacijska sustava na virtualnim strojevima. Oba operacijska sustava zasnivaju se na Windows 10 jezgri, ali imaju drugačiju namjenu. Prvi virtualni stroj namijenjen je za zahtjevne aplikacije (u ovom slučaju video igre), dok je drugi namijenjen za izvođenje drugih aplikacija (primjerice web preglednika) i korisničkog sučelja. Ovim rješenjem se jednostavno postiže upravljanje resursima te razvijatelj neke zahtjevne aplikacije ne mora brinuti ako se neke manje zahtjevne aplikacije izvode u pozadini. Također ovim rješenjem se povećava sigurnost sustava. Ako korisnik želi aktivirati neki program koji bi mu na primjer pomagao u varanju u nekoj igri to neće biti lako moguće zbog odvijenosti virtualnih strojeva za igre i aplikacije. Također korištenje hipervizora omogućuje laku detekciju i ne izvršavanje nepotpisanog kod. To za posljedicu ima povećanje sigurnosti sustava na zlonamjerne napade kao i sprječavanje pokretanja piratskog softvera. [6]
Tehnologija hipervizora se može koristiti i u zlonamjerne svrhe. Prije ulaženja u detalje valja imati na umu da je hipervizor koji se izvodi direktno iznad hardvera (tip 1) izuzetno sigurna okolina. Budući da nema nikakvog dodatnog softvera između hipervizora i hardvera, potencijalni napadač ima malo prostora za napade. Također takav tip hipervizora može dodatno nadzirati operacijski sustav budući da sve naredbe prije izvršavanja na hardveru idu kroz njega. Pa je napad na operacijski sustav također teže provesti. Međutim neki napredniji napadi su još uvijek mogući i za ovakvo rješenje. Napadi na hipervizor tipa 2 su lakši zbog toga što se može prvo ugroziti operacijski sustav domaćina pa se onda može ovladati hipervizorom.
Hyperjacking je naziv za skupinu napada kojima je cilj ili ovladati originalnim hipervizorom pomoću malwarea ili postaviti svoj hipervizor kako bi se ovladalo originalnim hipervizorom na računalu. Jednom kad se ovlada originalnim hipervizorom, može se upravljati i sa virtualnim strojevima. Glavni načini kako ovaj napad može biti izveden su: postavljanje vlastitog hipervizora ispod originalnog hipervizora, preuzimanje kontrole originalnog hipervizora, izvođenjem vlastitog hipervizora iznad originalnog. Postavljanje vlastitog hipervizora se često provodi uz pomoć malwarea ili rootkitova. Slika ispod skicira napad. [7]
Ove vrste napada je teško detektirati klasičnim metodama, jer operacijski sustav nije svjestan da je računalo kompromitirano na način da se ispod operacijskog sustava izvodi zlonamjerni hipervizor. Taj hipervizor može zatim zapisivati i pratiti sve radnje na računalu, poput unošenja lozinki ili praćenja web prometa. Možemo reći da u sustavima koji koriste hipervizor, taj isti hipervizor predstavlja jedinstvenu točku kvara (engl. single point of failure).
Valja primijetiti da se i postavljanje zlonamjernog hipervizora na računalo kojega ga nema također može smatrati opasnim napadom.
Međutim postoje jednostavne smjernice koje bi trebale smanjiti mogućnost uspjeha napada ovog tipa. Komunikacija i upravljanje s hipervizorom ne bi trebale biti na istoj komunikacijskoj mreži kao i ostatak prometa. Hipervizor bi se redovno trebao osvježavati novim softverskim nadogradnjama. Te operacijski sustav gosti ne bi trebao imati mogućnost upravljanja hipervizorom. Odnosno s hipervizorom bi se trebalo upravljati s posebnog računala. Također danas već postoje i anti-rootkit softveri koji brinu da rootkit ne bi izvršio zlonamjerne instalacije. Hooksafe je primjer takvog softvera stvorenog upravo za zaštitu hipervizora.
Hipervizor je vrlo moćan i važan alat. Sama činjenica da sve više proizvoda i usluga koristi u nekom obliku hipervizor govori o njegovom značaju. Neki računalni zadaci poput postavljanja poslužitelja danas su gotovo nezamislivi bez hipervizora i virtualnih strojeva. Tvrtke koje pružaju računalne usluge u oblacima poput Microsofta, Amazona i Googlea su izgradile jedan od najprofitabilnijih dijelova svojeg poslovanja upravo zahvaljujući razvoju ove tehnologije. U nadolazeće vrijeme će se sve više povećati upotreba i razvoj hipervizora, bilo zbog povećanja računalne moći, bilo zbog potražnje za uslugama poput dinamičkim postavljanjem virtualiziranog poslužitelja koje je omogućio hipervizor.
Napadi na sustave koji koriste hipervizore također će postajati sve češći. Djelomično i zbog toga što napadač u nekim sustavima nema puno mjesta za napad osim na hipervizor. Zbog toga je važno pratiti sigurnosne smjernice kako bi se izbjegli zlonamjerni napadi. U narednim godinama će se uložiti puno sredstava i vremena na analizu i zaštitu od napada. Također dio razvoja će se odraziti i na alate za računalnu forenziku te će forenzika sustava koji koriste hipervizor postati sve popularnija.
[1] Hypervisors, 8.5.2019., pristupljeno 28.12.2019.
[2] Hypervisor, pristupljeno 28.12.2019.
[3] What Is a Hypervisor? Hypervisor Definition, Types, and Examples, 28.10. 2019, pristupljeno 28.12.2019.
[4] Pariseau, Beth, "KVM reignites Type 1 vs. Type 2 hypervisor debate". SearchServerVirtualization, TechTarget, 15.4.2011., Pristupljeno: 29.12.2019.
[5] Bisht, Namrata, Hypervisor, pristupljeno 29.12.2019.
[6] Why does the Xbox One have a hypervisor, and what is it?, pristupljeno 30.12.2019.
[7] McKay, Dimitri, A Deep Dive Into Hyperjacking, 3.2., 2011, pristupljeno 30.12.2019.