A tervek szerint a zálogleválasztó mechanizmust Linuxra portolják

nemrég a Cosmopolitan C szabványkönyvtár szerzője és a Redbean platform bejelentette a bejelentette a pledge() izolációs mechanizmus megvalósítását Linuxon.

Nem volt eredetileg az OpenBSD projekt fejlesztette ki y lehetővé teszi a szelektív kitiltást hogy a alkalmazások hozzáférnek a nem használt rendszerhívásokhoz (az alkalmazáshoz egyfajta fehérlista jön létre a rendszerhívásokból, és más hívások tiltottak). A Linuxon elérhető syscall hozzáférés-vezérlési mechanizmusokkal ellentétben, mint például a seccomp, a zálogmechanizmust az alapoktól kezdve úgy tervezték, hogy a lehető legfelhasználóbarátabb legyen.

A sikertelen kezdeményezés az OpenBSD alapkörnyezetben lévő alkalmazásoknak a systrace mechanizmussal történő elkülönítésére azt mutatta, hogy az egyes rendszerhívások szintjén történő elkülönítés túl bonyolult és időigényes.

Alternatív megoldásként zálogjogot javasoltak, amely lehetővé tette az elkülönítési szabályok létrehozását anélkül, hogy belemenne a részletekbe és manipulálná az előkészített hozzáférési osztályokat.

Például a felajánlott osztályok a következők: stdio (bemenet/kimenet), rpath (csak olvasható fájlok), wpath (fájlok írása), cpath (fájlok létrehozása), tmppath (ideiglenes fájlokkal való munka), inet (sockets hálózat), unix (unix socket) ), dns (DNS felbontás), getpw (felhasználói adatbázis olvasási hozzáférése), ioctl (ioctl hívás), proc (folyamatvezérlés), exec (indítási folyamatok) és id (engedély-ellenőrzés).

A rendszerhívásokkal való munka szabályai megjegyzések formájában vannak megadva, amelyek tartalmazzák az engedélyezett rendszerhívási osztályok listáját és egy sor fájlútvonal, ahol a hozzáférés engedélyezett. A módosított alkalmazás fordítása és futtatása után a kernel átveszi a megadott szabályok betartásának ellenőrzését.

Külön fejlesztik a FreeBSD-hez a pledge implementációt, amely azzal jellemezhető, hogy az alkalmazások kódjának módosítása nélkül elkülöníthetők, míg az OpenBSD-ben a pledge hívás az alap környezettel való szoros integrációt és megjegyzések hozzáadását célozza a kódon. mindegyikről.

A fogadalom olyan, mint a tiltott gyümölcs, amire mindannyian vágyunk, amikor a főnök azt mondja, használjunk olyan dolgokat, mint a Linux. Miért számít ez? Ez azért van, mert a zálog() valójában érthetővé teszi a biztonságot. A Linux valójában soha nem rendelkezett olyan biztonsági réteggel, amelyet az egyszerű halandók is megértenek.

A linuxos port fejlesztői a FreeBSD-től vették a példát és a kód módosítása helyett egy további segédprogramot készítettek a pledge.com webhelyről, amely lehetővé teszi a korlátozások alkalmazását az alkalmazás kódjának megváltoztatása nélkül. Ha például a curl segédprogramot csak az stdio, rpath, inet és threadstdio rendszerhívási osztályokhoz kívánja futtatni, egyszerűen futtassa a "./pledge.com -p 'stdio rpath inet szál" curl http://example.com parancsot. .

A segédprogram az RHEL6 óta minden Linux disztribúción működik és nem igényel root hozzáférést. Ezenkívül a kozmopolita könyvtáron alapuló API-t biztosítanak a C nyelvű programok kódjában lévő korlátozások kezelésére, amely lehetővé teszi többek között enklávék létrehozását az alkalmazás bizonyos funkcióihoz való hozzáférés szelektív korlátozására.

A múltban volt néhány fejlesztő, aki kipróbálta ezt. Nem fogok neveket mondani, mert ezeknek a projekteknek a többsége soha nem fejeződött be. Ami a SECOMP-t illeti, az online oktatóanyagok csak a rendszerhívások engedélyezőlistára helyezését ismertetik, így a legtöbb ember elveszti érdeklődését, mielőtt rájönne, hogyan szűrje ki az argumentumokat. Az előrehaladott projektek olyan hiányosságokat is tartalmaztak, mint például a setuid/setgid/sticky bitek megváltoztatása. Ezért a jelenlegi alternatívák egyikét sem szabad használni. Úgy gondolom, hogy ez az erőfeszítés sokkal közelebb visz a zálog() megszerzéséhez, mint valaha.

A megvalósítás nem igényel kernel módosítását: a segédprogramok megszorításait a rendszer SECCOMP BPF-szabályokká fordítja le, és a Linux natív rendszerhívás-elválasztó mechanizmusával dolgozza fel. Például a ígéret("stdio rpath", 0) meghívása BPF-szűrővé konvertálódik

Végül, ha többet szeretne megtudni róla, akkor tanulmányozza a részleteket A következő linken.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.