Ringar av skydd

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 31 januari 2019; kontroller kräver 5 redigeringar .

Skyddsringar är en  arkitektur för informationssäkerhet och funktionell feltolerans som implementerar en hårdvaruuppdelning av system- och användarbehörighetsnivåer. Strukturen av privilegier kan avbildas som flera koncentriska cirklar. I detta fall är systemläget ( övervakarläge eller ring noll, så kallad "ring 0"), som ger maximal tillgång till resurser, den inre cirkeln, medan det begränsade användarläget är det yttre. Traditionellt har x86- mikroprocessorfamiljen fyra skyddsringar.

Arkitekturen för skyddsringar är vanligtvis motsatsen till system baserade på obligatorisk adressering, som ger tillgång till ett objekt enligt dess beskrivning ( kapacitetsbaserad  säkerhet ).

Implementering

Stöd för flera skyddsringar var ett av de revolutionerande koncepten som ingick i operativsystemet Multics , föregångaren till dagens UNIX-liknande operativsystem. De flesta UNIX-system använder dock bara 2 ringar, även om hårdvaran stöder fler CPU-lägen .

Många moderna CPU- arkitekturer (inklusive den populära x86- arkitekturen ) inkluderar någon form av skydd. Men trots detta använder operativsystemet Windows NT , såväl som UNIX , inte dessa funktioner fullt ut. Windows NTs föregångare, OS/2 , använde tre ringsignaler: ring 0 för kärnkod och enhetsdrivrutiner, ring 2 för privilegierad kod (program med I/O-åtkomst) och ring 3 för oprivilegierad kod (nästan alla användarprogram).

Det ursprungliga Multics-systemet hade åtta skyddsringar, men många moderna system tenderar att ha färre. Processorn vet alltid i vilken ring koden exekveras, tack vare speciella maskinregister. På vissa system är områden av virtuellt minne också associerade med ringnummer, och den mer privilegierade ringen ges speciella rättigheter (som att adressera verkligt minne, förbigå den virtuella minnesmekanismen).

Ringmekanismen begränsar allvarligt vägarna genom vilka kontroll kan överföras från en ring till en annan, och pålägger även restriktioner för minnesåtkomstoperationer som kan utföras inom ringen. Det finns vanligtvis någon instruktion (gateway) som överför kontrollen från en mindre säker till en säkrare (lägre numrerad) ring; detta är känt som en supervisor-begäran i många operativsystem som använder en ringarkitektur. Denna mekanism är utformad för att begränsa risken för oavsiktliga eller avsiktliga säkerhetsintrång.

Ringskydd kan kombineras med processorlägen (master/kärna/privilegierat läge kontra slav/användare/oprivilegierat läge) på vissa system. Operativsystem som körs på hårdvara som stöder dessa lägen kan använda båda skyddsmetoderna eller bara en av dem.

Effektiv användning av skyddsringens arkitektur kräver nära interaktion mellan hårdvaran och operativsystemet. Operativsystem som är designade för att köras på ett stort antal plattformar kan ha olika implementeringar av ringmekanismen på varje plattform. Ofta förenklas säkerhetsmodellen till två åtkomstnivåer: "kärna"-nivån och "användarnivån", även om hårdvaran ger mer detaljerade exekveringsnivåer.

Supervisor Mode

Termen supervisor mode ( Supervisor mode ) utvecklare och tillverkare av processorer hänvisar som regel till det mest privilegierade driftsättet för processorn. Oftast används detta läge för att köra operativsystemets kärnkod. Normalt motsvarar detta läge i funktionalitet den 0:e skyddsringen (Ring 0) i x86-processorer, det vill säga det ger obegränsad tillgång till alla processorfunktioner, arbete med kringutrustning och så vidare. Koden som fungerar i detta läge hanterar som regel de tillgängliga hårdvaruresurserna, delar deras användning mellan separata uppgifter (processer) och så vidare, vilket ledde till detta lägesnamn.

Vissa utvecklare och tillverkare av processorer, som ARM, använder inte klassificeringen av processordriftslägen i form av skyddsringar. Ändå har de flesta moderna processorer (förutom de enklaste) vanligtvis flera driftsätt som skiljer sig från varandra i de privilegier som är tillgängliga i detta läge.

Hypervisor-läge

Vissa moderna processorer kan tillhandahålla ett extra driftsätt som kallas Hypervisor- läge . Som regel är detta läge implementerat för att stödja virtualiseringstekniker på hårdvarunivå. Detta gör det möjligt att uppnå inte bara samtidig exekvering av flera uppgifter, utan också samtidig exekvering av flera operativsystem på en enda processor utan betydande prestandaförluster och utan att ändra själva operativsystemen. Som regel, när du använder detta läge, är full åtkomst till alla resurser möjlig från hypervisorläget. I ett sådant fall är övervakarläget inte längre det mest privilegierade och begränsar många privilegierade operationer. När operativsystem utför privilegierade operationer i supervisorläge, överförs kontrollen till ett speciellt program - hypervisorn . Hypervisorn bestämmer användningen av tillgängliga hårdvaruresurser av flera operativsystem på samma sätt som operativsystemen själva bestämmer resurser mellan flera uppgifter. I huvudsak är en hypervisor vanligtvis en liten kärna som hanterar resursallokering över flera operativsystem och körs i ett lager under själva operativsystemen. På grund av detta, i x86-terminologi, kallas detta läge ofta villkorligt ring −1 (Ring −1).

System Management Mode (SMM)

System Management Mode är det mest privilegierade exekveringsläget på x86 / x86-64 [1] -arkitekturprocessorer (uppträdde först i 386SL ). SMM-läget (villkorligt kallat "Ring -2") är mer privilegierat än "Ring 0" och hårdvaruhypervisorn ( VT/AMD-v ) "Ring -1". Detta läge avbryter normal kodexekvering och börjar exekvera specialkod från system-RAM (SMRAM) som inte är tillgänglig i andra lägen. Denna kod får åtkomst till allt systemminne, inklusive kärnan och hypervisorminnet.

Joanna Rutkowska har publicerat information om Blue Pill- sårbarheten , som tillåter exekvering av godtycklig kod i SMM-läge.

Interaktionsmodell mellan CPU- och OS-abstraktionslager

SMM-läget implementerades först i 80386SL och i486SL MP. Från och med Intel-486 har detta läge blivit ett obligatoriskt element i IA-32-arkitekturen. SMM-läget är utformat för att utföra vissa åtgärder med möjlighet till fullständig isolering från operativsystemet. Processorn går in i detta läge endast av hårdvara på SMI#-signalen. Det finns inget programvarusätt att växla till detta läge. När ett SMI-avbrott inträffar exekveras hanterarens SMI-kod i ett separat adressutrymme (SMRAM). Under övergången till SMI-läge bevaras sammanhanget för den avbrutna processen. Under körningen av SMM-hanteraren är alla avbrott inaktiverade. SMI-hanterarkod kan bara köras i SMRAM.

2006 introducerade Loïc Duflot en mycket nyfiken attack mot OpenBSD-säkerhetslagermekanismen som använde SMM-läget. På den tiden var SMM-läget inte skyddat och det var möjligt att skriva godtycklig kod till SMRAM. Men sedan började systemtillverkare försvara SMM-regimen. För att lagra den exekverbara koden i SMM tilldelades ett speciellt minnesområde, kallat SMRAM, som fick speciellt skydd från chipsetet (Memory Controller Hub, för att vara exakt). På de flesta moderna system är det redan ganska otrivialt att exekvera kod med SMM-privilegier. För att göra detta måste du hitta ett "hål" i chipset eller BIOS (även om vi har tillgång på kärnnivå). Faktum är att på Black Hat 2008 i Las Vegas, gjorde Sherri Sparks och Shawn Embleton en presentation om SMM rootkits , men gjorde det klart att deras rootkits bara kan laddas på äldre system (före 2006). Vid konferensen diskuterades också ett "hål" i Intels BIOS som gjorde att godtycklig kod kunde exekveras i SMM-läge. Sedan upptäcktes ytterligare två sätt att bryta in i SMM-läge på olika system. En annan attack, upptäckt i slutet av 2008, fungerade på ett stort antal Intel-system (och potentiellt maskiner med äldre BIOS).

SMM rootkits (eller ring-2 rootkits) kräver tillgång till mycket säkert SMM-minne, och på de flesta moderna system måste en angripare utnyttja "hål" (inte trivialt att hitta).

SMM-attacker är designade för en specifik BIOS-version (eller BIOS-linje) och chipsetfamilj, till exempel för den tredje eller 4:e serien av Intel-kretsuppsättningar (dvs attacker på Q35 och Q45 eller attacker mot AMI och AWARD BIOS är olika).

Intel vPro / Active Management Technology

Invisible Things Lab föreslog att funktionen hos Intel vPro/ Intel AMT -teknik ring -3. [2] Inom ramen för denna teknik innehåller styrkretsar som stöder vPro-teknik en oberoende mikroprocessor ( ARC 4-arkitektur), har ett separat gränssnitt till nätverkskortet, exklusiv tillgång till ett dedikerat RAM-område (16 MB), DMA-åtkomst till huvudet BAGGE. Program på den exekveras oberoende av centralprocessorn, den fasta programvaran lagras tillsammans med BIOS-koder eller på ett liknande SPI-flashminne (koden har en kryptografisk signatur). En del av den fasta programvaran är en inbäddad webbserver. AMT är inaktiverat som standard, men en del av koden fungerar fortfarande i det här läget även när AMT är inaktiverat. Ringkod -3 är aktiv även i S3 viloläge.

Se även

Anteckningar

  1. Handbok för programvaruutvecklare för Intel® 64 och IA-32 Architectures. Volym 3B: Systemprogrammeringsguide. kapitel 26 . PDF  (3,93 MB)
  2. Introducing Ring -3 Rootkits Arkiverade 6 januari 2019 på Wayback Machine // Alexander Tereshkin, Rafal Wojtczuk ; BH 2009-07-29

Länkar