vzdelavanie-financie-ekonomika-podnikanie-1901

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,nodev pro /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-privileges flag.
  • 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-bps limity, 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.

Poradňa

Potrebujete radu? Chcete pridať komentár, doplniť alebo upraviť túto stránku? Vyplňte textové pole nižšie. Ďakujeme ♥