Ochrana jádra a sandboxing
Kernel hardening
Ochrana jádra operačního systému (kernel hardening) a sandboxing patří mezi klíčové techniky obrany na hostiteli. Jádro je nejprivilegovanější komponenta – kompromitace znamená plnou kontrolu nad systémem. Sandboxing naopak omezuje dosah procesů a aplikací, a tak snižuje dopady případného zneužití zranitelnosti. Tento článek přehledně popisuje principy, architektury a praktické postupy ochrany jádra a návrhu sandboxů napříč Linuxem, Windows, macOS a BSD systémy.
Hrozby a model rizik
- Escalation to kernel: zneužití chyb v ovladačích, subsystémech (síť, souborové systémy), eBPF či ioctl, vedoucí k získání ring-0 práv.
- Boční kanály a mikroarchitektura: třída chyb typu Spectre/Meltdown, MDS, L1TF, které obcházejí izolaci.
- Dodavatelský řetězec: škodlivé moduly, neautorizované jádrové patche, nevalidované aktualizace.
- Post-exploit perzistence: rootkity, hooking systémových volání, manipulace s LKM/driver signaturami.
Zásady návrhu: minimalizace a izolace
- Princip nejmenších oprávnění: kernel i uživatelské procesy by měly žádat jen nezbytná privilegia.
- Redukce útokové plochy: vypnutí nepoužívaných subsystémů/ovladačů, omezení rozhraní (sysctl, modulární buildy, microVM).
- Silná izolace domén: oddělení jaderných adresních prostorů, kontejnerových jmenných prostorů a VM.
Paměťové a kontrolní mitigace v jádře
- W^X (Write XOR Execute): žádná paměť není zároveň zapisovatelná a spustitelná.
- ASLR/KASLR: randomizace layoutu uživatelského i jaderného prostoru snižuje spolehlivost exploitů.
- SMEP/SMAP (x86), PAN (ARM): zákaz spouštění/přístupu do uživatelské paměti z jádra.
- KPTI: izolace tabulek stránek mezi uživatelským a jaderným režimem (reakce na Meltdown).
- CFI a Shadow Stack (CET): integrita toku řízení a stínové zásobníky proti ROP/JOP.
- Pointer Authentication (ARMv8.3-A PAC) a BTI: kryptografické podepisování návratových adres a bariéry nepřímých skoků.
- Sanitizéry a detektory: KASAN/UBSAN/KMSAN/KCSAN, slaby init, stack canaries, FORTIFY_SOURCE v jádře.
Integrita kódu a boot řetězec
- Secure/Measured Boot: UEFI Secure Boot a TPM měří a validují firmware, bootloader, jádro a initramfs.
- Driver/Module Signing: požadavek podpisů pro kernel moduly a ovladače; blokování neznámých LKM.
- IMA/EVM (Linux): integrita souborů a metadat, politika měření a vynucení.
- System Integrity Protection (macOS): ochrana systémových cest, kernel extension policy, notarizace.
- Windows HVCI/Code Integrity: Hypervisor-Enforced Code Integrity, povinné signování a blokace neznámého kódu v kernelu.
Omezení rozhraní jádra a schopností
- Capabilities (Linux): jemnozrnná náhrada setuid – proces dostává jen dílčí privilegia (např.
CAP_NET_ADMIN). - Seccomp-bpf: filtrování systémových volání s BPF pravidly; odmítání nečekaných syscallů.
- LSM (SELinux, AppArmor, Smack): Mandatory Access Control nad objekty a subjekty; politiky typu MLS/MCS.
- OpenBSD pledge/unveil: deklarativní omezení schopností a přístupu k FS na úrovni procesu.
- eBPF ostražitě: omezení map/program typů, JIT hardening, zakázání unprivilegovaného BPF v produkci.
Jmenné prostory a cgroups: základ kontejnerového sandboxu
- PID/NET/IPC/MNT/UTS/USER namespaces: oddělení viditelnosti procesů, sítě, IPC, mountů, hostnames a identit.
- cgroups v2: řízení zdrojů (CPU/Mem/IO), limity, prioritizace, ochrana před DoS hladem zdrojů.
- Seccomp, capabilities a LSM v kontejnerech: default-deny profily, drop všech nepoužitých schopností.
- Rootless kontejnery: mapování uživatelů (userns) a absence skutečného root na hostiteli.
Sandboxing ve více vrstvách
- Lehký sandbox (app level): seccomp profily, AppArmor/SELinux domény, pledge/unveil.
- Izolace pomocí kontejnerů: namespaces + cgroups + LSM, immutable FS a read-only rootfs.
- MicroVM a hypervizory: KVM/Hyper-V/Apple HV + Firecracker/Kata Containers pro silnější izolaci než kontejnery.
- Virtualizace GPU/IO: SR-IOV, vIOMMU/IOMMU – zabránění DMA útokům a útěkům přes zařízení.
Sandboxing v prohlížečích a desktopových aplikacích
- Víceprocesová architektura: renderer v nízkých privilegích, broker proces se striktními pravidly.
- Site Isolation: oddělení domén do separátních procesů; mitigace Spectre přes hranice procesů.
- Win32/Windows Sandbox: Job objekty, integrity levels (MIC), AppContainer, ACG (Arbitrary Code Guard), CIG (Code Integrity Guard).
- macOS sandbox: sandboxd profily, entitlements a TCC pro citlivá oprávnění.
- Flatpak/Snap: portálový model přístupů, deklarativní manifesty oprávnění.
Mobilní platformy
- Android: SELinux v režimu enforcing, per-app UID, scoped storage, restrikce dynamického načítání kódu.
- iOS/iPadOS: sandbox s entitlements, kódová podepisování, oddělení jádra (XNU) a rozšíření, ochrany proti JIT.
Aktualizace, kód a jazykové bezpečnostní prvky
- Životní cyklus patchů: rychlé kernel updaty (livepatch/ksplice), CI/CD pro ovladače.
- Bezpečnější jazyky v jádře: postupné zavádění Rust komponent v Linuxu a driverech.
- Statická a dynamická analýza: Coverity, clang static analyzer, KCOV, syzkaller fuzzing.
Monitorování, audit a detekce
- Audit frameworky: Linux Auditd, SELinux audit, Windows ETW, macOS Unified Logging.
- eBPF sondy a telemetry: bezpečná sada schválených programů pro detekci anomálií systémových volání.
- Integrace do SIEM/XDR: korelace kernel eventů, detekce rootkit technik (skryté moduly, anomální syscalls).
Bezpečnost I/O a zařízení
- IOMMU: izolace DMA přístupů; povinné pro zařízení připojovaná uživatelem (Thunderbolt/USB4).
- Firmware a periferie: aktualizace přes LVFS/Windows Update, verifikace signatur, Device Guard.
Praktická hardening doporučení (Linux)
- Zapněte
kernel.unprivileged_bpf_disabled=1,kernel.kptr_restrict=2,kernel.dmesg_restrict=1. - Vynucujte LSM (SELinux enforcing nebo AppArmor s profily pro démony a kontejnery).
- Omezte načítání modulů:
module.sig_enforce=1,module_blacklist=..., případnělsm.lockdown=confidentiality. - Seccomp profily pro síťové démony (nginx, sshd s omezeními), kontejnery s default-deny sadou syscallů.
- Drop capabilities v kontejnerech (ponechat jen nezbytné, ideálně žádné).
- Oddělené mounty:
noexec,nosuid,nodevpro/tmp,/var/tmp, a kontejnery s read-only rootfs.
Praktická hardening doporučení (Windows a macOS)
- Windows: HVCI (Memory Integrity), VBS, ASR pravidla, AppLocker/WDAC, povinné ověřené ovladače, Defender Exploit Guard.
- macOS: SIP zapnuté, blokace nepodepsaných kextů, pravidelné updaty, TCC politika pro kamera/mikrofon/dokumenty.
Testování sandboxů a fuzzing
- Syzkaller/KCOV: generativní fuzzing systémových volání pro Linux; integrace do CI.
- libFuzzer/AFL++: fuzzing parsovacích knihoven používaných v kernel-space i user-space brokerech.
- Chaos engineering: injektování chyb zařízení, síťových výpadků a paměťových limitů v izolovaných prostředích.
Sandboxing vzory pro servery a služby
- Broker/Worker: broker s minimem práv; workery sandboxované (seccomp/LSM) zpracovávají nedůvěryhodná data.
- Privilege separation: oddělení částí aplikace podle citlivosti; pomocné démony běží s nízkými právy.
- Per-request izolace: krátkodobé kontejnery/microVM pro dávkové úlohy (FAAS-style).
Srovnávací tabulka: vrstvy izolace
| Mechanismus | Granularita | Overhead | Úroveň izolace | Typické použití |
|---|---|---|---|---|
| Seccomp/LSM | Proces | Nízký | Střední | Daemon, renderer, utilita |
| Kontejnery | Aplikace/Pod | Nízký–střední | Vyšší (sdílené jádro) | Mikroslužby, CI/CD |
| MicroVM (Firecracker/Kata) | Instance | Střední | Vysoká | Multi-tenant, serverless |
| Plná VM | OS | Vyšší | Velmi vysoká | Silná separace tenantů |
Checklist pro hardening jádra a sandboxing
- Zapnutý Secure/Measured Boot, povinné signování modulů/ovladačů.
- Aktualizace mikrocode/patchů pro Spectre/Meltdown a příbuzné třídy.
- Vynucený LSM (SELinux/AppArmor), profily pro kritické démony.
- Seccomp profily a omezení capabilities pro všechny síťové služby.
- Rootless kontejnery, read-only rootfs,
no-new-privilegesflag. - IOMMU aktivní, izolace neprivilegovaných zařízení a USB politik.
- Audit a telemetrie do SIEM, detekce anomálií v syscals/eBPF.
- Fuzzing a testy sandboxu v CI, pravidelné bezpečnostní review.
Příklady konfigurací (ilustrativní)
- systemd sandboxing služby:
NoNewPrivileges=yes,PrivateTmp=yes,ProtectSystem=strict,ProtectHome=yes,CapabilityBoundingSet=(prázdné),SystemCallFilter=@system-service. - Docker/Podman:
--cap-drop=ALL,--security-opt=no-new-privileges,--pids-limit,--read-only,--device-read-bpslimity, vlastní seccomp profil. - SELinux: definice type enforcement pro démony obsluhující nedůvěryhodné vstupy (např. parsování PDF).
Budoucí trendy
- Více Rustu v kernelu a driverech: redukce memory-unsafe chyb.
- Hardwarová izolace aplikací: TEE/Confidential Computing (SEV/TDX/SGX) a enclávy pro citlivá pracovní data.
- Formální ověřování kritických částí: model checking a verifikované mikrojádro pro specializované domény.
- Lepší eBPF policie: bezpečné subsety a statická verifikace pro produkční observabilitu bez rizika úniku.
Shrnutí
Ochrana jádra a sandboxing vyžadují vícevrstvý přístup: od integritního bootu a paměťových mitigací přes omezení rozhraní jádra až po správně navržené sandboxy s jasnými politikami. Kombinace LSM, seccomp, capabilities, jmenných prostorů a – podle potřeby – microVM/VM poskytuje robustní izolaci. Úspěch závisí na disciplíně v patchování, monitoringu, fuzzingu a průběžném snižování útokové plochy. Investice do těchto oblastí významně snižuje pravděpodobnost i dopady kompromitace systému.