S'està desenvolupant un mecanisme d'aïllament similar a plegde and unveil per a FreeBSD

Per a FreeBSD, es proposa una implementació d'un mecanisme d'aïllament d'aplicacions, que recorda les crides de sistema de plegde i desvelar desenvolupades pel projecte OpenBSD. L'aïllament en plegde s'aconsegueix prohibint l'accés a les trucades del sistema que no s'utilitzen a l'aplicació i, en revelar, obrint l'accés selectivament només a les rutes de fitxers individuals amb les quals l'aplicació pot treballar. Per a l'aplicació, es forma una mena de llista blanca de trucades al sistema i rutes de fitxers, i totes les altres trucades i camins estan prohibides.

La diferència entre l'anàleg de plegde i unveil que s'està desenvolupant per a FreeBSD es redueix a la disposició d'una capa addicional que permet aïllar les aplicacions sense fer canvis al seu codi o amb canvis mínims. Recordem que a OpenBSD, plegde i unveil tenen com a objectiu una integració estreta amb l'entorn subjacent i s'utilitzen afegint anotacions especials al codi de cada aplicació. Per simplificar l'organització de la protecció, els filtres permeten prescindir de detalls a nivell de trucades individuals al sistema i manipular classes de trucades al sistema (entrada/sortida, lectura de fitxers, escriptura de fitxers, sòcols, ioctl, sysctl, llançament de processos, etc.) . Les funcions de restricció d'accés es poden cridar al codi de l'aplicació a mesura que es realitzen determinades accions, per exemple, es pot denegar l'accés a sockets i fitxers després d'obrir els fitxers necessaris i establir una connexió de xarxa.

L'autor del port de plegde i revelar per a FreeBSD té la intenció de proporcionar la possibilitat d'aïllar aplicacions arbitràries, per a les quals es proposa la utilitat de cortina, que us permet aplicar regles definides en un fitxer separat a les aplicacions. La configuració proposada inclou un fitxer amb paràmetres bàsics que defineixen classes de trucades al sistema i camins de fitxer típics específics de determinades aplicacions (treballar amb so, interacció amb la xarxa, registre, etc.), així com un fitxer amb regles d'accés per a aplicacions específiques.

La utilitat cortina es pot utilitzar per aïllar la majoria de les utilitats no modificades, processos de servidor, aplicacions gràfiques i fins i tot sessions d'escriptori senceres. La cortina es pot utilitzar juntament amb els mecanismes d'aïllament que proporcionen els subsistemes Jail i Capsicum. També és possible organitzar l'aïllament imbricat, quan les aplicacions llançades hereten les regles establertes per a l'aplicació principal, complementant-les amb restriccions individuals. Algunes operacions del nucli (instal·lacions de depuració, POSIX/SysV IPC, PTY) estan protegides addicionalment per un mecanisme de barrera que impedeix l'accés als objectes del nucli que no són creats pel procés actual o principal.

Un procés pot configurar el seu propi aïllament cridant a curtainctl o utilitzant les funcions plegde() i unveil() de libcurtain, similars a les que es troben a OpenBSD. Per fer un seguiment dels bloquejos mentre l'aplicació s'executa, es proporciona el sysctl 'security.curtain.log_level'. L'accés als protocols X11 i Wayland s'habilita per separat especificant les opcions "-X"/"-Y" i "-W" quan s'executa curtain, però el suport per a aplicacions gràfiques encara no està prou estabilitzat i té una sèrie de problemes no resolts ( els problemes apareixen principalment quan s'utilitza X11 i el suport de Wayland s'implementa molt millor). Els usuaris poden afegir restriccions addicionals creant fitxers de regles locals (~/.curtain.conf). Per exemple, per permetre l'escriptura des de Firfox només al directori ~/Downloads/, podeu afegir una secció "[firefox]" amb la regla "~/Downloads/: rw +".

La implementació inclou el mòdul del nucli mac_curtain per al control d'accés obligatori (MAC, Control d'accés obligatori), un conjunt de pedaços per al nucli de FreeBSD amb la implementació dels controladors i filtres necessaris, la biblioteca libcurtain per utilitzar les funcions plegde i unveil a les aplicacions, la utilitat cortina, exemples de fitxers de configuració, un conjunt de proves i pedaços per a alguns programes a l'espai d'usuari (per exemple, per utilitzar $TMPDIR per unificar el treball amb fitxers temporals). Quan sigui possible, l'autor té la intenció de minimitzar el nombre de canvis que requereixen pedaços al nucli i a les aplicacions.

Font: opennet.ru

Afegeix comentari