Enforcing memory protection with hardware virtualization
Master thesis
Permanent lenke
http://hdl.handle.net/11250/143962Utgivelsesdato
2010Metadata
Vis full innførselSamlinger
Sammendrag
ENGELSK: A monolithic operating system (OS) - such as Windows or Linux - distinguish between executing
in restricted user mode or privileged kernel mode. Third party device drivers and modules
are executing in kernel mode alongside the code of the OS, thus has direct access to memory,
hardware devices and execution state. Limitations in memory protection makes it possible to
modify any memory, including read-only. This is exploited by kernel malware to manipulate
the code and workflow of the OS. Security software such as integrity checkers, anti-virus and
host-firewalls attempt to mitigate this threat, but are also prone to subversion. It is arguably
impossible to implement effective security on a privilege level equal to the malicious code, and
implemented in the very environment to be protected.
Hardware virtualization indroduces a new privilege level superior to the OS. This technology
is designed to utilize ample computational resources by collocating several operating systems
on one physical machine. A hypervisor manage and monitor virtual machines by intercepting
privileged instructions and events. The idea behind this work is to leverage the hypervisor to
protect kernel memory in a way the OS itself is not able to.
This thesis investigates whether the hypervisor provides a suitable environment for preventing
unwanted memory modifications. Memory management, kernel attack surface and hardwareassisted
virtualization are addressed to enumerate protection limitations and opportunities. Based
on this, a set of techniques to prevent modification of memory in need of protection is
presented. The hypervisor is used to intercept and deny attempts to write to memory defined as
protected. A prototype of the proposed protection is demonstrated in a simulated attack scenario.
The malicious modification attempts are successfully prevented, thus protecting the kernel from
a known design vulnerability. NORSK: Monolittiske operativsystemer som Windows og Linux opererer med to privilegienivåer for eksekvering
av kode. Begrensede user mode eller priviligerte kernel mode. I arbeidsminnet i kjernen
finnes operativsystemkode side om side med ekstern kode for maskinvaredrivere og andre
tredjeparts moduler. Disse har direkte tilgang til minne, øvrig maskinvare og operativsystemets
tilstand. Svakheter i implementasjonen av minnetilgang og isolasjon muligjør modifikasjon av alt
arbeidsminne, også minne med kun lesetilgang. Dette kan utnyttes av ondsinnede kjernemoduler
for å manipulere tilstand og funksjonsflyt i operativsystemet. Sikkerhetsprogramvare som for
eksempel antivirus, host-brannmur og integritetssjekker forsøker å beskytte mot denne trusselen,
men er også utsatt for subversjon. Implementasjon av effektive sikkerhetsmekanismer på samme
privilegienivå, og i samme system, som trusselen man skal beskyttes mot er i beste fall vanskelig,
kanskje umulig.
Virtualisering av maskinvare er en relativt ny teknologi som introduserer et nytt privilegienivå
overordnet operativsystemets kernel mode. Denne teknologien er tiltenkt å utnytte et overskudd
av maskinkraft ved å konsolidere flere operativsystemer på en enkelt fysisk maskin. En hypervisor
kontrollerer og organiserer virtuelle maskiner ved å overta eksekvering ved priviligerte instruksjoner
eller spesielle hendelser. Konseptet denne oppgaven bygger på er å utnytte en hypervisor
til å beskytte operativsystemkjernens arbeidsminne, noe kjernen selv har begrensede muligheter
for å gjøre.
Masteroppgavens målsetning er å undersøke hvorvidt en hypervisor egner seg til å implementere
beskyttelsesmekanismer mot uønskede minnemodifikasjoner. Minnehåndtering, operativsystemets
angrepsflate og prosessor-støttet virtualisering blir innledningsvis introdusert. Basert på
denne teorien blir begrensninger og muligheter for minnebeskyttelse synliggjort. Et sett av beskyttelsesmekanismer
blir deretter foreslått. Hypervisoren benyttes til å avskjære og forhindre
forsøk på å modifisere minneområder som er merket for beskyttelse. En prototyp av mekanismene
er implementert og demonstrert i et simulert angrepsscenario. Et ondsinnet forsøk på å
manipulere kjernens funskjonsflyt ved bruk av en kjent angrepsteknikk kan forhindres.