Se está desarrollando un mecanismo de aislamiento para FreeBSD, similar a plegde y unveil.

Para FreeBSD, se ha propuesto una implementación de un mecanismo de aislamiento de aplicaciones, similar a las llamadas al sistema plegde y unveil desarrolladas por el proyecto OpenBSD. El aislamiento en plegde se realiza a través de la prohibición de acceso a las llamadas al sistema no utilizadas en la aplicación, mientras que en unveil mediante la apertura selectiva de acceso solo a ciertas rutas de archivos con las que puede trabajar la aplicación. Se forma una especie de lista blanca de llamadas al sistema y rutas de archivos para la aplicación, y se prohíben todas las demás llamadas y rutas.

La diferencia entre el análogo de plegde y unveil desarrollado para FreeBSD radica en la provisión de una capa adicional que permite aislar aplicaciones sin modificar su código o con cambios mínimos. Vale la pena recordar que en OpenBSD, plegde y unveil están diseñados para una integración estrecha con el entorno base y se aplican a través de la adición de anotaciones especiales en el código de cada aplicación. Para simplificar la organización de la protección, los filtros permiten prescindir de la detallada descripción a nivel de llamadas al sistema individuales y manipular clases de llamadas al sistema (entrada/salida, lectura de archivos, escritura de archivos, sockets, ioctl, sysctl, ejecución de procesos, etc.). Las funciones de restricción de acceso pueden ser invocadas en el código de la aplicación a medida que se llevan a cabo ciertas acciones; por ejemplo, el acceso a sockets y archivos puede cerrarse después de abrir los archivos necesarios y establecer la conexión de red.

El autor del puerto plegde y unveil para FreeBSD tiene la intención de ofrecer la posibilidad de aislar aplicaciones arbitrarias, para lo cual se ha propuesto la utilidad curtain, que permite aplicar a las aplicaciones reglas definidas en un archivo separado. La configuración propuesta incluye un archivo con configuraciones básicas que definen clases de llamadas al sistema y rutas de archivos típicas, específicas para ciertas aplicaciones (trabajo con sonido, interacción en red, registro en logs, etc.), así como un archivo con reglas de acceso para aplicaciones específicas.

La utilidad curtain puede utilizarse para aislar la mayoría de las utilidades no modificadas, procesos del servidor, aplicaciones gráficas e incluso sesiones completas de escritorio. Se admite el uso conjunto de curtain con los mecanismos de aislamiento proporcionados por las subsistemas Jail y Capsicum. También es posible organizar un aislamiento anidado, donde las aplicaciones ejecutadas heredan las reglas establecidas por la aplicación padre, complementándolas con restricciones específicas. Algunas operaciones del núcleo (herramientas de depuración, IPC POSIX/SysV, PTYs) están protegidas adicionalmente mediante un mecanismo de barreras que impide el acceso a objetos del núcleo creados por procesos que no son el actual o el padre.

El proceso puede configurar su propio aislamiento mediante la llamada curtainctl o utilizando las funciones plegde() y unveil() proporcionadas por la biblioteca libcurtain, que son similares a las funciones equivalentes en OpenBSD. Para rastrear bloqueos durante el funcionamiento de la aplicación, existe un sysctl ‘security.curtain.log_level’. El acceso a los protocolos de X11 y Wayland se activa por separado al iniciar curtain con las opciones ‘-X’/’-Y’ y ‘-W’, pero el soporte para aplicaciones gráficas aún no está suficientemente estabilizado y presenta varios problemas no resueltos (los problemas se manifiestan principalmente al usar X11, mientras que el soporte para Wayland está implementado de manera significativamente mejor). Los usuarios pueden agregar restricciones adicionales mediante la creación de archivos locales con reglas (~/.curtain.conf). Por ejemplo, para permitir la escritura de Firefox solo en el directorio ~/Downloads/, se puede añadir una sección ‘[firefox]’ con la regla ‘~/Downloads/: rw +’.

La implementación incluye un módulo del núcleo mac_curtain para control de acceso obligatorio (MAC, Mandatory Access Control), un conjunto de parches para el núcleo FreeBSD con la implementación de controladores y filtros necesarios, la biblioteca libcurtain para usar las funciones plegde y unveil en aplicaciones, la utilidad curtain, ejemplos de archivos de configuración, un conjunto de pruebas y parches para algunos programas en espacio de usuario (por ejemplo, para utilizar $TMPDIR con el fin de unificar el trabajo con archivos temporales). Si es posible, el autor tiene la intención de minimizar la cantidad de cambios que requieren la aplicación de parches al núcleo y a las aplicaciones.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster