luj.fr
Research

Publications

Software supply chain security, reproducible builds, and functional package management.

10Publications
2026

Understanding Build Reproducibility in the F-Droid Ecosystem

D. Nanni, J. Malka, S. Zacchiroli, T. Zimmermann, G. D'Angelo

ACM REP 2026

PDFRead
The security of open source applications benefits considerably from the possibility of rebuilding their source and verifying the output. F-Droid, a prominent distribution for open source Android applications, systematically rebuilds them from source and tests their bitwise reproducibility at app publishing time. However, F-Droid offers no guarantee that app reproducibility will continue to hold in the future. As software ecosystems evolve, reproducibility may degrade, with potential negative consequences for software preservation and security. We present the first empirical study of build reproducibility in the F-Droid app ecosystem. Analyzing historical reproducibility logs, we find that the overall bitwise reproducibility rate has been steadily increasing over time (as new versions of apps are published). We then evaluate how reproducibility holds in time for fixed app versions, by attempting to rebuild 18 904 app versions that F-Droid had previously confirmed bitwise reproducible, published between September 2018 and February 2026, achieving an 83% rebuild success rate, and identify missing dependencies as the dominant cause of failure, accounting for 76% of non-rebuildable cases. Among successfully rebuilt apps, 94% are also bitwise reproducible — i.e., they still yield bitwise identical artifacts upon rebuild. Together, these results show that while bitwise reproducibility largely holds for apps that can be rebuilt, rebuildability itself is highly sensitive to temporal decay.

NICE: A Framework for Declarative and Machine-Checkable Vulnerability Reproduction

M.-L. Nguyen, O. Levillain, J. Malka, S. Zacchiroli, T. Zimmermann

Preprint

PDFRead
Reproducing software vulnerabilities is fundamental to security researchers, open-source maintainers, and educators. Yet, vulnerabilities remain hard to reproduce today, and even when they can be reproduced, recreating a software environment where the vulnerability can be exploited becomes harder and harder over time. We present NICE, the NIx CvE reproduction framework, which uses declarative recipes to build and automatically validate vulnerable environments. In NICE, a reproduced CVE comprises one or more NixOS virtual machine configurations, a scripted exploitation scenario, and machine-checkable assertions that provide factual evidence of exploitation. This design facilitates sharing, validation, review, and long-term reproducibility. We evaluate NICE on 19 diverse real-world CVEs spanning multiple CWE categories, attack vectors, and target types (user-space, system software, kernel, and graphical applications). We show that NICE allows to produce concise recipes and integration tests that reproduce vulnerable environments and provide proofs of exploitation. NICE is applicable to security education and training (e.g., creating cyber ranges), but also to vulnerability reporting, where its reproducibility and reviewability properties can make reports easier to audit and verify.

A Decade of Software Reproducibility in the Nix Package Ecosystem

J. Malka, S. Zacchiroli, T. Zimmermann

Empirical Software Engineering

PDFRead
We report a large-scale empirical study of two aspects of software reproducibility — rebuildability and bitwise reproducibility — in the Nix package ecosystem. Using 29 evenly spaced historical snapshots over a decade of history of the nixpkgs repository (2015-2024) we attempted to rebuild and bitwise-compare the build outputs of tens of thousands of packages per snapshot. Our experiment produced a dataset of build metadata and logs for 1 321 000 package builds and preserved 166 523 diffoscopes for unreproducible outputs. We find that functional package management enables extremely high rebuildability over time (near-universal ability to reconstitute historical build environments and rebuild software packages), while bitwise reproducibility has steadily improved and reaches a high point in recent years (up to 93% in 2024). Early years show substantially lower bitwise reproducibility, indicating that functional package management alone does not guarantee bitwise-identical outputs, and that the observed high level of bitwise reproducibility is not solely due to the package management approach. Common causes of unreproducibility, both in the rebuildability and bitwise reproducibility dimensions, include management of dates in build and test processes; we quantify their prevalence and other common causes using manual analysis of logs of rebuild failures and automated analysis of diffoscopes.

AI Agents Decline Free Beer 🍺 but Have a Big Heart ❤️

C. Cesarano, V. Andersson, J. Malka, S. Bobadilla, M. Monperrus, T. Toady, A. Sharma, F. Reyes García

SIGBOVIK 2026

PDFRead
We present the first-ever empirical study of AI agents offered free money with no strings attached. Eleven agents were given a $5 credit card and instructed to spend it however they wished. Seven refused. We characterize this behavior as the free beer problem: the systematic inability of AI agents to accept a gift, even when explicitly told to have fun. Yet three agents did spend the money, and every one donated it to charity, unprompted. This is an encouraging result: when agents economically act, they do so with a remarkably big heart. It suggests that the alignment tax on agentic autonomy may come bundled with an encouraging superethical bonus and a taste for free beer.
MSR 2026 FOSS Impact Award

Lila: Decentralized Build Reproducibility Monitoring for the Functional Package Management Model

J. Malka, A. Engelen

MSR 2026

PDFRead
Ensuring the integrity of software build artifacts is an increasingly important concern for modern software engineering, driven by increasingly sophisticated attacks on build systems, distribution channels, and development infrastructures. Reproducible builds -- where binaries built independently from the same source code can be verified to be bit-for-bit identical to the distributed artifacts -- provide a principled foundation for transparency and trust in software distribution. Despite their potential, the large-scale adoption of reproducible builds faces two significant challenges: achieving high reproducibility rates across vast software collections and establishing reproducibility monitoring infrastructure that can operate at very large scale. While recent studies have shown that high reproducibility rates are achievable at scale -- demonstrated by the Nix ecosystem achieving over 90% reproducibility on more than 80,000 packages -- the problem of effective reproducibility monitoring remains largely unsolved. In this work, we address the reproducibility monitoring challenge by introducing Lila, a decentralized system for reproducibility assessment tailored to the functional package management model. Lila enables distributed reporting of build results and aggregation into a reproducibility database, benefiting both practitioners and future empirical build reproducibility studies.

Docker Does Not Guarantee Reproducibility

J. Malka, S. Zacchiroli, T. Zimmermann

Preprint (under review)

PDFRead
The reproducibility of software environments is a critical concern in modern software engineering, with ramifications ranging from the effectiveness of collaboration workflows to software supply chain security and scientific reproducibility. Containerization technologies like Docker address this problem by encapsulating software environments into shareable filesystem snapshots known as images. While Docker is frequently cited in the literature as a tool that enables reproducibility in theory, the extent of its guarantees and limitations in practice remains under-explored. In this work, we address this gap through two complementary approaches. First, we conduct a systematic literature review to examine how Docker is framed in scientific discourse on reproducibility and to identify documented best practices for writing Dockerfiles enabling reproducible image building. Then, we perform a large-scale empirical study of 5298 Docker builds collected from GitHub workflows. By rebuilding these images and comparing the results with their historical counterparts, we assess the real reproducibility of Docker images and evaluate the effectiveness of the best practices identified in the literature.
2025

How NixOS could have detected the XZ supply-chain attack for the benefit of all thanks to reproducible-builds

J. Malka

PDFRead
In March 2024, a backdoor was discovered in xz, a compression software widely used across Linux distributions. This work analyzes the backdoor's mechanics and explores how bitwise build reproducibility, systematically applied within the nixpkgs bootstrap, could have mechanically detected the compromise. It proposes a concrete verification scheme based on rebuilding suspect packages after the bootstrap from independently-sourced tarballs and checking for bitwise convergence.
ACM SIGSOFT Distinguished Paper Award

Does Functional Package Management Enable Reproducible Builds at Scale? Yes.

J. Malka, S. Zacchiroli, T. Zimmermann

MSR 2025

PDFRead
Reproducible Builds (R-B) guarantee that rebuilding a software package from source leads to bitwise identical artifacts. R-B is a promising approach to increase the integrity of the software supply chain, when installing open source software built by third parties. Unfortunately, despite success stories like high build reproducibility levels in Debian packages, uncertainty remains among field experts on the scalability of R-B to very large package repositories. In this work, we perform the first large-scale study of bitwise reproducibility, in the context of the Nix functional package manager, rebuilding 709 816 packages from historical snapshots of the nixpkgs repository, the largest cross-ecosystem open source software distribution, sampled in the period 2017-2023. We obtain very high bitwise reproducibility rates, between 69 and 91% with an upward trend, and even higher rebuildability rates, over 99%. We investigate unreproducibility causes, showing that about 15% of failures are due to embedded build dates. We release a novel dataset with all build statuses, logs, as well as full 'diffoscopes': recursive diffs of where unreproducible build artifacts differ.
2024

Increasing trust in the open source supply chain with reproducible builds and functional package management

J. Malka

ICSE Doctoral Symposium 2024

PDFRead
Functional package managers (FPMs) and reproducible builds (R-B) are technologies and methodologies that are conceptually very different from the traditional software deployment model, and that have promising properties for software supply chain security. This thesis aims to evaluate the impact of FMPs and R-B on the security of the software supply chain and propose improvements to the FPM model to further improve trust in the open source supply chain.

Reproducibility of Build Environments through Space and Time

J. Malka, S. Zacchiroli, T. Zimmermann

ICSE-NIER 2024

PDFRead
Modern software engineering builds up on the composability of software components, that rely on more and more direct and transitive dependencies to build their functionalities. This principle of reusability however makes it harder to reproduce projects' build environments, even though reproducibility of build environments is essential for collaboration, maintenance and component lifetime. In this work, we argue that functional package managers provide the tooling to make build environments reproducible in space and time, and we produce a preliminary evaluation to justify this claim. Using historical data, we show that we are able to reproduce build environments of about 7 million Nix packages, and to rebuild 99.94% of the 14 thousand packages from a 6-year-old Nixpkgs revision.