Voor FreeBSD wordt een isolatiemechanisme ontwikkeld dat vergelijkbaar is met plegde en reveal

Voor FreeBSD wordt een implementatie van een applicatie-isolatiemechanisme voorgesteld, dat doet denken aan de plegde and reveal systeemaanroepen ontwikkeld door het OpenBSD-project. Isolatie bij plegde wordt bereikt door de toegang te verbieden tot systeemaanroepen die niet in de applicatie worden gebruikt, en bij onthulling door selectief de toegang te openen tot individuele bestandspaden waarmee de applicatie kan werken. Voor de toepassing wordt een soort witte lijst met systeemaanroepen en bestandspaden gevormd en zijn alle andere oproepen en paden verboden.

Het verschil tussen de analogie van plegde en reveal die voor FreeBSD wordt ontwikkeld, komt neer op het voorzien van een extra laag waarmee je applicaties kunt isoleren zonder wijzigingen in de code aan te brengen of met minimale wijzigingen. Bedenk dat in OpenBSD plegde en reveal gericht zijn op nauwe integratie met de onderliggende omgeving en gebruikt worden door speciale annotaties toe te voegen aan de code van elke applicatie. Om de organisatie van de beveiliging te vereenvoudigen, kunt u met filters de details op het niveau van individuele systeemaanroepen achterwege laten en klassen van systeemaanroepen manipuleren (invoer/uitvoer, bestanden lezen, bestanden schrijven, sockets, ioctl, sysctl, processtart, enz.) . Toegangsbeperkingsfuncties kunnen in de applicatiecode worden aangeroepen wanneer bepaalde acties worden uitgevoerd. De toegang tot sockets en bestanden kan bijvoorbeeld worden geweigerd na het openen van de benodigde bestanden en het tot stand brengen van een netwerkverbinding.

De auteur van de port of plegde and reveal voor FreeBSD is van plan om de mogelijkheid te bieden om willekeurige applicaties te isoleren, waarvoor het Curtain-hulpprogramma wordt voorgesteld, waarmee je regels die in een apart bestand zijn gedefinieerd op applicaties kunt toepassen. De voorgestelde configuratie omvat een bestand met basisinstellingen die klassen van systeemaanroepen en typische bestandspaden definiëren die specifiek zijn voor bepaalde applicaties (werken met geluid, netwerkinteractie, loggen, enz.), evenals een bestand met toegangsregels voor specifieke applicaties.

Het Curtain-hulpprogramma kan worden gebruikt om de meeste ongewijzigde hulpprogramma's, serverprocessen, grafische applicaties en zelfs volledige desktopsessies te isoleren. Gordijn kan worden gebruikt in combinatie met de isolatiemechanismen van de subsystemen Jail en Capsicum. Het is ook mogelijk om geneste isolatie te organiseren, wanneer gestarte applicaties de regels overnemen die zijn ingesteld voor de bovenliggende applicatie, en deze aanvullen met individuele beperkingen. Sommige kernelbewerkingen (foutopsporingsfaciliteiten, POSIX/SysV IPC, PTY's) worden bovendien beschermd door een barrièremechanisme dat toegang verhindert tot kernelobjecten die niet door het huidige of bovenliggende proces zijn gemaakt.

Een proces kan zijn eigen isolatie configureren door Curtainctl aan te roepen of door de functies plegde() en reveal() van libcurtain te gebruiken, vergelijkbaar met die gevonden in OpenBSD. Om vergrendelingen te volgen terwijl de applicatie actief is, is de sysctl 'security.curtain.log_level' beschikbaar. Toegang tot de X11- en Wayland-protocollen wordt afzonderlijk mogelijk gemaakt door de opties “-X”/”-Y” en “-W” op te geven bij het uitvoeren van Curtain, maar ondersteuning voor grafische toepassingen is nog niet voldoende gestabiliseerd en kent een aantal onopgeloste problemen ( problemen treden vooral op bij het gebruik van X11 en Wayland-ondersteuning is veel beter geïmplementeerd). Gebruikers kunnen extra beperkingen toevoegen door lokale regelbestanden te maken (~/.curtain.conf). Om bijvoorbeeld alleen schrijven vanuit Firfox naar de map ~/Downloads/ toe te staan, kunt u een sectie “[firefox]” toevoegen met de regel “~/Downloads/: rw +”.

De implementatie omvat de mac_curtain kernelmodule voor verplichte toegangscontrole (MAC, Mandatory Access Control), een set patches voor de FreeBSD-kernel met de implementatie van de noodzakelijke handlers en filters, de libcurtain-bibliotheek voor het gebruik van de plegde en reveal-functies in applicaties, het Curtain-hulpprogramma, voorbeeldconfiguratiebestanden, een set tests en patches voor sommige programma's in de gebruikersruimte (bijvoorbeeld voor het gebruik van $TMPDIR om werk met tijdelijke bestanden te verenigen). Waar mogelijk is de auteur van plan het aantal wijzigingen dat patches voor de kernel en applicaties vereist, te minimaliseren.

Bron: opennet.ru

Voeg een reactie