En isoleringsmekanism liknande plegde håller på att utvecklas på FreeBSD

Det tillkännagavs att en implementering av en applikationsisoleringsmekanism har föreslagits för FreeBSD , som påminner om systemanropen foldde och unveil som utvecklats av OpenBSD-projektet.

Isolering i plegde görs genom att förbjuda åtkomst till systemanrop som inte används av applikationen och avslöja genom att selektivt öppna åtkomst endast till vissa 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 `pledge` och `unveil` , utvecklade för FreeBSD , kokar ner till att tillhandahålla ett extra lager som gör att applikationer kan isoleras med minimala eller inga ändringar i deras kod. Kom ihåg att i OpenBSD syftar `pledge` och `unlock` till en nära integration med basmiljön och implementeras genom att lägga till speciella anteckningar i varje applikations kod.

För att förenkla organisationen av skyddet låter filter dig undvika detaljer på nivån för individuella systemanrop och att manipulera klasser av systemanrop (indata/utgång, filläsning, filskrivning, sockets, ioctl, sysctl, start av processer, etc.) . Åtkomstbegränsningsfunktioner kan anropas i applikationskoden när vissa åtgärder utförs, till exempel kan åtkomst till uttag och filer stängas efter att de nödvändiga filerna har öppnats och en nätverksanslutning upprättats.

Författaren till FreeBSD-porteringen av folding och unfolding syftar till att ge möjligheten att isolera godtyckliga applikationer. För att uppnå detta föreslår de verktyget curtain, vilket gör det möjligt att tillämpa regler definierade i en separat fil på applikationer. Den föreslagna konfigurationen inkluderar en fil med grundläggande inställningar som definierar klasserna för systemanrop och typiska filsökvägar specifika för vissa applikationer (arbete med ljud, nätverk, loggning etc.), samt en fil med åtkomstregler för specifika applikationer.

Gardinverktyget kan användas för att isolera de flesta verktyg, serverprocesser, grafiska applikationer och till och med hela skrivbordssessioner som inte har modifierats. Dela gardin med isoleringsmekanismerna som tillhandahålls av Jail and Capsicum subsystem stöds.

Kapslad isolering är också möjlig, där startade applikationer ärver de regler som fastställts av huvudapplikationen och kompletterar dem med separata begränsningar. Vissa kärnoperationer (felsökningsverktyg, POSIX/SysV IPC, PTY) skyddas ytterligare av en barriärmekanism som förhindrar åtkomst till kärnobjekt som skapats av andra processer än den aktuella eller huvudprocessen.

En process kan konfigurera sin egen isolering genom att anropa curtainctl eller använda funktionerna pledge() och unveil() som tillhandahålls av libcurtain-biblioteket, liknande de i OpenBSD. Sysctl:n 'security.curtain.log_level' tillhandahålls för att spåra lås medan applikationen körs.

Åtkomst till X11- och Wayland-protokollen aktiveras separat genom att ange alternativen "-X"/"-Y" och "-W" när du startar gardinen, men stödet för grafiska applikationer är ännu inte tillräckligt stabiliserat och har en rad olösta problem ( problem uppstår främst när du använder X11, och Wayland-stödet är mycket bättre). Användare kan lägga till ytterligare begränsningar genom att skapa lokala regelfiler (~/.curtain.conf). Till exempel,

Implementeringen inkluderar mac_curtain-kärnmodulen för obligatorisk åtkomstkontroll (MAC), en uppsättning patchar för FreeBSD-kärnan med implementering av nödvändiga drivrutiner och filter, libcurtain-biblioteket för att använda plegde och avslöjade funktioner i applikationer, verktygsgardinen, visar konfiguration filer, en uppsättning tester och patchar för vissa användarutrymmesprogram (till exempel för att använda $TMPDIR för att förena arbetet med temporära filer). När det är möjligt försöker författaren att minimera antalet ändringar som kräver korrigering av kärnan och applikationer.

Slutligen, om du är intresserad av att lära dig mer , kan du hitta detaljerna på följande länk.


Lägg till som prioriterad källa i Google