För FreeBSD har en implementering av ett applikationsisolationssystem föreslagits, vilket pÄminner om systemanropen pledge och unveil som utvecklats av OpenBSD-projektet. Isolation i pledge uppnÄs genom att förbjuda Ätkomst till systemanrop som inte anvÀnds av applikationen, medan unveil tillÄter selektiv öppenhet endast för specifika filvÀgar som applikationen kan anvÀnda. För applikationen skapas en slags vit lista över systemanrop och filvÀgar, och alla andra anrop och vÀgar förbjuds.
Skillnaden med den utvecklade motsvarigheten till pledge och unveil för FreeBSD innebÀr att en ytterligare lager tillhandahÄlls, vilket gör det möjligt att isolera applikationer utan att göra Àndringar i deras kod eller med minimala Àndringar. Observera att pledge och unveil i OpenBSD syftar till att möjliggöra en nÀra integration med den grundlÀggande miljön och tillÀmpas genom att lÀgga till speciella annotationer i koden för varje applikation. För att förenkla organiseringen av skydd tillÄter filtren att man undgÄr detaljeringsnivÄ pÄ nivÄ av individuella systemanrop och istÀllet kan manipulera klasser av systemanrop (in/utdata, fillÀsning, filskrivning, sockets, ioctl, sysctl, processstart etc.). Funktionerna för ÄtkomstbegrÀnsning kan anropas i applikationskoden i takt med att olika ÄtgÀrder utförs, exempelvis kan Ätkomst till sockets och filer stÀngas nÀr de nödvÀndiga filerna har öppnats och nÀtverksanslutningen har etablerats.
Författaren av porten pledge och unveil för FreeBSD avser att tillhandahÄlla möjligheten att isolera vilka applikationer som helst, för vilket verktyget curtain har föreslagits. Detta verktyg gör det möjligt att tillÀmpa regler pÄ applikationer som definierats i en separat fil. Den föreslagna konfigurationen inkluderar en fil med grundlÀggande instÀllningar, som definierar klasser av systemanrop och typiska filvÀgar specifika för vissa tillÀmpningar (arbete med ljud, nÀtverksinteraktion, loggning etc.), samt en fil med Ätkomstregler för specifika applikationer.
Verktyget curtain kan anvÀndas för att isolera de flesta okonfigurerade verktyg, serverprocesser, grafiska applikationer och till och med hela skrivbords sessioner. Det stöder delning av curtain med isoleringsmekanismer som tillhandahÄlls av Jail- och Capsicum-under systemen. Det Àr ocksÄ möjligt att organisera inre isolering, dÀr de körda applikationerna Àrver de regler som stÀllts in för förÀldrapplikationen, kompletterat med specifika begrÀnsningar. Vissa kÀrnoprÀttigheter (debuggingverktyg, POSIX/SysV IPC, PTYs) skyddas ytterligare med hjÀlp av barriÀrmekanismen, som förhindrar Ätkomst till kÀrnobjekt som skapats av andra Àn den aktuella eller förÀldraprocessen.
Processen kan sjÀlv konfigurera sin egen isolering genom att anropa curtainctl eller genom att anvÀnda funktionerna plegde() och unveil() frÄn biblioteket libcurtain, liknande sÄdana funktioner frÄn OpenBSD. För att spÄra lÄsningar under applikationens körning finns sysctl 'security.curtain.log_level'. à tkomst till X11- och Wayland-protokollen aktiveras separat genom att ange alternativen '-X'/'-Y' och '-W' vid start av curtain, men stödet för grafiska applikationer Àr fortfarande inte tillrÀckligt stabiliserat och har ett antal olösta problem (problem uppstÄr huvudsakligen vid anvÀndning av X11, medan stödet för Wayland har implementerats betydligt bÀttre). AnvÀndare kan lÀgga till ytterligare begrÀnsningar genom att skapa lokala filer med regler (~/.curtain.conf). Till exempel, för att tillÄta skrivning frÄn Firefox endast till katalogen ~/Downloads/ kan man lÀgga till en sektion '[firefox]' med regeln '~/Downloads/ : rw +'.
Implementeringen inkluderar modulen mac_curtain för obligatorisk Ätkomstkontroll (MAC, Mandatory Access Control), ett set av patchar för FreeBSD-kÀrnan med implementation av nödvÀndiga hanterare och filter, biblioteket libcurtain för anvÀndning av funktionerna plegde och unveil i applikationer, verktyget curtain, exempel pÄ konfigurationsfiler, en uppsÀttning tester och patchar för vissa program i anvÀndarrummet (till exempel för anvÀndning av $TMPDIR för att förenkla arbetet med tillfÀlliga filer). SÄ lÄngt som möjligt avser författaren att minimera antalet Àndringar som krÀver tillÀmpning av patchar pÄ kÀrnan och applikationerna.
KĂ€lla: opennet.ru
