Paginação — o esquema de gestão memória dividindo memória virtual e física em páginas tamanho fixo — é um primitivo de segurança fundamental em kernels OS modernos (Linux, Windows, macOS, *BSD, hypervisors). Eis como impõe segurança.
1. Isolamento Memória (Separação Processos)
- Cada processo obtém espaço endereço virtual privado (ex: 128 TB em x86-64)
- Page tables mapeiam páginas virtuais → frames físicos unicamente por processo
- Processo A não consegue endereçar memória Processo B — nenhuma tradução válida existe
- Derrota: Buffer overflow → leitura/escrita arbitrária, info leaks, injeção código
2. Permissões Nível Página (ACLs Hardware-Enforced)
Cada Page Table Entry (PTE) contém bits:
| Bit | Nome | Função Segurança |
| P | Present | Página mapeada? Se 0 → page fault |
| R/W | Leitura/Escrita | Write-protect código, dados read-only |
| U/S | Utilizador/Supervisor | Ring 3 vs Ring 0 acesso — memória kernel protegida |
| NX/XD | No-eXecute | DEP: Stack/heap não-executável → para injeção código |
| Dirty/Accessed | Rastreio | Copy-on-write, working set, decisões swap |
3. Separação Kernel/Espaço Utilizador
- Kernel mapeia toda memória física na metade alta (ffff8000`00000000+)
- Processos utilizador mapeiam apenas as suas páginas na metade baixa
- Bit U/S = 0 para páginas kernel → acesso user-mode = page fault (#PF) → SIGSEGV / BSOD
- KPTI (Kernel Page Table Isolation) mitiga Meltdown ao desmapear kernel em user mode
4. Contenção Buffer Overflow
- Stack overflow sobrescreve páginas stack adjacentes → atinge guard page (P=0) → #PF
- Heap overflow: Metadados alocador em páginas separadas, podem ser read-only
- ASLR + Paginação = endereços base randomizados por mapping — exploits precisam info leak primeiro
5. Page Faults Como Telemetria Segurança
- #PF em página NX → execução código tentada em data (shellcode, ROP)
- #PF em página U/S=0 → processo utilizador toca memória kernel
- #PF em página P=0 → acesso memória libertada/não mapeada (use-after-free)
- Hypervisors/EPP (Intel PT, AMD IBS) rastreiam #PF para deteção anomalias
6. Virtualização Segura (Second Level Address Translation — SLAT)
- Intel EPT, AMD RVI, ARM Stage-2: Guest physical → Host physical
- Hypervisor controla ambos níveis page table
- VM escape requer quebrar duas camadas tradução + validação hypervisor
- Encriptação memória (SEV-SNP, TDX) adiciona chaves encriptação por-VM em page tables
7. Funcionalidades Hardening Avançadas
- Bit WP (Write Protect) no CR0: Kernel impõe read-only nas suas próprias páginas
- SMEP/SMAP: CPU bloqueia execução/acesso kernel de páginas utilizador
- PKU (Protection Keys for Userspace): 16 domínios, registo por-thread (PKRU)
- MTE (Memory Tagging Extension, ARMv8.5+): Tags 4-bit no byte superior do ponteiro + granule
Resumo
Paginação transforma memória física (partilhada, desprotegida) em memória virtual (isolada, permissionada, auditável). É a fundação hardware para: isolamento processos, menor privilégio, DEP, ASLR, KPTI, virtualização, e segurança memória. Sem paginação, modelos segurança modernos colapsam.