Bubblewrap 0.6 llega con soporte para Meson y mas

Hace poco se dio a conocer la disponibilidad de la nueva versión del sandboxing Bubblewrap 0.6, en la cual se han realizado algunos cambios importantes tales como la inclusión del soporte para la compilación con Meson, el soporte parcial para la especificación REUSE y otros cuantos cambios más.

Para quienes desconocen de Bubblewrap, deben saber que esta es una utilidad que generalmente se usa para restringir aplicaciones individuales a usuarios sin privilegios. En la práctica, el proyecto Flatpak utiliza Bubblewrap como una capa para aislar las aplicaciones iniciadas desde los paquetes.

Para el aislamiento, Linux utiliza tecnologías de virtualización de contenedores tradicionales basadas en el uso de cgroups, namespaces, Seccomp y SELinux. Para realizar operaciones privilegiadas para configurar un contenedor, Bubblewrap se inicia con privilegios de root (un archivo ejecutable con un indicador de suid), seguido de restablecimiento de privilegios después de que se inicializa el contenedor.

Sobre Bubblewrap

Bubblewrap se posiciona como una implementación suida limitada del subconjunto de las funciones de espacios de nombres de usuario para excluir todos los identificadores de usuarios y procesos del entorno, excepto el actual, usan los modos CLONE_NEWUSER y CLONE_NEWPID.

Para la protección adicional, los programas que se ejecutan en Bubblewrap se inician en el modo PR_SET_NO_NEW_PRIVS, que prohíbe nuevos privilegios, por ejemplo, con el indicador setuid.

El aislamiento en el nivel del sistema de archivos se realiza creando, de forma predeterminada, un nuevo espacio de nombres de montaje, en el que se crea una partición raíz vacía utilizando tmpfs.

Si es necesario, las secciones del FS externo se adjuntan a esta sección en el modo «mount –bind» (por ejemplo, al comenzar con la opción «bwrap –ro-bind /usr/usr«, la sección /usr se reenvía desde el sistema principal en modo de solo lectura).

Las capacidades de red se limitan al acceso a la interfaz de bucle invertido con aislamiento de la pila de red a través de los indicadores CLONE_NEWNET y CLONE_NEWUTS.

La diferencia clave con el proyecto similar de Firejail, que también usa el iniciador setuid, es que en Bubblewrap, la capa de contenedor incluye solo las características mínimas necesarias y todas las funciones avanzadas necesarias para iniciar aplicaciones gráficas, interactuar con el escritorio y filtrar llamadas a Pulseaudio, se llevan al lado de Flatpak y se ejecutan después de restablecer los privilegios.

Principales novedades de Bubblewrap 0.6

En esta nueva versión que se presenta de Bubblewrap 0.6 se destaca que se agregó soporte para el sistema de compilación Meson, con lo cual el soporte para compilar con Autotools se ha conservado por ahora, pero se pretende que este se eliminará en favor del uso de Meson en una versión futura.

Otra de las novedades que presenta esta nueva versión de Bubblewrap 0.6 es la implementación de la opción «–add-seccomp» para agregar más de un programa seccomp, ademas de que se agregó una advertencia de que si se especifica nuevamente la opción «–seccomp», solo se aplicará la última opción.

Tambien se destaca que se agregó el soporte parcial para la especificación REUSE, que unifica el proceso de especificación de información de licencia y copyright.

Ademas de que tambien se agregaron encabezados SPDX-License-Identifier a muchos archivos de código. Seguir las pautas de REUTILIZACIÓN facilita la determinación automática de qué licencia se aplica a qué partes del código de la aplicación.

Por otra parte, se agregó una verificación del valor del contador de argumentos de la línea de comandos (argc) y se implementó una salida de emergencia si el contador es cero. El cambio le permite bloquear los problemas de seguridad causados ​​por el manejo incorrecto de los argumentos de la línea de comandos pasados, como CVE-2021-4034 en Polkit

De los demás cambios que se destacan de esta nueva versión:

  • La rama maestra en el repositorio de git se ha renombrado como main
  • Eliminar la antigua integración de CI
  • Uso de bash via PATH para una mejor compatibilidad con sistemas operativos que no sean FHS

Finalmente si estás interesado en poder conocer un poco más al respecto sobre esta nueva versión, puedes consultar los detalles en el siguiente enlace.


El contenido del artículo se adhiere a nuestros principios de ética editorial. Para notificar un error pincha aquí.

Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada.

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

bool(true)