En isoleringsmekanism som liknar plegde och unveil håller på att utvecklas för FreeBSD

För FreeBSD föreslås en implementering av en applikationsisoleringsmekanism, som påminner om plegde- och unveil-systemanrop som utvecklats av OpenBSD-projektet. Isolering i plegde uppnås genom att förbjuda åtkomst till systemanrop som inte används i applikationen, och in avslöja genom att selektivt öppna åtkomst endast till enskilda filsökvägar som applikationen kan arbeta med. För applikationen bildas en sorts vit lista över systemanrop och filsökvägar, och alla andra anrop och sökvägar är förbjudna.

Skillnaden mellan analogen av plegde och unveil som utvecklas för FreeBSD beror på tillhandahållandet av ett extra lager som låter dig isolera applikationer utan att göra ändringar i deras kod eller med minimala ändringar. Kom ihåg att i OpenBSD syftar plegde och unveil till tät integration med den underliggande miljön och används genom att lägga till speciella kommentarer till koden för varje applikation. För att förenkla organisationen av skyddet låter filter dig avstå från detaljer på nivån för individuella systemanrop och manipulera klasser av systemanrop (inmatning/utmatning, läsning av filer, skrivfiler, sockets, ioctl, sysctl, processstart, etc.) . Åtkomstbegränsningsfunktioner kan anropas i applikationskoden när vissa åtgärder utförs, till exempel kan åtkomst till uttag och filer nekas efter att de nödvändiga filerna har öppnats och en nätverksanslutning upprättats.

Författaren till port of plegde and unveil för FreeBSD avser att ge möjligheten att isolera godtyckliga applikationer, för vilka gardinverktyget föreslås, vilket låter dig tillämpa regler definierade i en separat fil på applikationer. Den föreslagna konfigurationen inkluderar en fil med grundläggande inställningar som definierar klasser av systemanrop och typiska filsökvägar som är specifika för vissa applikationer (att arbeta med ljud, nätverksinteraktion, loggning, etc.), samt en fil med åtkomstregler för specifika applikationer.

Gardinverktyget kan användas för att isolera de flesta omodifierade verktyg, serverprocesser, grafiska applikationer och till och med hela skrivbordssessioner. Gardin kan användas tillsammans med de isoleringsmekanismer som tillhandahålls av Jail och Capsicum subsystem. Det är också möjligt att organisera kapslad isolering när startade applikationer ärver reglerna som ställts in för den överordnade applikationen och kompletterar dem med individuella begränsningar. Vissa kärnoperationer (felsökningsfaciliteter, POSIX/SysV IPC, PTY) skyddas dessutom av en barriärmekanism som förhindrar åtkomst till kärnobjekt som inte skapas av den aktuella eller överordnade processen.

En process kan konfigurera sin egen isolering genom att anropa curtainctl eller genom att använda libcurtains funktioner plegde() och unveil(), liknande de som finns i OpenBSD. För att spåra lås medan applikationen körs, tillhandahålls sysctl 'security.curtain.log_level'. Åtkomst till X11- och Wayland-protokollen aktiveras separat genom att ange alternativen "-X"/"-Y" och "-W" när du kör gardin, men stödet för grafiska applikationer är ännu inte tillräckligt stabiliserat och har ett antal olösta problem ( problem uppstår främst när du använder X11, och Wayland-stödet implementeras mycket bättre). Användare kan lägga till ytterligare begränsningar genom att skapa lokala regelfiler (~/.curtain.conf). Till exempel, för att tillåta skrivning från Firfox endast till ~/Downloads/-katalogen, kan du lägga till en "[firefox]"-sektion med regeln "~/Downloads/ : rw +".

Implementeringen inkluderar mac_curtain-kärnmodulen för obligatorisk åtkomstkontroll (MAC, Mandatory Access Control), en uppsättning patchar för FreeBSD-kärnan med implementering av nödvändiga hanterare och filter, libcurtain-biblioteket för att använda funktionerna plegde och avslöja i applikationer, gardinverktyget, exempel på konfigurationsfiler, en uppsättning tester och patchar för vissa program i användarutrymmet (till exempel för att använda $TMPDIR för att förena arbete med temporära filer). Där det är möjligt avser författaren att minimera antalet ändringar som kräver korrigeringar av kärnan och applikationer.

Källa: opennet.ru

Lägg en kommentar