Lupauksen eristysmekanismi on suunniteltu siirrettäväksi Linuxiin

äskettäin Cosmopolitan C -standardikirjaston kirjoittaja ja Redbean-alusta ilmoitti kautta a ilmoitti pledge()-eristysmekanismin toteuttamisesta Linuxille.

Se oli alunperin OpenBSD-projektin kehittämä y antaa sinun valikoivasti kieltää että sovellukset pääsevät käyttämättömiin järjestelmäkutsuihin (sovellukselle muodostetaan eräänlainen järjestelmäkutsujen sallittu lista ja muut kutsut ovat kiellettyjä). Toisin kuin Linuxissa saatavilla olevat syscall-pääsynhallintamekanismit, kuten seccomp, panttimekanismi on suunniteltu alusta alkaen mahdollisimman käyttäjäystävälliseksi.

Epäonnistunut aloite eristää sovelluksia OpenBSD-perusympäristössä systrace-mekanismilla osoitti, että eristäminen yksittäisten järjestelmäkutsujen tasolla on liian monimutkaista ja aikaa vievää.

Vaihtoehtona ehdotettiin lupausta, joka saa luoda eristyssääntöjä menemättä yksityiskohtiin ja manipuloimatta valmiita pääsyluokkia.

Tarjotut luokat ovat esimerkiksi stdio (input/output), rpath (vain lukutiedostot), wpath (kirjoita tiedostot), cpath (luo tiedostoja), tmppath (työskentele väliaikaisten tiedostojen kanssa), inet (sockets network), unix (unix-socketit). ), dns (DNS-resoluutio), getpw (käyttäjätietokannan lukuoikeus), ioctl (ioctl-kutsu), proc (prosessinhallinta), exec (käynnistysprosessit) ja id (käyttöoikeuksien valvonta).

Järjestelmäkutsujen kanssa työskentelyn säännöt määritetään merkintöjen muodossa, jotka sisältävät luettelon sallituista järjestelmäkutsuluokista ja joukko tiedostopolkuja, joihin pääsy on sallittu. Muokatun sovelluksen kääntämisen ja suorittamisen jälkeen ydin ottaa tehtäväkseen valvoa määritettyjen sääntöjen noudattamista.

Erikseen kehitetään FreeBSD:n pledge-toteutusta, joka erottuu kyvystä eristää sovelluksia muuttamatta niiden koodia, kun taas OpenBSD:ssä pledge-kutsulla pyritään tiiviiseen integraatioon perusympäristön kanssa ja huomautusten lisäämiseen koodiin. jokaisesta.

Pantti on kuin kielletty hedelmä, jota me kaikki kaipaamme, kun pomo sanoo, että meidän pitäisi käyttää Linuxin kaltaisia ​​asioita. Miksi sillä on väliä? Se johtuu siitä, että pledge() tekee turvallisuudesta ymmärrettävän. Linuxilla ei ole koskaan ollut sellaista suojaustasoa, jonka pelkkä kuolevainen voisi ymmärtää.

Linuxin lupaportin kehittäjät ottivat mallin FreeBSD:ltä ja koodimuutosten sijaan he valmistivat pledge.com-sivustolta lisäapuohjelman, jonka avulla voit soveltaa rajoituksia muuttamatta sovelluskoodia. Jos esimerkiksi haluat suorittaa curl-apuohjelman, jolla on pääsy vain stdio-, rpath-, inet- ja threadstdio-järjestelmäkutsuluokkiin, suorita "./pledge.com -p 'stdio rpath inet thread' curl http://example.com » .

Apuohjelma toimii kaikissa Linux-jakeluissa RHEL6:sta lähtien eikä vaadi pääkäyttäjän oikeuksia. Lisäksi kosmopoliittiseen kirjastoon perustuen tarjotaan C-kieliohjelmien koodin rajoitusten hallintaan API, joka mahdollistaa muun muassa enklaavien luomisen, joilla rajoitetaan valikoivasti pääsyä sovelluksen tiettyihin toimintoihin.

Muutama kehittäjä on aiemmin kokeillut tätä. En aio nimetä nimiä, koska suurinta osaa näistä projekteista ei koskaan saatu päätökseen. Mitä tulee SECOMPiin, online-opetusohjelmat selittävät vain, kuinka järjestelmäkutsut lisätään sallittujen luetteloon, joten useimmat ihmiset menettävät kiinnostuksensa ennen kuin he keksivät, kuinka argumentit suodatetaan. Eteenpäin edenneissä projekteissa oli myös virheitä, kuten setuid/setgid/sticky-bittien vaihtaminen. Siksi mitään nykyisistä vaihtoehdoista ei tule käyttää. Luulen, että tämä pyrkimys tuo meidät paljon lähemmäksi lupausta() kuin koskaan ennen.

Käyttöönotto ei vaadi ytimen muutoksia: apuohjelman rajoitukset käännetään SECCOMP BPF -säännöiksi ja käsitellään Linuxin alkuperäisen järjestelmäkutsujen eristysmekanismin avulla. Esimerkiksi lupaus("stdio rpath", 0) kutsuminen muuntaa BPF-suodattimen

Lopuksi, jos haluat tietää enemmän siitä, voit tutustua yksityiskohtiin Seuraavassa linkissä.


Ole ensimmäinen kommentti

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.