Re: compressed release distribution formats (was: GNU Coding Standards, automake, and the recent xz-utils backdoor)

Jacob Bachmeyer <[email protected]> Tue, 02 Apr 2024 20:34:16 -0500
Newsgroups gmane.comp.gnu.standards,gmane.comp.sysutils.automake.general,gmane.comp.gnu.coreutils.general
Message-ID <[email protected]>
Eric Blake wrote:
> [adding in coreutils, for some history]
>
> [...]
>
> At any rate, it is now obvious (in hindsight) that zstd has a much
> larger development team than xz, which may alter the ability of zstd
> being backdoored in the same way that xz was, merely by social
> engineering of a lone maintainer.
>   

That just means that a cracker group needs to plant a mole in a larger 
team, which was effectively the goal of the sockpuppet campaign against 
the xz-utils maintainer, except that the cracker's sockpuppet was the 
second member of a two-member team.  I see no real difference here.

I would argue that GNU software should be consistently available in at 
least one format that can be unpacked using only tools that are also 
provided by the GNU project.  I believe that currently means "gzip", 
unfortunately.  We should probably look to adopt another one; perhaps 
the lzip maintainer might be interested?

> It is also obvious that having GNU distributions available through
> only a SINGLE compression format, when that format may be vulnerable,
>   
The xz format is not vulnerable, or at least has not been shown to be so 
in the sense of security risks, and only xz-utils was backdoored.  Nor 
is there only one implementation:  7-zip can also handle xz files.
> is a dis-service to users when it is not much harder to provide
> tarballs in multiple formats.  Having multiple tarballs as the
> recommendation can at least let us automate that each of the tarballs
> has the same contents,
Agreed.  In fact, if multiple formats can be produced concurrently, we 
could validate that the compressed tarballs are actually identical.  
(Generate using `tar -cf - [...] | tee >(compress1 >[...].tar.comp1) | 
tee >(compress2 >[...].tar.comp2) | gzip -9 >[...].tar.gz` if you do not 
want to actually write the uncompressed tarball to the disk.)  But if 
tarlz is to be used to write the lzipped tarball, you probably want to 
settle for "same file contents", since tarlz only supports pax format 
and we may want to allow older tar programs to unpack GNU releases.
>  although it won't make it any more obvious
> whether those contents match what was in git (which was how the xz
> backdoor got past so many people in the first place).
This is another widespread misunderstanding---almost all of the xz 
backdoor was hidden in plain sight (admittedly, compressed and/or 
encrypted) *in* the Git repository.  The only piece of the backdoor not 
found in Git was the modified build-to-host.m4.  The xz-utils project's 
standard practice had been to /not/ commit imported m4 files, but to 
bring them in when preparing release tarballs.  The cracker simply 
rolled the "key" to the dropper into the release tarball.  I still have 
not seen whether the configure script in the release tarball was built 
with the modified build-to-host.m4 or if the crackers were depending on 
distribution packagers to regenerate configure.

Again, everything present in both Git and the release tarball /was/ 
/identical/.  There were no mismatches, only files added to the release 
that are not in the repository, and that are /expected/ to be added to a 
release.


-- Jacob