La organización FreeBSD Foundation anunció la implementación del soporte para compilaciones reproducibles, que permiten verificar que los archivos binarios distribuidos se compilan a partir del código fuente proporcionado y no contienen cambios ocultos. También se ha declarado que se ofrecerá la posibilidad de compilar FreeBSD en entornos no privilegiados, que no requieren derechos de root. Eliminar componentes que se ejecutan durante la compilación con privilegios de root podrá aumentar la seguridad de la infraestructura para la creación de versiones de FreeBSD, reducir la superficie de ataque del entorno de compilación y simplificar la organización de compilaciones automatizadas.
En la etapa de compilación, los derechos de root eran necesarios para crear archivos de dispositivos, establecer permisos y montar sistemas de archivos adicionales (por ejemplo, al crear imágenes de disco). Se han añadido cambios para reemplazar tales acciones por operaciones que no requieren derechos de root, las cuales se han incorporado en una rama experimental de FreeBSD, pero se trasladarán más adelante a la rama en la que se basa la versión de FreeBSD 15.0. Además de la compilación de lanzamientos a partir del código fuente, ahora también se pueden crear, sin privilegios de root, artefactos como imágenes ISO para crear unidades USB instalables y de arranque, así como imágenes del sistema para máquinas virtuales y plataformas en la nube.
En cuanto a las compilaciones reproducibles, permiten lograr la identidad de los archivos binarios generados a partir del código fuente en diferentes entornos de compilación. Cualquier persona ahora puede comprobar personalmente que los archivos binarios distribuidos se compilan a partir de los textos fuente proporcionados, sin tener que confiar únicamente en la infraestructura de compilación del proyecto, ya que la compromisión del compilador o las herramientas de compilación puede llevar a la inserción de puertas traseras ocultas.
Al crear compilaciones reproducibles se tienen en cuenta aspectos como la coincidencia exacta de las dependencias; el uso de un conjunto y versiones inalterados de herramientas de compilación; un conjunto idéntico de opciones y configuraciones predeterminadas; la preservación del orden de compilación de los archivos (aplicando los mismos métodos de ordenamiento); la desactivación de la adición de información de servicio inconstante por parte del compilador, como valores aleatorios, enlaces a rutas de archivos y datos sobre la fecha y hora de la compilación. Los errores y condiciones de carrera en las herramientas también afectan la reproducibilidad de las compilaciones.
Fuente: opennet.ru
