Ochrana jádra a sandboxing: zajištění stability a bezpečnosti

Ochrana jádra a sandboxing: Zajištění stability a bezpečnosti

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,nodev pro /tmp, /var/tmp a 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.