Plánuje sa portovanie mechanizmu izolácie sľubu na Linux

Nedávno autor štandardnej knižnice Cosmopolitan C a platforma Redbean oznámila prostredníctvom a oznámila implementáciu mechanizmu izolácie pledge() pre Linux.

bolo pôvodne vyvinutý projektom OpenBSD y umožňuje selektívne zakázať že aplikácie pristupujú k nepoužívaným systémovým volaniam (pre aplikáciu je vytvorený akýsi whitelist systémových volaní a ostatné volania sú zakázané). Na rozdiel od mechanizmov riadenia prístupu k syscall, ktoré sú k dispozícii v systéme Linux, ako je napríklad seccomp, mechanizmus sľubu je od základov navrhnutý tak, aby bol pre používateľa čo najpríjemnejší.

Neúspešná iniciatíva izolovať aplikácie v základnom prostredí OpenBSD pomocou mechanizmu systrace ukázala, že izolácia na úrovni jednotlivých systémových volaní je príliš komplikovaná a časovo náročná.

Ako alternatíva bola navrhnutá zástava, ktorá umožňuje vytvárať pravidlá izolácie bez zachádzania do detailov a manipulácie s pripravenými triedami prístupu.

Ponúkané triedy sú napríklad stdio (vstup/výstup), rpath (súbory len na čítanie), wpath (zápis súborov), cpath (vytváranie súborov), tmppath (práca s dočasnými súbormi), inet (sieť so soketmi), unix (zásuvky Unix ), dns (rozlíšenie DNS), getpw (prístup na čítanie do databázy používateľov), ioctl (volanie ioctl), proc (riadenie procesov), exec (procesy spustenia) a id (riadenie povolení).

Pravidlá pre prácu so systémovými volaniami sú špecifikované vo forme anotácií, ktoré obsahujú zoznam povolených tried systémových volaní a pole ciest k súborom, kde je povolený prístup. Po skompilovaní a spustení upravenej aplikácie prevezme kernel úlohu monitorovania dodržiavania špecifikovaných pravidiel.

Samostatne sa vyvíja implementácia sľubu pre FreeBSD, ktorá sa vyznačuje schopnosťou izolovať aplikácie bez vykonania zmien v ich kóde, zatiaľ čo v OpenBSD je výzva na sľub zameraná na tesnú integráciu so základným prostredím a pridanie anotácií do kódu. z každého jedného.

Sľub je ako zakázané ovocie, po ktorom všetci túžime, keď šéf hovorí, že by sme mali používať veci ako Linux. Prečo na tom záleží? Je to preto, že sľub() v skutočnosti robí bezpečnosť zrozumiteľnou. Linux v skutočnosti nikdy nemal takú úroveň zabezpečenia, ktorej by rozumeli obyčajní smrteľníci.

Vývojári linuxového sľubného portu si vzali príklad z FreeBSD a namiesto zmien v kóde pripravili dodatočnú pomôcku zo stránky pledge.com, ktorá vám umožňuje aplikovať obmedzenia bez zmeny kódu aplikácie. Napríklad, ak chcete spustiť obslužný program curl s prístupom iba k triedam systémových volaní stdio, rpath, inet a threadstdio, jednoducho spustite "./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

Tento nástroj funguje na všetkých distribúciách Linuxu od RHEL6 a nevyžaduje prístup root. Okrem toho je na základe kozmopolitnej knižnice k dispozícii API na správu obmedzení v kóde programov v jazyku C, ktoré okrem iného umožňuje vytvárať enklávy na selektívne obmedzenie prístupu vo vzťahu k určitým funkciám aplikácie.

V minulosti sa o to pokúsilo niekoľko vývojárov. Nebudem menovať mená, pretože väčšina z týchto projektov nebola nikdy dokončená. Pokiaľ ide o SECOMP, online návody iba vysvetľujú, ako pridať systémové volania na zoznam povolených, takže väčšina ľudí stráca záujem skôr, ako prídu na to, ako filtrovať argumenty. Projekty, ktoré sa posunuli vpred, mali tiež prehliadky, ako napríklad umožnenie zmeny bitov setuid/setgid/sticky. Preto by sa nemala používať žiadna zo súčasných alternatív. Myslím, že toto úsilie nás privádza oveľa bližšie k tomu, aby sme mali sľub () ako kedykoľvek predtým.

Implementácia nevyžaduje žiadne zmeny jadra: obmedzenia pomocných programov sú preložené do pravidiel SECCOMP BPF a spracované pomocou natívneho mechanizmu izolácie systémových volaní Linuxu. Napríklad volanie sľub("stdio rpath", 0) sa prevedie na filter BPF

Nakoniec, ak máte záujem dozvedieť sa o tom viac, môžete sa obrátiť na podrobnosti Na nasledujúcom odkaze.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.