Det ble annonsert at en implementering av en applikasjonsisoleringsmekanisme er foreslått for FreeBSD , som minner om systemkallene foldde og unveil utviklet av OpenBSD-prosjektet.
Isolering i plegde gjøres ved å forby tilgang til systemanrop som ikke brukes av applikasjonen og avsløre ved selektivt å åpne tilgang kun til visse filstier som applikasjonen kan jobbe med. For applikasjonen dannes det en slags hviteliste over systemanrop og filstier, og alle andre anrop og stier er forbudt.
Forskjellen mellom `pledge` og `unveil` , utviklet for FreeBSD , koker ned til å gi et ekstra lag som lar applikasjoner isoleres med minimale eller ingen endringer i koden. Husk at i OpenBSD sikter `pledge` og `unlock` mot tett integrasjon med basismiljøet og implementeres ved å legge til spesielle merknader i hver applikasjons kode.
For å forenkle organiseringen av beskyttelsen lar filtre deg unngå detaljer på nivået til individuelle systemanrop og å manipulere klasser av systemanrop (input/output, fillesing, filskriving, sockets, ioctl, sysctl, start av prosesser, etc.) . Tilgangsbegrensningsfunksjoner kan kalles inn applikasjonskode ettersom visse handlinger utføres, for eksempel kan tilgang til stikkontakter og filer lukkes etter å ha åpnet de nødvendige filene og opprettet en nettverksforbindelse.
Forfatteren av FreeBSD-porteringen av folding og unfolding har som mål å gi muligheten til å isolere vilkårlige applikasjoner. For å oppnå dette foreslår de curtain-verktøyet, som tillater å anvende regler definert i en separat fil på applikasjoner. Den foreslåtte konfigurasjonen inkluderer en fil med grunnleggende innstillinger som definerer klassene for systemkall og typiske filstier som er spesifikke for bestemte applikasjoner (arbeid med lyd, nettverk, logging osv.), samt en fil med tilgangsregler for spesifikke applikasjoner.
Gardinverktøyet kan brukes til å isolere de fleste verktøy, serverprosesser, grafiske applikasjoner og til og med hele skrivebordsøkter som ikke er endret. Deling av gardin med isolasjonsmekanismene som tilbys av Jail and Capsicum-undersystemene støttes.
Nestet isolasjon er også mulig, der oppstartede applikasjoner arver reglene som er etablert av hovedapplikasjonen, og supplerer dem med separate restriksjoner. Noen kjerneoperasjoner (feilsøkingsverktøy, POSIX/SysV IPC, PTY) er ytterligere beskyttet av en barrieremekanisme som forhindrer tilgang til kjerneobjekter opprettet av andre prosesser enn den gjeldende eller hovedprosessen.
En prosess kan konfigurere sin egen isolasjon ved å kalle curtainctl eller bruke pledge()- og unveil()-funksjonene som tilbys av libcurtain-biblioteket, lik de i OpenBSD. Sysctl-en 'security.curtain.log_level' brukes til å spore låser mens applikasjonen kjører.
Tilgang til X11- og Wayland-protokollene er aktivert separat ved å spesifisere "-X"/"-Y" og "-W"-alternativene når du starter gardin, men støtte for grafiske applikasjoner er ennå ikke tilstrekkelig stabilisert og har en rekke uløste problemer ( problemer dukker stort sett opp når du bruker X11, og Wayland-støtten er mye bedre). Brukere kan legge til ytterligere begrensninger ved å lage lokale regelfiler (~/.curtain.conf). For eksempel,
Implementeringen inkluderer mac_curtain-kjernemodulen for obligatorisk tilgangskontroll (MAC), et sett med patcher for FreeBSD-kjernen med implementering av nødvendige drivere og filtre, libcurtain-biblioteket for bruk av plegde og avslørte funksjoner i applikasjoner, verktøygardinen, viser konfigurasjon filer, en pakke med tester og oppdateringer for enkelte brukerplassprogrammer (for eksempel for å bruke $TMPDIR for å forene arbeid med midlertidige filer). Når det er mulig, prøver forfatteren å minimere antallet endringer som krever oppdatering av kjernen og applikasjonene.
Til slutt, hvis du er interessert i å lære mer , kan du finne detaljene på følgende lenke.