Plánuje se přenesení mechanismu pro izolaci zástavy na Linux

Nedávno autor standardní knihovny Cosmopolitan C a platforma Redbean oznámená prostřednictvím a oznámila implementaci mechanismu izolace pledge() pro Linux.

To bylo původně vyvinutý projektem OpenBSD y umožňuje selektivně zakázat že aplikace přistupují k nepoužívaným systémovým voláním (pro aplikaci se tvoří jakýsi whitelist systémových volání a další volání jsou zakázána). Na rozdíl od mechanismů řízení přístupu syscall dostupných v Linuxu, jako je seccomp, je mechanismus zástavy od základu navržen tak, aby byl uživatelsky co nejpříjemnější.

Neúspěšná iniciativa izolovat aplikace v základním prostředí OpenBSD pomocí mechanismu systrace ukázala, že izolace na úrovni jednotlivých systémových volání je příliš komplikovaná a časově náročná.

Jako alternativa byla navržena zástava, která umožňuje vytvářet pravidla izolace bez zacházení do detailů a manipulace s připravenými přístupovými třídami.

Nabízené třídy jsou například stdio (vstup/výstup), rpath (soubory pouze pro čtení), wpath (zápis souborů), cpath (vytváření souborů), tmppath (práce s dočasnými soubory), inet (síť soketů), unix (unixové sokety ), dns (rozlišení DNS), getpw (přístup pro čtení k uživatelské databázi), ioctl (volání ioctl), proc (řízení procesů), exec (procesy spouštění) a id (řízení oprávnění).

Pravidla pro práci se systémovými voláními jsou specifikovány ve formě anotací, které obsahují seznam povolených tříd systémových volání a pole cest k souborům, kde je povolen přístup. Po zkompilování a spuštění upravené aplikace převezme jádro monitorování dodržování zadaných pravidel.

Samostatně se vyvíjí implementace slibu pro FreeBSD, která se vyznačuje schopností izolovat aplikace bez provádění změn v jejich kódu, zatímco v OpenBSD je volání slibu zaměřeno na úzkou integraci se základním prostředím a přidání anotací do kódu. každého z nich.

Slib je jako zakázané ovoce, po kterém všichni prahneme, když šéf říká, že bychom měli používat věci jako Linux. Proč na tom záleží? Je to proto, že závazek() ve skutečnosti dělá zabezpečení srozumitelným. Linux ve skutečnosti nikdy neměl vrstvu zabezpečení, které by rozuměli obyčejní smrtelníci.

Vývojáři linuxového slibového portu si vzali příklad z FreeBSD a namísto provádění změn kódu připravili další utilitu z webu pledge.com, která vám umožňuje aplikovat omezení bez změny kódu aplikace. Chcete-li například spustit obslužný program curl s přístupem pouze ke třídám systémových volání stdio, rpath, inet a threadstdio, jednoduše spusťte "./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

Nástroj funguje na všech distribucích Linuxu od RHEL6 a nevyžaduje přístup root. Kromě toho je na základě kosmopolitní knihovny poskytováno API pro správu omezení v kódu programů v jazyce C, což mimo jiné umožňuje vytvářet enklávy pro selektivní omezení přístupu ve vztahu k určitým funkcím aplikace.

V minulosti se o to pokusilo několik vývojářů. Nebudu jmenovat, protože většina těchto projektů nebyla nikdy dokončena. Pokud jde o SECOMP, online tutoriály pouze vysvětlují, jak přidat systémová volání na seznam povolených, takže většina lidí ztrácí zájem, než zjistí, jak filtrovat argumenty. Projekty, které se posunuly vpřed, měly také přehlédnutí, jako je umožnění změny bitů setuid/setgid/sticky. Proto by neměla být použita žádná ze současných alternativ. Myslím, že toto úsilí nás přivádí mnohem blíže k mít pledge() než kdykoli předtím.

Implementace nevyžaduje žádné změny jádra: omezení utilit jsou převedena do pravidel SECCOMP BPF a zpracována pomocí nativního mechanismu izolace systémových volání Linuxu. Například volání slib("stdio rpath", 0) převede na filtr BPF

Konečně, pokud máte zájem dozvědět se o tom více, můžete konzultovat podrobnosti Na následujícím odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.