Reproducible Builds and Insights from an Independent Verifier for Arch Linux
Joshua Drexel, Esther Hänggi, Iyán Méndez Veiga
TL;DR
The paper addresses supply chain security in free and open source software by evaluating reproducible builds (R-B) and bootstrappable builds (B-B) as mechanisms to link source code to binary artifacts. It documents progress over the past decade and presents an independent Arch Linux rebuilderd verifier to test reproducibility, reporting a packaging issue in Certbot-related Arch packages and an upstream fix for fwupd to restore reproducibility. The authors demonstrate practical gains from identifying unreproducible artifacts and applying fixes, while underscoring the need for a broader network of independent rebuilders and routine source-code audits. Collectively, the work highlights the feasibility and importance of auditable software supply chains and calls for community-wide adoption and infrastructure support to realize 100% reproducibility in large repositories.
Abstract
Supply chain attacks have emerged as a prominent cybersecurity threat in recent years. Reproducible and bootstrappable builds have the potential to reduce such attacks significantly. In combination with independent, exhaustive and periodic source code audits, these measures can effectively eradicate compromises in the building process. In this paper we introduce both concepts, we analyze the achievements over the last ten years and explain the remaining challenges. We contribute to the reproducible builds effort by setting up a rebuilder and verifier instance to test the reproducibility of Arch Linux packages. Using the results from this instance, we uncover an unnoticed and security-relevant packaging issue affecting 16 packages related to Certbot, the recommended software to install TLS certificates from Let's Encrypt, making them unreproducible. Additionally, we find the root cause of unreproduciblity in the source code of fwupd, a critical software used to update device firmware on Linux devices, and submit an upstream patch to fix it.
