La qüestió de si el nucli aborda rangs de memòria física separats amb una sola taula de pàgines pertany als principis bàsics de la gestió de memòria virtual, els mecanismes d'aïllament de maquinari i l'aplicació de l'aïllament de programari en els sistemes operatius moderns. Per abordar aquesta qüestió amb precisió, cal examinar l'arquitectura de les taules de pàgines, les filosofies de disseny de la separació de memòria del nucli i de l'usuari, la implementació pràctica de la gestió de memòria en sistemes operatius àmpliament utilitzats i les implicacions de seguretat d'aquests dissenys.
Memòria virtual i taules de pàgines
Els sistemes operatius moderns utilitzen memòria virtual per abstraure la disposició de la memòria física dels processos en execució, proporcionant a cada procés la il·lusió d'un espai d'adreces contigu i privat. Aquesta abstracció està habilitada per la Unitat de Gestió de Memòria (MMU), que tradueix adreces virtuals a adreces físiques mitjançant taules de pàgines. La taula de pàgines és una estructura de dades crítica en aquest procés de traducció. En un escenari típic, una entrada de la taula de pàgines (PTE) conté informació sobre el mapatge, inclosa l'adreça del marc físic, els permisos d'accés i els indicadors d'estat.
Les taules de pàgines s'organitzen jeràrquicament a la majoria d'arquitectures contemporànies. Per exemple, els sistemes x86-64 utilitzen una jerarquia de quatre nivells: Mapa de pàgines Nivell 4 (PML4), Taula de punters del directori de pàgines (PDPT), Directori de pàgines i Taula de pàgines. Cada nivell indexa un subconjunt de l'espai d'adreces virtual, escalant així l'estructura de la taula de pàgines a espais d'adreces grans.
Espais d'adreces d'usuari vs. nucli
El concepte d'aïllament de programari requereix que els processos en mode d'usuari no puguin accedir ni manipular arbitràriament la memòria del nucli. Per fer-ho complir, l'espai d'adreces virtuals es divideix en dues regions principals:
1. Espai d'usuari: Aquesta regió és accessible pels processos en mode d'usuari i conté el seu codi, dades, pila, heap i fitxers mapats.
2. Espai del nucli: Aquesta regió està reservada per al nucli del sistema operatiu, els controladors de dispositius i les estructures crítiques del sistema. El codi en mode d'usuari no pot accedir directament a aquesta regió; els intents de fer-ho solen provocar un error de protecció.
Els sistemes operatius implementen aquesta divisió de maneres diferents, però una pràctica habitual és reservar la part superior de l'espai d'adreces virtuals (per exemple, l'1/4 o l'1/2 superior) per a l'ús del nucli, mentre que la resta s'assigna als processos d'usuari.
Taules d'una pàgina o de diverses pàgines
La resposta a si el nucli aborda rangs de memòria física separats amb una sola taula de pàgina depèn de la definició de "taula de pàgina única" i del context del disseny del sistema operatiu.
- Taula de pàgina única per procés (amb mapatge del nucli):
En la majoria de sistemes operatius convencionals (com ara Linux, Windows i macOS), cada procés té la seva pròpia taula de pàgines (o conjunt de taules de pàgines) que defineix el mapatge de tot el seu espai d'adreces virtuals, tant les regions d'usuari com les del nucli. Això significa que, mentre que la porció de l'espai d'usuari és única per a cada procés, la porció de l'espai del nucli és generalment idèntica en tots els processos. La memòria del nucli es mapa a la taula de pàgines de cada procés a les mateixes adreces virtuals altes, però amb diferents permisos d'accés: només el codi en mode nucli pot accedir a aquestes adreces, mentre que el codi en mode usuari no pot.
Aquest disseny permet que el nucli faci una transició ràpida del mode d'usuari al mode de nucli (per exemple, durant una crida al sistema o una interrupció) sense necessitat de canviar les taules de pàgines, ja que el codi del nucli i les dades crítiques sempre estan mapejades i són fàcilment accessibles. Per tant, la taula de pàgines del procés aborda tant els rangs de memòria física específics de l'usuari com els rangs de memòria física compartits pel nucli dins d'una única estructura lògica de taula de pàgines.
- Taula de pàgines només del nucli (aïllada):
Alguns dissenys centrats en la seguretat implementen una taula de pàgines separada exclusivament per al nucli. En aquests sistemes, un canvi de context al mode nucli implica canviar a una taula de pàgines diferent, només del nucli, que no assigna en absolut la memòria de l'usuari. Aquest enfocament millora l'aïllament, ja que evita que el nucli accedeixi accidentalment a la memòria de l'usuari amb privilegis elevats i elimina certes classes d'atacs, com ara les omissions de l'aleatorització del disseny de l'espai d'adreces del nucli (KASLR) i les fuites de memòria del nucli derivades dels assignacions de memòria de l'usuari.
Tanmateix, aquest enfocament té un cost de rendiment a causa de l'augment de la sobrecàrrega de canviar les taules de pàgina en cada transició entre el mode d'usuari i el mode del nucli. Per tant, és menys comú en sistemes operatius d'ús general, però es pot adoptar en nuclis d'alta fiabilitat o endurits.
Adreçament de rangs de memòria física separats
Un aspecte clau de la qüestió és com el nucli aprofita la taula de pàgines per abordar rangs de memòria física separats. Dins de la taula de pàgines, cada entrada pot assignar una pàgina virtual a qualsevol marc físic. Per tant, una sola estructura de taula de pàgines pot assignar regions de memòria física no contigües a memòria virtual contigua, o viceversa. Aquesta és una característica vital tant per al nucli com per als processos d'usuari.
- Exemple: Mapeig del codi del nucli i dels buffers de dispositiu
Suposem que el nucli ocupa diverses regions de memòria física no contigües: una per al codi del nucli, una altra per als controladors de dispositius i una tercera per a les memòries intermèdies DMA. La part de la taula de pàgines del nucli (compartida entre tots els processos) assignarà cadascuna d'aquestes regions a adreces virtuals contigües (des de la perspectiva del nucli), tot i que les adreces físiques subjacents no siguin contigües. Les taules de pàgines estan dissenyades específicament per gestionar aquesta flexibilitat d'assignació, permetent al nucli adreçar qualsevol rang de memòria física que controli.
- Exemple: Memòria de procés d'usuari
De la mateixa manera, els processos d'usuari poden assignar memòria dinàmicament, donant lloc a assignacions de memòria física no contigües. La taula de pàgines del procés assigna cada pàgina de memòria assignada al marc físic apropiat, independentment de la contigüitat física.
Implicacions de seguretat i aïllament de programari
El disseny de mapar la memòria del nucli a la taula de pàgines de cada procés comporta consideracions tant de rendiment com de seguretat. Els beneficis inclouen una gestió eficient de les crides del sistema i canvis de context ràpids, però també significa que si existeix una vulnerabilitat (com ara una vulnerabilitat d'escalada de privilegis o una falla en l'aïllament de la memòria), un atacant podria aprofitar la presència de mapatges del nucli per inferir la disposició de la memòria del nucli o intentar accedir a la memòria del nucli en determinades condicions.
Les mitigacions contra aquestes classes de vulnerabilitats inclouen:
- Permisos d'accés estrictes: Les pàgines del nucli estan marcades com a només per a supervisor a les entrades de la taula de pàgines. La MMU imposa que el codi en mode d'usuari no pugui accedir a aquestes pàgines.
- Aïllament de la taula de pàgines del nucli (KPTI): En resposta a vulnerabilitats d'execució especulativa (per exemple, Meltdown), alguns sistemes (especialment Linux) han implementat l'aïllament de taules de pàgines del nucli, on el nucli no es mapa en espais d'adreces de processos d'usuari excepte quan s'executa en mode nucli. Aquest enfocament utilitza taules de pàgines separades per al mode d'usuari i el mode nucli, millorant l'aïllament a costa d'una sobrecàrrega addicional.
- Aleatorització de la disposició de l'espai d'adreces (ASLR): Els mapes de memòria del nucli s'aleatoritzen en el moment de l'arrencada per dificultar que els atacants puguin predir la ubicació del codi i les estructures de dades del nucli.
- Posada a zero i sanejament de memòria: Quan es canvien els contextos o s'allibera memòria, el sistema operatiu garanteix que els processos no autoritzats no puguin accedir a les dades residuals.
Estructura de la taula de pàgines a la pràctica
Per aclarir-ho encara més, considerem com es veu la taula de pàgines d'un procés típic en un sistema operatiu convencional com ara Linux en x86-64:
– La part inferior de l'espai d'adreces virtuals (per exemple, 0x0000000000000000 – 0x00007fffffffffff) es mapa a la memòria del procés de l'usuari.
– La part superior (per exemple, 0xffff800000000000 – 0xffffffffffffffff) està assignada a la memòria del nucli. Aquesta regió és idèntica a totes les taules de pàgines per a tots els processos.
Així, una única taula de pàgines lògiques (per procés) adreça tant les regions de memòria física de l'usuari com les del nucli, mapant-les als seus respectius espais d'adreces virtuals. Les assignacions del nucli dins de cada procés són consistents i apunten a les mateixes ubicacions físiques, mentre que les assignacions d'usuari difereixen segons el procés.
Escenaris especialitzats
- Hipervisors i màquines virtuals: En entorns virtualitzats, l'hipervisor gestiona el mapatge de memòria física-màquina, mentre que el nucli convidat gestiona la seva pròpia memòria física convidada a través de taules de pàgines. Els principis continuen sent similars, amb múltiples nivells de mapatge.
- Micronuclis i nuclis minimalistes: Aquests nuclis poden emprar estratègies alternatives per maximitzar l'aïllament, com ara utilitzar taules de pàgines separades per al nucli i el codi d'usuari, per reduir la superfície d'atac i restringir les rutes d'accés.
Paràgraf de resum
El nucli pot abordar, i de fet ho fa, rangs de memòria física separats utilitzant una estructura de taula de pàgina única implementada per procés, amb assignacions del nucli compartides i assignacions específiques de l'usuari coexistint dins de la mateixa taula. Aquest disseny aconsegueix un equilibri entre rendiment i seguretat. L'aplicació dels permisos d'accés per part de la MMU i les polítiques de seguretat del sistema operatiu garanteixen que, tot i que el nucli i la memòria de l'usuari estiguin assignats a la mateixa taula de pàgines, romanguin aïllats l'un de l'altre durant el funcionament normal.
Altres preguntes i respostes recents sobre Fonaments bàsics de seguretat dels sistemes informàtics EITC/IS/CSSF:
- Pot l'escalat d'un model d'amenaces segur afectar la seva seguretat?
- Quins són els pilars principals de la seguretat informàtica?
- Per què el client necessita confiar en el monitor durant el procés d'acreditació?
- L'objectiu d'un enclavament és fer front a un sistema operatiu compromès, encara proporcionant seguretat?
- Les màquines que venen els fabricants de proveïdors podrien suposar una amenaça de seguretat a un nivell superior?
- Quin és un cas d'ús potencial per als enclavaments, tal com demostra el sistema de missatgeria Signal?
- Quins són els passos necessaris per configurar un enclavament segur i com protegeix la maquinària de la pàgina GB el monitor?
- Quin és el paper de la base de dades de la pàgina en el procés de creació d'un enclavament?
- Com s'assegura el monitor que el nucli no l'enganya en la implementació d'enclavaments segurs?
- Quin és el paper de l'enclavament de Chamorro en la implantació d'enclavaments segurs?
Consulteu més preguntes i respostes a Fonaments de seguretat dels sistemes informàtics EITC/IS/CSSF
Més preguntes i respostes:
- Camp: Seguretat cibernètica
- programa: Fonaments bàsics de seguretat dels sistemes informàtics EITC/IS/CSSF (anar al programa de certificació)
- Lliçó: Mitigació de danys per vulnerabilitats de seguretat en sistemes informàtics (anar a la lliçó relacionada)
- Tema: Aïllament del programari (anar al tema relacionat)

