Planirano je prenijeti mehanizam izolacije zaloga na Linux

nedavno autor standardne biblioteke Cosmopolitan C i platforma Redbean najavljena putem a najavio implementaciju mehanizma izolacije pledge() za Linux.

Bilo je izvorno razvijen od strane projekta OpenBSD y omogućuje selektivnu zabranu da je aplikacije pristupaju neiskorištenim pozivima sustava (za aplikaciju se formira neka vrsta bijele liste sistemskih poziva i drugi pozivi su zabranjeni). Za razliku od mehanizama kontrole pristupa syscall dostupnih na Linuxu, kao što je seccomp, mehanizam zalaganja dizajniran je od temelja da bude što je moguće lakši za korištenje.

Neuspješna inicijativa izolacije aplikacija u osnovnom okruženju OpenBSD pomoću mehanizma systrace pokazala je da je izolacija na razini pojedinačnih sistemskih poziva previše komplicirana i dugotrajna.

Kao alternativa predložen je zalog koji dopušteno stvaranje pravila izolacije bez ulaženja u detalje i manipuliranja pripremljenim pristupnim klasama.

Na primjer, ponuđene klase su stdio (ulaz/izlaz), rpath (datoteke samo za čitanje), wpath (pisanje datoteka), cpath (stvaranje datoteka), tmppath (rad s privremenim datotekama), inet (mreža utičnica), unix (unix utičnice ), dns (DNS rezolucija), getpw (pristup čitanja korisničkoj bazi podataka), ioctl (ioctl poziv), proc (kontrola procesa), exec (pokretanje procesa) i id (kontrola dopuštenja).

Pravila za rad sa sistemskim pozivima navedeni su u obliku napomena koje uključuju popis dopuštenih klasa sistemskih poziva i niz staza datoteka gdje je pristup dopušten. Nakon kompajliranja i pokretanja modificirane aplikacije, kernel preuzima posao praćenja usklađenosti s navedenim pravilima.

Zasebno se razvija pledge implementacija za FreeBSD, koja se ističe sposobnošću izolacije aplikacija bez mijenjanja njihovog koda, dok je u OpenBSD-u pledge call usmjeren na tijesnu integraciju s osnovnim okruženjem i dodavanje primjedbi u kod. svakog pojedinog.

Obećanje je kao zabranjeno voće za kojim svi žudimo kada šef kaže da bismo trebali koristiti stvari poput Linuxa. Zašto je to važno? To je zato što pledge() zapravo čini sigurnost razumljivom. Linux zapravo nikada nije imao sloj sigurnosti koji obični smrtnici mogu razumjeti.

Programeri Linux pledge porta ugledali su se na FreeBSD i umjesto izmjene koda, pripremili su dodatni uslužni program s pledge.com koji vam omogućuje primjenu ograničenja bez mijenjanja koda aplikacije. Na primjer, da pokrenete uslužni program curl s pristupom samo klasama sistemskih poziva stdio, rpath, inet i threadstdio, jednostavno pokrenite "./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

Uslužni program radi na svim distribucijama Linuxa od RHEL6 i ne zahtijeva root pristup. Dodatno, na temelju kozmopolitske knjižnice, pruža se API za upravljanje ograničenjima u kodu programa na jeziku C, koji omogućuje, između ostalog, stvaranje enklava za selektivno ograničavanje pristupa u odnosu na određene funkcije aplikacije. .

U prošlosti je bilo nekoliko programera koji su to pokušali. Neću navoditi imena jer većina tih projekata nikada nije završena. Kada je riječ o SECOMP-u, mrežni vodiči objašnjavaju samo kako staviti sistemske pozive na bijelu listu, tako da većina ljudi izgubi interes prije nego što shvate kako filtrirati argumente. Projekti koji su napredovali također su imali propuste poput dopuštanja promjene setuid/setgid/sticky bitova. Stoga se ne smije koristiti niti jedna od trenutačnih alternativa. Mislim da nas ovaj napor dovodi mnogo bliže pledge() nego ikad prije.

Implementacija ne zahtijeva promjene kernela: ograničenja uslužnog programa prevode se u SECCOMP BPF pravila i obrađuju koristeći izvorni Linuxov mehanizam izolacije sistemskih poziva. Na primjer, pozivanje promise("stdio rpath", 0) pretvorit će se u BPF filter

Konačno, ako vas zanima više o tome, možete se posavjetovati s pojedinostima U sljedećem linku.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.