
El FESCo, la máxima autoridad técnica detrás del desarrollo de Fedora, anuncio hace algunos días un cambio clave que será introducido en versión de otoño de «Fedora 43». Y es que se ha aprobado oficialmente el objetivo de proporcionar compilaciones de paquetes totalmente reproducibles para al menos el 99 % del repositorio.
Actualmente, la cobertura de compilaciones reproducibles en Fedora ya alcanza el 90 %. El 10 % restante se concentra en paquetes que aún requieren intervención por parte de sus mantenedores. Para motivar la resolución de estos casos, se ha decidido que los fallos relacionados con la no repetibilidad de compilaciones serán tratados como errores de compilación, lo que acelerará su corrección.
¿Qué son las compilaciones reproducibles y por qué importan?
Una compilación reproducible garantiza que cualquier persona pueda tomar el código fuente de un paquete y, usando el mismo entorno, producir exactamente el mismo binario que se ofrece. Esto significa que los usuarios pueden reconstruir paquetes RPM y verificar que coincidan con los distribuidos oficialmente, al menos en todos los elementos relevantes del paquete: archivos incluidos, metadatos esenciales, etc. Las únicas diferencias permitidas serán detalles como la marca de tiempo, el nombre del host de compilación o la firma digital.
El beneficio inmediato es claro: ya no será necesario confiar ciegamente en la infraestructura de construcción de Fedora. Los usuarios podrán comprobar por sí mismos que los binarios no han sido alterados ni contaminados, algo crucial en un contexto donde ataques sofisticados podrían introducir código malicioso desde el propio compilador o herramientas intermedias.
El siguiente paso es solicitar a los mantenedores que resuelvan los problemas de reproducibilidad en sus paquetes. El objetivo es que el 99 % de los paquetes sean reproducibles en Fedora. Para lograrlo, se abrirán bugzillas contra los paquetes cuando una reconstrucción reporte diferencias.
Somos conscientes de algunos problemas que no se pueden solucionar fácilmente:
Los paquetes Haskell no se pueden reproducir al compilarse con más de un subproceso. El equipo de desarrollo está trabajando en el problema ; la próxima versión de ghc podría resolverlo por completo.
Los paquetes mingw tienen datos de depuración irreproducibles.
Los paquetes de golang tienen datos de depuración irreproducibles
El núcleo utiliza una clave efímera para las firmas de los módulos.
Los paquetes firmados para SecureBoot utilizan una clave privada (shim, grub2).
Algunos requisitos de compilación (BuildRequires) en los srpm dependen de la arquitectura.
Esto se debe principalmente a cómo preparamos el entorno para las compilaciones. No afecta directamente a los rpm binarios.
Crearemos un sistema de seguimiento de errores para los problemas que afecten a varios paquetes (Haskell, Mingw, Golang). Esperamos que estos problemas se resuelvan tanto en el desarrollo original como en el desarrollo posterior.
Seguridad y beneficios múltiples
Como tal, se menciona que el lograr una reproducibilidad total va más allá de lo puramente técnico, ya que representan un avance en seguridad permitiendo verificar que el software no ha sido manipulado durante su construcción. Pero además, tienen un impacto tangible en otros aspectos importantes del ciclo de desarrollo.
En términos de control de calidad, el proceso ayuda a detectar errores sutiles en los paquetes. Por ejemplo, si un paquete marcado como «noarch» (independiente de arquitectura) produce binarios diferentes en distintas plataformas, eso puede indicar un mal uso de dependencias específicas de hardware.
Desde el punto de vista del mantenimiento, las compilaciones reproducibles permiten detectar con claridad qué ha cambiado tras una edición menor: solo las diferencias directamente asociadas con esa modificación aparecerán reflejadas en los nuevos binarios, lo que facilita el análisis, la depuración y el control de versiones.
Beneficio para Fedora
Los desarrolladores de Fedora, mencionan que el logro de compilaciones reproducibles implica controlar múltiples factores técnicos, ya que debe garantizarse la consistencia en dependencias, versiones de herramientas de compilación, configuraciones por defecto y el propio orden de los archivos generados. El compilador, además, debe configurarse para no insertar valores volátiles como rutas absolutas, marcas de tiempo o datos aleatorios. También es esencial evitar condiciones de carrera y errores ocultos en la cadena de herramientas.
Fedora ha preparado su infraestructura para hacer frente a estos desafíos. Cambios previos en su sistema de compilación ya han permitido sincronizar los metadatos de modificación de archivos (mtime) con los del código fuente de referencia y asegurar que las estructuras internas de los binarios sean consistentes entre ejecuciones.
Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
Continúar leyendo...