A plegde and unveil-hez hasonló izolációs mechanizmust fejlesztenek a FreeBSD-hez

A FreeBSD esetében egy alkalmazásizolációs mechanizmus megvalósítása javasolt, amely az OpenBSD projekt által kifejlesztett plegde és unveil rendszerhívásokra emlékeztet. A plegde-ben való elkülönítés az alkalmazásban nem használt rendszerhívásokhoz való hozzáférés tiltásával érhető el, a leleplezésben pedig azáltal, hogy szelektíven nyitja meg a hozzáférést csak azokhoz az egyes fájlútvonalakhoz, amelyekkel az alkalmazás működni tud. Az alkalmazáshoz egyfajta fehér lista jön létre a rendszerhívásokról és a fájl útvonalakról, és minden más hívás és elérési út tiltva van.

A különbség a plegde és az unveil analógja között, amelyet a FreeBSD számára fejlesztettek ki, abban rejlik, hogy egy további réteget biztosítunk, amely lehetővé teszi az alkalmazások elkülönítését anélkül, hogy módosítanánk a kódjukat, vagy minimális változtatásokkal. Emlékezzünk vissza, hogy az OpenBSD-ben a plegde és unveil a mögöttes környezettel való szoros integrációt célozzák, és úgy használják, hogy minden egyes alkalmazás kódjához speciális megjegyzéseket adnak. A védelem megszervezésének egyszerűsítése érdekében a szűrők lehetővé teszik, hogy az egyes rendszerhívások szintjén eltekintsenek a részletektől, és kezeljék a rendszerhívások osztályait (bemeneti/kimeneti, fájlok olvasása, fájlok írása, socketek, ioctl, sysctl, folyamatindítás stb.) . Hozzáférés-korlátozási funkciók meghívhatók az alkalmazás kódjában bizonyos műveletek végrehajtása során, például a socketekhez és fájlokhoz való hozzáférés megtagadható a szükséges fájlok megnyitása és a hálózati kapcsolat létrehozása után.

A FreeBSD port of plegde and unveil szerzője lehetőséget kíván biztosítani tetszőleges alkalmazások elkülönítésére, amelyhez a curtain segédprogramot ajánljuk, amely lehetővé teszi, hogy egy külön fájlban meghatározott szabályokat alkalmazzon az alkalmazásokra. A javasolt konfiguráció tartalmaz egy fájlt alapbeállításokkal, amelyek meghatározzák a rendszerhívások osztályait és bizonyos alkalmazásokra jellemző tipikus fájlútvonalakat (hanggal való munka, hálózati interakció, naplózás stb.), valamint egy fájlt, amely hozzáférési szabályokat tartalmaz bizonyos alkalmazásokhoz.

A függöny segédprogram használható a legtöbb módosítatlan segédprogram, szerverfolyamatok, grafikus alkalmazások és akár teljes asztali munkamenetek elkülönítésére. A Curtain használható a Jail és a Capsicum alrendszerek által biztosított izolációs mechanizmusokkal együtt. Lehetőség van beágyazott elkülönítés megszervezésére is, amikor az elindított alkalmazások öröklik a szülőalkalmazásra beállított szabályokat, kiegészítve azokat egyedi korlátozásokkal. Egyes kernelműveleteket (hibakeresési lehetőségek, POSIX/SysV IPC, PTY-k) ezenkívül egy akadálymechanizmus védi, amely megakadályozza a hozzáférést az olyan kernelobjektumokhoz, amelyeket nem az aktuális vagy a szülőfolyamat hozott létre.

Egy folyamat beállíthatja saját elkülönítését a curtainctl meghívásával vagy a libcurtain plegde() és unveil() függvényeinek használatával, hasonlóan az OpenBSD-ben találhatóakhoz. A zárolások nyomon követéséhez az alkalmazás futása közben a sysctl „security.curtain.log_level” van megadva. Az X11 és a Wayland protokollokhoz való hozzáférés külön engedélyezve van a „-X”/”-Y” és a „-W” opciók megadásával függöny futtatásakor, de a grafikus alkalmazások támogatása még nem stabilizálódott kellően, és számos megoldatlan probléma van ( problémák elsősorban az X11 használatakor jelentkeznek, és a Wayland támogatás sokkal jobban megvalósul). A felhasználók helyi szabályfájlok (~/.curtain.conf) létrehozásával további korlátozásokat adhatnak hozzá. Például, ha a Firfoxból csak a ~/Letöltések/ könyvtárba szeretne írni, hozzáadhat egy „[firefox]” részt a „~/Letöltések/ : rw +” szabállyal.

A megvalósítás tartalmazza a mac_curtain kernel modult a kötelező hozzáférés-szabályozáshoz (MAC, Mandatory Access Control), a FreeBSD kernel javításainak készletét a szükséges kezelők és szűrők megvalósításával, a libcurtain könyvtárat a plegde és unveil függvények alkalmazásokban való használatához, a függöny segédprogram, példa konfigurációs fájlok, tesztkészletek és javítások bizonyos programokhoz a felhasználói térben (például a $TMPDIR használatával az ideiglenes fájlokkal végzett munka egységesítésére). A szerző lehetőség szerint minimalizálni kívánja a kernel és az alkalmazások javításait igénylő változtatások számát.

Forrás: opennet.ru

Hozzászólás