Ochrana jádra
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 – jeho 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říč systémy Linux, Windows, macOS a BSD.
Hrozby a model rizik
- Eskalace do jádra: zneužití chyb v ovladačích, subsystémech (síť, souborové systémy), eBPF či ioctl, vedoucí k získání oprávnění ring-0.
- Boční kanály a mikroarchitektura: třída chyb typu Spectre/Meltdown, MDS, L1TF, které obcházejí izolaci.
- Dodavatelský řetězec: škodlivé moduly, neautorizované záplaty jádra, nevalidované aktualizace.
- Perzistence po zneužití: rootkity, hookování systémových volání, manipulace s podpisy LKM/ovladačů.
Zásady návrhu: minimalizace a izolace
- Princip nejmenších oprávnění: jádro i uživatelské procesy by měly požadovat jen nezbytná oprávnění.
- Redukce útočné plochy: vypnutí nepoužívaných subsystémů/ovladačů, omezení rozhraní (sysctl, modulární sestavení, microVM).
- Silná izolace domén: oddělení adresních prostorů jádra, jmenných prostorů kontejnerů a virtuálních strojů.
Paměťové a řídicí mitigace v jádře
- W^X (Write XOR Execute): žádná paměť není zároveň zapisovatelná a spustitelná.
- ASLR/KASLR: randomizace rozložení 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 jako ochrana 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, slab init, stack canaries, FORTIFY_SOURCE v jádře.
Integrita kódu a řetězec zavádění systému
- Secure/Measured Boot: UEFI Secure Boot a TPM měří a validují firmware, zavaděč, jádro a initramfs.
- Podpisy ovladačů/modulů: vyžadování podpisů jaderných modulů a ovladačů; blokování neznámých LKM.
- IMA/EVM (Linux): integrita souborů a metadat, politika měření a vynucování.
- System Integrity Protection (macOS): ochrana systémových cest, zásady pro kernel extension, notářské ověření.
- Windows HVCI/Code Integrity: Hypervisor-Enforced Code Integrity, povinné podepisování a blokování neznámého kódu v jádře.
Omezení rozhraní jádra a oprávnění
- Capabilities (Linux): jemnozrnná náhrada za setuid – proces dostává jen dílčí oprávnění (např.
CAP_NET_ADMIN). - Seccomp-bpf: filtrování systémových volání pomocí pravidel BPF; odmítání neočekávaných syscallů.
- LSM (SELinux, AppArmor, Smack): povinné řízení přístupu nad objekty a subjekty; zásady typu MLS/MCS.
- OpenBSD pledge/unveil: deklarativní omezení oprávnění a přístupu k souborovým systémům na úrovni procesu.
- eBPF obezřetně: omezení typů map/programů, JIT hardening, zakázání neprivilegované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, přípojných bodů, názvů hostitelů a identit.
- cgroups v2: řízení zdrojů (CPU/Mem/IO), limity, stanovení priorit, ochrana před DoS způsobeným vyčerpáním zdrojů.
- Seccomp, capabilities a LSM v kontejnerech: profily typu default-deny, odebrání všech nepotřebných oprávnění.
- Rootless kontejnery: mapování uživatelů (userns) a absence skutečného oprávnění root na hostiteli.
Vícevrstvý sandboxing
- Lehký sandbox (na úrovni aplikace): profily seccomp, domény AppArmor/SELinux, pledge/unveil.
- Izolace pomocí kontejnerů: namespaces + cgroups + LSM, neměnný souborový systém a kořenový souborový systém pouze pro čtení.
- MicroVM a hypervizory: KVM/Hyper-V/Apple HV + Firecracker/Kata Containers pro silnější izolaci než u kontejnerů.
- Virtualizace GPU/IO: SR-IOV, vIOMMU/IOMMU – prevence útoků DMA a úniků přes zařízení.
Sandboxing v prohlížečích a desktopových aplikacích
- Víceprocesová architektura: vykreslovací proces s nízkými oprávněními, zprostředkující proces se striktními pravidly.
- Site Isolation: oddělení domén do samostatných procesů; zmírnění dopadů Spectre napříč hranicemi procesů.
- Win32/Windows Sandbox: objekty Job, úrovně integrity (MIC), AppContainer, ACG (Arbitrary Code Guard), CIG (Code Integrity Guard).
- Sandbox macOS: profily sandboxd, oprávnění a TCC pro citlivá oprávnění.
- Flatpak/Snap: model přístupu prostřednictvím portálů, deklarativní manifesty oprávnění.
Mobilní platformy
- Android: SELinux v režimu enforcing, samostatné UID pro každou aplikaci, scoped storage, omezení dynamického načítání kódu.
- iOS/iPadOS: sandbox s oprávněními, podepisování kódu, oddělení jádra (XNU) a rozšíření, ochrana proti JIT.
Aktualizace, kód a bezpečnostní prvky jazyků
- Životní cyklus záplat: rychlé aktualizace jádra (livepatch/ksplice), CI/CD pro ovladače.
- Bezpečnější jazyky v jádře: postupné zavádění komponent v Rustu v Linuxu a ovladačích.
- Statická a dynamická analýza: Coverity, clang static analyzer, KCOV, fuzzing pomocí syzkaller.
Monitorování, audit a detekce
- Auditní frameworky: Linux Auditd, audit SELinux, Windows ETW, macOS Unified Logging.
- Sondy eBPF a telemetrie: bezpečná sada schválených programů pro detekci anomálií systémových volání.
- Integrace do SIEM/XDR: korelace událostí jádra, detekce technik rootkitů (skryté moduly, anomální syscally).
Bezpečnost I/O a zařízení
- IOMMU: izolace přístupů DMA; povinná pro zařízení připojovaná uživatelem (Thunderbolt/USB4).
- Firmware a periferie: aktualizace prostřednictvím LVFS/Windows Update, ověřování podpisů, Device Guard.
Praktická doporučení pro posílení zabezpečení (Linux)
- Zapněte
kernel.unprivileged_bpf_disabled=1,kernel.kptr_restrict=2,kernel.dmesg_restrict=1. - Vynucujte použití LSM (SELinux v režimu 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. - Použijte profily seccomp pro síťové démony (nginx, sshd s omezeními) a kontejnery se sadou syscallů typu default-deny.
- Odeberte capabilities kontejnerům (ponechte jen nezbytné, ideálně žádné).
- Oddělené přípojné body:
noexec,nosuid,nodevpro/tmp,/var/tmpa kontejnery s kořenovým souborovým systémem pouze pro čtení.
Praktická doporučení pro posílení zabezpečení (Windows a macOS)
- Windows: HVCI (Memory Integrity), VBS, pravidla ASR, AppLocker/WDAC, povinné ověřování ovladačů, Defender Exploit Guard.
- macOS: zapnuté SIP, blokování nepodepsaných kextů, pravidelné aktualizace, zásady TCC pro kameru/mikrofon/dokumenty.
Testování sandboxů a fuzzing
- Syzkaller/KCOV: generativní fuzzing systémových volání pro Linux; integrace do CI.
- libFuzzer/AFL++: fuzzing knihoven pro parsování používaných v kernel-space i v uživatelských zprostředkujících procesech.
- Chaos engineering: simulace chyb zařízení, výpadků sítě a limitů paměti v izolovaných prostředích.
Vzory sandboxingu pro servery a služby
- Zprostředkující proces/pracovní proces: zprostředkující proces s minimálními oprávněními; pracovní procesy zpracovávají nedůvěryhodná data v sandboxu (seccomp/LSM).
- Oddělení oprávnění: oddělení částí aplikace podle citlivosti; pomocné démony běží s nízkými oprávněními.
- Izolace pro každý požadavek: krátkodobé kontejnery/microVM pro dávkové úlohy (ve stylu FAAS).
Srovnávací tabulka: vrstvy izolace
| Mechanismus | Granularita | Režie | Úroveň izolace | Typické použití |
|---|---|---|---|---|
| Seccomp/LSM | Proces | Nízká | Střední | Démon, vykreslovací proces, utilita |
| Kontejnery | Aplikace/Pod | Nízká–střední | Vyšší (sdílené jádro) | Mikroslužby, CI/CD |
| MicroVM (Firecracker/Kata) | Instance | Střední | Vysoká | Více nájemců, serverless |
| Plný virtuální stroj | OS | Vyšší | Velmi vysoká | Silné oddělení nájemců |
Kontrolní seznam pro posílení zabezpečení jádra a sandboxing
- Zapnutý Secure/Measured Boot, povinné podepisování modulů/ovladačů.
- Aktualizace mikrokódu/záplat pro Spectre/Meltdown a příbuzné třídy zranitelností.
- Vynucený LSM (SELinux/AppArmor), profily pro kritické démony.
- Profily seccomp a omezení capabilities pro všechny síťové služby.
- Rootless kontejnery, kořenový souborový systém pouze pro čtení, příznak
no-new-privileges. - Aktivní IOMMU, izolace neprivilegovaných zařízení a zásady pro USB.
- Audit a telemetrie do SIEM, detekce anomálií v syscalech/eBPF.
- Fuzzing a testy sandboxu v CI, pravidelné bezpečnostní revize.
Příklady konfigurací (ilustrativní)
- Sandboxing služby v systemd:
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, limity--device-read-bps, vlastní profil seccomp. - SELinux: definice type enforcement pro démony zpracovávající nedůvěryhodné vstupy (např. při parsování PDF).
Budoucí trendy
- Více Rustu v jádře a ovladačích: snížení počtu chyb souvisejících s nebezpečnou správou paměti.
- Hardwarová izolace aplikací: TEE/Confidential Computing (SEV/TDX/SGX) a enklávy pro citlivá pracovní data.
- Formální ověřování kritických částí: model checking a ověřené mikrojádro pro specializované domény.
- Bezpečnější zásady eBPF: bezpečné podmnožiny a statické ověřování pro produkční observabilitu bez rizika úniku.
Shrnutí
Ochrana jádra a sandboxing vyžadují vícevrstvý přístup: od integritního zavádění systému a paměťových mitigací přes omezení rozhraní jádra až po správně navržené sandboxy s jasnými zásadami. Kombinace LSM, seccomp, capabilities, jmenných prostorů a – podle potřeby – microVM/VM poskytuje robustní izolaci. Úspěch závisí na důsledném záplatování, monitorování, fuzzingu a průběžném snižování útočné plochy. Investice do těchto oblastí významně snižuje pravděpodobnost kompromitace systému i její dopady.
