Background On Friday, March 29th, 2024, a historical and sophisticated security vulnerability (CVE-2024-3094) was discovered in the XZ Utils package and liblzma api in version 5.6.0 and 5.6.1. While this vulnerability mostly affects Debian and RedHat distributions, there was some interesting discussion regarding xz and Nix.
How did this affect Nix and NixOS? The truth is not a whole lot in reality. I saw conflicting reports, but supposedly, the tarballs of xz that Nix downloads were not infected.
Nix lets you go back, and you and even mix channels. Pulling one package from a different version.
That’s true, but you have to know there was a backdoor first. If someone doesn’t know, and they use the latest version, they’re vulnerable to attack
@starman @GarlicToast true but I don’t think you can use nix and not know about the xz exploit within minutes of it being found out.
Removed by mod
I believe the point they were making is that if you are techy enough to use nix, they are likely the type to keep up to date with news like this.
NixOS is aimed at highly technical people. You literally code your system structure.
If the issue had been critical, then the branch head could be rolled back, causing everyone to downgrade
That’s a nice idea in theory but not possible in practice as the last Nixpkgs revision without a tainted version of xz is many months old. You’d trade one CVE for dozens of others.
That works for leaf packages but not for core node packages. Every package depends on xz in some way; it’s in the stdenv aswell as bootstrap.
You are right, it will be a mess to pull xz from a different hash. This is why you go back to an older build, and keep only packages you need on the newer version.
Those packages themselves depend on xz. Pretty much all of them.
What you’re suggesting would only make the
xz
executable not be backdoored anymore but any other application using liblzma would still be as vulnerable as before. That’s actually the only currently known attack vector; inject malicious code into SSHD via liblzma.