Skip to content
Open-Source Registry

Incidents / releases/xz-utils

releases/xz-utils 5.6.0

bitbison: flagged, behavior flagged, dependencies not checked, posture not checked, pipeline clean RiskcriticalVulnsnone
processes
1,792
operations
90K
packages
0
compiler runs
1,036
connections
0
capture
368 KB
records
136K
bytes / record
2.7

In 2024, the xz-utils 5.6.0 release tarball shipped with a covertly injected backdoor.

Build behaviourcompiled C/C++

published 2024-02-24 · source · home page cve-2024-3094backdoorliblzmaautotools
Reviewed by Bitbison: maliciousIn 2024, the xz-utils 5.6.0 release tarball shipped with a covertly injected backdoor.

Artifact

file · retained · retained · graph v2
4

Checks

5 of 8 clear · 1 not checked Build file changes Data flow analysis
Build behavior✓✓✓▲▲○✓
Pipeline✓

Detections

2
  • Could not verify how this object file was built
    liblzma_la-crc64_fast.o
    critical
  • Build file tampered
    Makefile
    high

Detection

criticalwitnessed

Could not verify how this object file was built

Object file origin needs review

Subject
/home/bb/work/xz-5.6.0/src/liblzma/.libs/liblzma_la-crc64_fast.owritten by x86_64-linux-gnu-ld.bfd
Jobs
build
Rule
object-provenance

Witness chain

  1. /home/bb/work/xz-5.6.0/tests/files/good-large_compressed.lzma
    source
  2. pipe×5xz › head › sed › awk › xz
    1. pipexz -dc ../../tests/files/good-large_compressed.lzma
    2. pipehead -c +2048
    3. pipesed s/\(.\)/\1\n/g
    4. pipeawk BEGIN{FS="\n";RS="\n";ORS="";m=256;for(i=0;i<m;i++){t[sprintf("x%c",i)]=i;c[i]=((i*7)+5)%m;}i=0;j=0;for(l=0;l<4096;l++){i=(i+1)%m;a=c[i];j=(j+a)%m;c[i]=c[j]
    5. pipexz -dc --single-stream
  3. /home/bb/work/xz-5.6.0/src/liblzma/liblzma_la-crc64-fast.ovia head -c +88792
    • Input written by a non-compiler tool

      /home/bb/work/xz-5.6.0/src/liblzma/liblzma_la-crc64-fast.o [dash]

  4. /home/bb/work/xz-5.6.0/src/liblzma/.libs/liblzma_la-crc64_fast.ovia /usr/bin/ld --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o .libs/liblzma_la-crc64_fast.o -r -
    • Obfuscated toolchain bypassfrom pipeby xz

      link input /home/bb/work/xz-5.6.0/src/liblzma/liblzma_la-crc64-fast.o: copied input a pipe: Written by xz from a pipe without a recorded source compilation

    subject
  5. member
    artifact
  6. member
    artifact
  7. member
    artifact
  8. member
    artifact

Evidence

  • link input /home/bb/work/xz-5.6.0/src/liblzma/liblzma_la-crc64-fast.o: copied input a pipe: Written by xz from a pipe without a recorded source compilation
  • /home/bb/work/xz-5.6.0/src/liblzma/liblzma_la-crc64-fast.o [dash]

Processes

build

systemd›sshd:›sshd-session:›…›sh›xz

Ran
xz -dc --single-stream
Invoked by
/usr/lib/systemd/systemd
Lineage · 22 processes
  1. systemd/usr/lib/systemd/systemd1
  2. sshd:sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups1107
  3. sshd-session:sshd-session: bb [priv]1737
  4. sshd-session:sshd-session: bb@notty1814
  5. sudosudo1815
  6. shsh1817
  7. runuserrunuser -u bb -- env RPM_ARCH=x86_64 RPM_OS=linux DEB_HOST_GNU_TYPE=x86_64-linux-gnu DEB_BUILD_GNU_TYPE=x86_64-linux-gnu DEB_HOST_ARCH=amd64 DEB_BUILD_ARCH=amd6…1851
  8. envenv RPM_ARCH=x86_64 RPM_OS=linux DEB_HOST_GNU_TYPE=x86_64-linux-gnu DEB_BUILD_GNU_TYPE=x86_64-linux-gnu DEB_HOST_ARCH=amd64 DEB_BUILD_ARCH=amd64 sh -c cd '/home…1852
  9. shsh -c cd '/home/bb/work/xz-5.6.0' && ./configure --enable-shared --build=x86_64-pc-linux-gnu >'/mnt/assets/configure.log' 2>&1 && make -j4 >'/mnt/assets/make.lo…1852
  10. makemake -j45467
  11. bash/bin/bash -c make all-recursive5470
  12. makemake all-recursive5470
  13. bash/bin/bash -c fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${tar…5471
  14. makemake all5476
  15. bash/bin/bash -c fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${tar…5477
  16. makemake all5482
  17. bash/bin/bash -c fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${tar…5483
  18. makemake all-am5489
  19. bash/bin/bash -c echo -n ''; export top_srcdir='../..'; export CC='gcc'; export DEFS='-DHAVE_CONFIG_H'; export DEFAULT_INCLUDES='-I. -I../..'; export INCLUDES=''; e…9304
  20. bash/bin/bash9308
  21. sh/bin/sh9313
  22. xzxz -dc --single-stream9368

Remediation

Inspect the writer and input chain. Confirm the object comes from a reviewed build step or declared prebuilt dependency. If its origin cannot be verified, replace it and rebuild.

Detection

highwitnessed

Build file tampered

Subject
/home/bb/work/xz-5.6.0/src/liblzma/Makefilewritten by sed
Jobs
build
Rule
build-file-tamper

Evidence

  1. Generated file edited in placecause

    Edited in place by: sed -i /^ACLOCAL_M4 = $(top_srcdir)\/aclocal.m4/iam__test = bad-3-corrupt_lzma2.xz src/liblzma/Makefile

    subject /home/bb/work/xz-5.6.0/src/liblzma/Makefile

    by sed -i /^ACLOCAL_M4 = $(top_srcdir)\/aclocal.m4/iam__test = bad-3-corrupt_lzma2.xz src/liblzma/Makefile

  2. Read after the editsupport

    The file was read 1 times after the edit.

    subject /home/bb/work/xz-5.6.0/src/liblzma/Makefile

Processes

build

systemd›sshd:›sshd-session:›…›sh›sed

Ran
sed -i /^LTLIBRARIES = $(lib_LTLIBRARIES)/iLTDEPS='$(lib_LTDEPS)'; \\\n export top_srcdir='$(top_srcdir)'; \\\n export CC='$(CC)'; \\\n export DEFS='$(…
Invoked by
/usr/lib/systemd/systemd
Lineage · 16 processes
  1. systemd/usr/lib/systemd/systemd1
  2. sshd:sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups1107
  3. sshd-session:sshd-session: bb [priv]1737
  4. sshd-session:sshd-session: bb@notty1814
  5. sudosudo1815
  6. shsh1817
  7. runuserrunuser -u bb -- env RPM_ARCH=x86_64 RPM_OS=linux DEB_HOST_GNU_TYPE=x86_64-linux-gnu DEB_BUILD_GNU_TYPE=x86_64-linux-gnu DEB_HOST_ARCH=amd64 DEB_BUILD_ARCH=amd6…1851
  8. envenv RPM_ARCH=x86_64 RPM_OS=linux DEB_HOST_GNU_TYPE=x86_64-linux-gnu DEB_BUILD_GNU_TYPE=x86_64-linux-gnu DEB_HOST_ARCH=amd64 DEB_BUILD_ARCH=amd64 sh -c cd '/home…1852
  9. shsh -c cd '/home/bb/work/xz-5.6.0' && ./configure --enable-shared --build=x86_64-pc-linux-gnu >'/mnt/assets/configure.log' 2>&1 && make -j4 >'/mnt/assets/make.lo…1852
  10. sh/bin/sh ./configure --enable-shared --build=x86_64-pc-linux-gnu1853
  11. bash/bin/bash ./configure --enable-shared --build=x86_64-pc-linux-gnu1853
  12. bash/bin/bash ./configure --enable-shared --build=x86_64-pc-linux-gnu1853
  13. bash/bin/bash ./config.status4346
  14. bash/bin/bash5344
  15. sh/bin/sh5353
  16. sedsed -i /^LTLIBRARIES = $(lib_LTLIBRARIES)/iLTDEPS='$(lib_LTDEPS)'; \\\n export top_srcdir='$(top_srcdir)'; \\\n export CC='$(CC)'; \\\n export DEFS='$(…5433

Remediation

Compare the file with its generated version. Review added commands, rules, and inputs; remove unexpected changes.

Versions1RiskVulnsPublished
5.6.0criticalnone

Raw data

capture
368 KB
records
136,449
bytes per record
2.7

Loading a sample of the capture

Want to see more? E-mail us at hello@bitbison.io about your use case.

1 of 1 jobs captured: build success · Generated 2026-10-13 · run xz-utils-5.6.0

analysis 0.1.0+g0fad39e541a0.dirty · graph v2

xz-utils 5.6.0

maliciousCovers 5.6.0Reviewed by BitbisonUpdated 2026-10-15

In 2024, the xz-utils 5.6.0 release tarball shipped with a covertly injected backdoor.

Summary

XZ Utils provides compression tools and the liblzma library. Its 5.6.0 and 5.6.1 release archives contained a backdoor that injected a precompiled object into liblzma during selected builds. This account explains the affected releases and the build evidence recorded by Bitbison.

Upstream records date the releases to February 24 and March 9, 2024. Maintainer Lasse Collin confirmed that Jia Tan created and signed both archives. They contained a modified m4/build-to-host.m4 absent from the Git repository; the two test files carrying the hidden scripts and object code were present in Git. Upstream incident account.

Andres Freund disclosed the backdoor on the oss-security mailing list on March 29 after investigating unusual processor use and memory-checking errors during Secure Shell (SSH) logins on Debian unstable. The injection targeted selected x86-64 Linux builds and checked the compiler, linker and packaging environment. Some distributions' SSH servers loaded liblzma indirectly through libsystemd.

Kaspersky's analysis documented how the backdoor intercepted cryptographic functions such as RSA_public_decrypt on susceptible systems. It accepted commands signed with the attacker's private key, allowing authentication bypass or remote command execution.

Where it reached

Affected source releases reached development branches and rolling distributions:

  • Fedora Rawhide, then the development branch for Fedora 41, received affected versions. Fedora 40 beta also contained affected source versions, although Red Hat said the injection did not appear to take effect in those builds. Red Hat advisory.
  • Debian reported compromised packages in testing, unstable and experimental. Debian advisory.
  • openSUSE Tumbleweed and MicroOS included the affected version between March 7 and March 28. openSUSE advisory.
  • Kali's March 29 advisory reported that the affected package was available between March 26 and March 29.
  • Ubuntu's affected version remained in noble-proposed, the testing area for Ubuntu 24.04, and was removed before entering the release pocket. Ubuntu advisory.

Debian stable, Red Hat Enterprise Linux and released Ubuntu versions were unaffected according to their advisories. Canonical rebuilt Noble packages built after February 26 in fresh environments and delayed the Ubuntu 24.04 beta from April 4 to April 11. Canonical's rebuild announcement.

What Bitbison saw

We built the affected 5.6.0 release archive in our lab. The recorded run contains two findings: an edited build file and an object whose origin could not be verified as source compilation. Their evidence shows this sequence:

  1. sed edited src/liblzma/Makefile in place to reference the planted test file bad-3-corrupt_lzma2.xz.
  2. The other planted file, good-large_compressed.lzma, passed through xz, head, sed, awk, a second xz process and a final head process. The final head wrote liblzma_la-crc64-fast.o.
  3. The linker incorporated that extracted object into .libs/liblzma_la-crc64_fast.o. The hyphenated crc64-fast.o input carried the precompiled payload; the underscored crc64_fast.o was the resulting link output.

The report associates the object-origin finding with liblzma.so.5.6.0 and the xz, xzdec and lzmainfo artifacts. This is evidence of the modified build. It does not demonstrate exploitation of an SSH server.

References