Las compilaciones reproducibles ya son un hecho en openSUSE Factory
La capacidad de poder ofrecer compilaciones reproducibles en Linux es una marca de transparencia y seguridad en la que actualmente diversas distribuciones se encuentran trabajando y que otras ya ofrecen.
La importancia de ello radica en que esto permite tanto a desarrolladores, investigadores como a usuarios verificar que el binario distribuido se ha creado correctamente a partir del código fuente proporcionado y no ha sido alterado.
Consultado un poco la documentación de Linux, podemos entender que:
Generalmente es deseable que la construcción del mismo código fuente con el mismo conjunto de herramientas sea reproducible, es decir, que el resultado sea siempre exactamente el mismo. Esto hace posible verificar que la infraestructura de construcción para una distribución binaria o un sistema integrado no haya sido subvertida. Esto también puede facilitar la verificación de que un cambio de fuente o herramienta no supone ninguna diferencia en los archivos binarios resultantes
Y en el caso Linux y de manera general en todo el software de código abierto, las compilaciones reproducibles son esenciales para garantizar que la comunidad pueda verificar y auditar el software de manera, además de que esto permite poder detectar cambios mal intencionados.
openSUSE Factory ya ofrece compilaciones reproducibles «bit a bit»
La razón de mencionar esto, es que el proyecto openSUSE ha introducido el soporte para compilaciones reproducibles «bit a bit» en su repositorio openSUSE Factory, que es la base para la distribución openSUSE Tumbleweed.
Esta actualización permite garantizar que los archivos binarios distribuidos en los paquetes sean generados de manera consistente a partir del código fuente proporcionado, sin incluir cambios ocultos y como mencionamos, el beneficio de realizar esto, es que cualquier usuario puede verificar por sí mismo que las compilaciones propuestas coinciden exactamente con las compilaciones generadas desde los códigos fuente.
Un ejemplo reciente es que las compilaciones reproducibles permiten la creación de pruebas, simplemente reconstruyendo y comparando el resultado, de que una compilación de GCC cuya fuente se extrajo con un xz comprometido no estaba comprometida; Este proceso se logró sin necesidad de realizar ingeniería inversa sobre cómo se produjo el compromiso. De manera similar, se informó que las compilaciones reproducibles eran útiles durante las investigaciones del compromiso xz
Las compilaciones reproducibles se logran teniendo en cuenta detalles como la exactitud en las dependencias, el uso de las mismas versiones y configuraciones de las herramientas de compilación, un conjunto idéntico de opciones y configuraciones predeterminadas, la preservación del orden de los archivos en la compilación (mediante métodos de clasificación consistentes), y la desactivación de la adición de información no permanente por parte del compilador, como valores aleatorios, referencias de rutas de archivos, y detalles de fecha y hora de la compilación
La capacidad de verificar un binario ofrece una capa adicional de seguridad al no depender únicamente de la confianza en la infraestructura del compilador. Esto es crucial porque comprometer el compilador o las herramientas de compilación podría conducir a la inserción de elementos maliciosos o cambios ocultos en los binarios resultantes.
Por ejemplo, los desarrolladores de openSUSE utilizaron compilaciones repetibles para garantizar la integridad de los binarios después del famoso incidente del backdoor detectado en el paquete xz. En este caso, la biblioteca liblzma comprometida, utilizada para descomprimir archivos con código GCC, podría haber introducido cambios maliciosos en el código GCC, lo que a su vez podría afectar a las aplicaciones ensambladas.
Es importante tener en cuenta que el repositorio Factory no está destinado a usuarios finales, sino principalmente a desarrolladores de distribuciones. Esto se debe a que su estabilidad no está garantizada en todo momento.
Los paquetes agregados a Factory pasan por pruebas automatizadas utilizando openQA. Una vez que estas pruebas se completan y se verifica la consistencia del estado de dependencia, el contenido del repositorio se sincroniza con los espejos varias veces por semana. El resultado final de este proceso se publica como openSUSE Tumbleweed, que es la distribución estable y confiable que los usuarios finales pueden utilizar con confianza.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.