Planirano je prebacivanje mehanizma za izolaciju zaloga na Linux

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

Fue prvobitno razvijen od strane OpenBSD projekta y omogućava vam da selektivno zabranite da je aplikacije pristupaju neiskorištenim sistemskim pozivima (formira se neka vrsta bele liste sistemskih poziva za aplikaciju i drugi pozivi su zabranjeni). Za razliku od mehanizama kontrole pristupa syscall dostupnim na Linuxu, kao što je seccomp, mehanizam zalaganja je dizajniran od temelja da bude što je moguće jednostavniji za upotrebu.

Neuspjela inicijativa za izolaciju aplikacija u osnovnom okruženju OpenBSD korištenjem mehanizma systrace pokazala je da je izolacija na nivou pojedinačnih sistemskih poziva previše komplikovana i dugotrajna.

Kao alternativa predložena je zaloga, koja dozvoljeno kreiranje pravila izolacije bez upuštanja u detalje i manipulacije pripremljenim klasama pristupa.

Na primjer, ponuđene klase su stdio (ulaz/izlaz), rpath (datoteke samo za čitanje), wpath (upisivanje datoteka), cpath (kreiranje datoteka), tmppath (rad sa privremenim datotekama), inet (mreža utičnica), unix (unix utičnice ), dns (DNS rezolucija), getpw (pristup za čitanje korisničkoj bazi podataka), ioctl (poziv ioctl), proc (kontrola procesa), exec (procesi pokretanja) i id (kontrola dozvola).

Pravila za rad sa sistemskim pozivima su specificirani u obliku napomena koje uključuju listu dozvoljenih klasa sistemskih poziva i niz putanja datoteka kojima je pristup dozvoljen. Nakon kompajliranja i pokretanja izmijenjene aplikacije, kernel preuzima posao nadgledanja usklađenosti sa navedenim pravilima.

Odvojeno, razvija se implementacija zalog za FreeBSD, koju odlikuje mogućnost izolacije aplikacija bez unošenja promjena u njihov kod, dok je u OpenBSD-u založni poziv usmjeren na čvrstu integraciju sa osnovnim okruženjem i dodavanje napomena u kod svakog od njih.

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

Programeri Linux porta za zalaganje uzeli su primjer od FreeBSD-a i umjesto promjene koda, pripremili su dodatni uslužni program sa pledge.com koji vam omogućava da primijenite ograničenja bez promjene koda aplikacije. Na primjer, da biste pokrenuli uslužni program curl sa 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 Linux distribucijama od RHEL6 i ne zahtijeva root pristup. Dodatno, na osnovu kosmopolitske biblioteke, obezbeđen je API za upravljanje ograničenjima u kodu programa na jeziku C, koji omogućava, između ostalog, kreiranje enklava za selektivno ograničavanje pristupa u odnosu na određene funkcije aplikacije. .

Bilo je nekoliko programera u prošlosti koji su ovo isprobali. Neću imenovati imena, jer većina ovih projekata nikada nije završena. Kada je u pitanju SECOMP, onlajn tutorijali objašnjavaju samo kako staviti sistemske pozive na belu listu, tako da većina ljudi gubi interesovanje pre nego što shvate kako da filtriraju argumente. Projekti koji su napredovali također su imali propuste kao što je omogućavanje promjene setuid/setgid/sticky bitova. Stoga se nijedna od trenutnih alternativa ne bi trebala koristiti. Mislim da nas ovaj napor dovodi mnogo bliže tome da imamo pledge() nego ikada prije.

Implementacija ne zahtijeva promjene kernela: ograničenja uslužnih programa se prevode u SECCOMP BPF pravila i obrađuju korištenjem Linuxovog prirodnog mehanizma za izolaciju sistemskih poziva. Na primjer, pozivanje obećanja("stdio rpath", 0) će se pretvoriti u BPF filter

Konačno, ako vas zanima više o tome, možete se obratiti detaljima Na sledećem linku.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.