I quickly went through the article, and I have a question: Why not Docker (or Podman) on NixOS?
NixOS has much larger community (although a bit toxic) and provides native tooling for managing OCI containers through Docker and Podman.
A community to talk about the Fediverse and all it's related services using ActivityPub (Mastodon, Lemmy, KBin, etc).
If you wanted to get help with moderating your own community then head over to [email protected]!
Learn more at these websites: Join The Fediverse Wiki, Fediverse.info, Wikipedia Page, The Federation Info (Stats), FediDB (Stats), Sub Rehab (Reddit Migration)
I quickly went through the article, and I have a question: Why not Docker (or Podman) on NixOS?
NixOS has much larger community (although a bit toxic) and provides native tooling for managing OCI containers through Docker and Podman.
I find Guix far better on almost every remark, in no particular order:
gocix
I don't have any experience with guix, so I will not express any opinions towards that.
However, regarding NixOS:
My point on binaries was not really about reproducibility as nowadays most distros have reproducible builds: Arch, Debian, RHEL, SUSE and probably more. My point is that packages in Guix are bootstrapped from a very small binary seed, something like 357 bytes, which highly mitigates the risk of Trusting Trust attacks
It's the first time I see the concept of bootstrappability in the context of security.
Is it really worth the effort?
There are multiple ways to run a supply chain attack. With bootstrappability, one can be sure that the compiler is trusted, but what about the code that the compiler compiles? There was this recent attack to XZ utils, which shows that more attention is needed on the code being merged and compiled.
I think that this just creates a false sense of security.
Contrary to that, I had read about a BSD team (I think FreeBSD) that reviews all the code before each release. This way they have achieved ~5 RCE exploits throughout their entire history.
I think it's worth the effort since it prevents numerous risks at the root, for sure it's not enough. I agree that bootstrapping wouldn't necessarily solve the XZ attack, but I think that should be solved by big tech paying FOSS maintainers enough or at all to prevent them from burning out.
About the BSD experience that looks like a big amount of work but definitely worth it, I'm sure they didn't ship many packages as Guix ships but I guess the projects have different goals and requirements.
There was this recent attack to XZ utils, which shows that more attention is needed on the code being merged and compiled.
XZ was made possible largely because there was unaudited binary data. One part as test data in the repo, and the other part within the pre-built releases. Bootstrapping everything from source would have required that these binaries had an auditable source, thus allowing public eyes to review the code and likely stopping the attack. Granted, reproducibility almost certainly would have too, unless the malware wasn't directly present in the code.
Pulled from here:
Every unauditable binary also leaves us vulnerable to compiler backdoors as described by Ken Thompson in the 1984 paper Reflections on Trusting Trust and beautifully explained by Carl Dong in his Bitcoin Build System Security talk.
It is therefore equally important that we continue towards our final goal: A Full Source bootstrap; removing all unauditable binary seeds.
Sure you might have the code that was input into GCC to create the binary, and sure the code can be absolutely safe, and you can even compile it yourself to see that you arrive at the same bit-for-bit binary as the official release binary. But was GCC safe? Did some other compilation dependency infect the compiled binary? Bootstrapping from an auditable seed can answer this question.