Pro FreeBSD se vyvíjí izolační mechanismus podobný plegde and unveal

Pro FreeBSD je navržena implementace mechanismu pro izolaci aplikací, který připomíná systémová volání plegde and unveil vyvinutá projektem OpenBSD. Izolace v plegde je dosaženo zákazem přístupu k systémovým voláním, která se v aplikaci nepoužívají, a odhalením selektivním otevřením přístupu pouze k jednotlivým cestám k souborům, se kterými může aplikace pracovat. Pro aplikaci je vytvořen jakýsi bílý seznam systémových volání a cest k souborům a všechna ostatní volání a cesty jsou zakázány.

Rozdíl mezi FreeBSD analogem plegde a unveil spočívá v poskytnutí další vrstvy, která vám umožňuje izolovat aplikace bez provádění změn v jejich kódu nebo s minimálními změnami. Připomeňme, že v OpenBSD jsou plegde a unveil zaměřeny na úzkou integraci se základním prostředím a používají se přidáním speciálních anotací do kódu každé aplikace. Pro zjednodušení organizace ochrany vám filtry umožňují obejít se bez detailů na úrovni jednotlivých systémových volání a manipulovat s třídami systémových volání (vstup/výstup, čtení souborů, zápis souborů, sokety, ioctl, sysctl, spouštění procesů atd.) . Funkce omezení přístupu lze volat v kódu aplikace při provádění určitých akcí, například lze odepřít přístup k soketům a souborům po otevření potřebných souborů a navázání síťového připojení.

Autor portu plegde and unveil for FreeBSD má v úmyslu poskytnout možnost izolovat libovolné aplikace, pro které je navržen obslužný program záclony, který umožňuje aplikovat na aplikace pravidla definovaná v samostatném souboru. Navrhovaná konfigurace obsahuje soubor se základním nastavením, které definuje třídy systémových volání a typické cesty k souborům specifické pro určité aplikace (práce se zvukem, síťová interakce, protokolování atd.), a také soubor s pravidly přístupu pro konkrétní aplikace.

Obslužný program záclony lze použít k izolaci většiny neupravených nástrojů, serverových procesů, grafických aplikací a dokonce i celých relací na ploše. Závěs lze použít ve spojení s izolačními mechanismy, které poskytují subsystémy Jail a Capsicum. Je také možné organizovat vnořenou izolaci, kdy spuštěné aplikace zdědí pravidla nastavená pro nadřazenou aplikaci a doplní je o individuální omezení. Některé operace jádra (ladicí zařízení, POSIX/SysV IPC, PTY) jsou navíc chráněny bariérovým mechanismem, který brání přístupu k objektům jádra, které nejsou vytvořeny aktuálním nebo nadřazeným procesem.

Proces si může nakonfigurovat svou vlastní izolaci voláním shutterctl nebo pomocí funkcí plegde() a unveil() libcurtain, podobných těm, které najdete v OpenBSD. Pro sledování zámků za běhu aplikace je k dispozici sysctl ‘security.curtain.log_level’. Přístup k protokolům X11 a Wayland je umožněn odděleně zadáním možností „-X“/“-Y“ a „-W“ při spuštění clony, ale podpora grafických aplikací ještě není dostatečně stabilizovaná a má řadu nevyřešených problémů ( problémy se objevují hlavně při použití X11 a podpora Wayland je implementována mnohem lépe). Uživatelé mohou přidat další omezení vytvořením souborů místních pravidel (~/.curtain.conf). Chcete-li například povolit zápis z Firfoxu pouze do adresáře ~/Downloads/, můžete přidat sekci „[firefox]“ s pravidlem „~/Downloads/: rw +“.

Implementace obsahuje modul jádra mac_curtain pro povinnou kontrolu přístupu (MAC, Mandatory Access Control), sadu patchů pro jádro FreeBSD s implementací nezbytných handlerů a filtrů, knihovnu libcurtain pro použití funkcí plegde a unveil v aplikacích, obslužný program záclony, příklady konfiguračních souborů, sada testů a záplat pro některé programy v uživatelském prostoru (například pro použití $TMPDIR ke sjednocení práce s dočasnými soubory). Kde je to možné, autor hodlá minimalizovat počet změn, které vyžadují záplaty jádra a aplikací.

Zdroj: opennet.ru

Přidat komentář