NixOS and reproducible builds could have detected the xz backdoor
Role of NixOS and reproducible builds
- Several commenters stress that NixOS and reproducible builds did not detect the xz backdoor; NixOS actually shipped the malicious xz, though the payload didn’t trigger there.
- The blog post is seen as “how Nix could be improved” rather than evidence that it already protects against such attacks.
- Core idea: if Nix could fully rebuild xz from its VCS source during bootstrap, it would have noticed the tarball differed from the repository.
- Others note this is not unique to Nix; any distro (Debian, RPM-based, etc.) can build from VCS and already works on reproducible builds.
Nature of the xz attack
- The backdoor lived only in the release tarball, not in the corresponding git commit.
- Build scripts enabled the malicious code only when detecting Debian/Fedora-like build environments; this avoided non-reproducibility in ecosystems where it might be noticed.
- NixOS was unaffected operationally mainly because it wasn’t targeted (and also due to its different filesystem layout), not because the attacker couldn’t have supported it.
Human and process factors
- Multiple comments emphasize this was a “meatspace” exploit: social engineering and maintainer burnout, not a pure technical bug.
- Conclusion: no technical framework (including Nix) can be a “security cure‑all” while humans control review and approval.
Sandboxing and least privilege
- Some argue Nix/Guix-style ephemeral containers or fine-grained sandboxes for every process would mitigate many supply-chain and library compromises.
- Others counter that current Linux sandbox mechanisms (Flatpak, Snap, etc.) often break workflows and create poor UX; users then seek insecure workarounds.
- There’s interest in macOS/iOS-style permission prompts and better UIs for per-app or per-shell isolation.
Bootstrapping and dependency tangles
- The article’s note that autoconf “depends on xz” draws criticism; people question why a build system tool should rely on a compression utility so deep in the stack.
- Explanation: in Nixpkgs, xz is part of the standard build environment and autoconf tarballs are distributed as .tar.xz, creating awkward circular bootstrapping issues.
Debate over claims and generality of solutions
- Some see the article as overfitting to a single incident and argue a determined attacker could adapt to any such defense.
- Repeated point: “a slightly improved version of any OS” could have caught this, not just Nix.
- Others still find value in the analysis as a concrete proposal for better bootstrap and artifact-verification practices across ecosystems.