ThreatPaperBeta
Supply Chain AttackCritical

XZ Utils Supply Chain Backdoor (CVE-2024-3094): A Multi-Year Open Source Compromise

By Sethu Satheesh · 29 Mar 2024 · 17 min read

Threat Actor: Jia Tan (probable state-sponsored actor) · Target: xz/liblzma, OpenSSH sshd on systemd-based Linux distributions

Source: www.openwall.com


Executive Summary

On March 29, 2024, a backdoor was publicly disclosed in xz-utils (CVE-2024-3094), a ubiquitous lossless compression library present on virtually all Linux and macOS systems. The backdoor, embedded in liblzma versions 5.6.0 and 5.6.1, targeted OpenSSH sshd on systemd-based Linux distributions (Debian, Ubuntu, Fedora, openSUSE Tumbleweed, Kali) by exploiting the glibc IFUNC mechanism to intercept RSA public-key authentication and achieve unauthenticated remote code execution as root.

The attack represents a watershed moment in open source supply chain security: a threat actor operating under the persona "Jia Tan" spent over two years (late 2021 – March 2024) conducting a deliberate social engineering campaign to gain maintainership of the xz project, then used that access to insert a carefully hidden, multi-stage backdoor into release tarballs. The backdoor was discovered not through automated scanning but by chance—Andres Freund noticed anomalous CPU usage during SSH logins while micro-benchmarking PostgreSQL.

The compromised versions briefly shipped in rolling-release distributions (Debian sid, Fedora Rawhide/40 beta, openSUSE Tumbleweed, Kali) but did not reach stable releases of major distributions. No evidence of in-the-wild exploitation against production systems has been confirmed, though the backdoor's design makes detection extremely difficult.

Verification of Claims

  1. Claim: Versions 5.6.0 and 5.6.1 of xz-utils contain a backdoor in liblzma targeting OpenSSH sshd. → Verified → Confirmed by Andres Freund's oss-security disclosure, independent analysis by multiple researchers (Filippo Valsorda, Russ Cox, Evan Boehs, LWN), and distribution security advisories (Debian, Red Hat, Arch, openSUSE).

  2. Claim: The backdoor enables unauthenticated remote code execution via malicious RSA certificate during SSH handshake. → Verified → Filippo Valsorda's analysis confirmed the payload extracts a command from the RSA public key field, verifies it against an attacker-controlled private key, and executes it via system() as the sshd user (typically root).

  3. Claim: The attacker "Jia Tan" spent over two years building trust through social engineering before inserting the backdoor. → Verified → Documented timeline from Russ Cox (research.swtch.com/xz-timeline) and Evan Boehs shows coordinated pressure campaigns using sockpuppet identities (Jigar Kumar, Dennis Ens) to push Lasse Collin to grant maintainership.

  4. Claim: The backdoor only activates under specific conditions: x86_64, glibc, systemd-patched OpenSSH, TERM unset, argv[0]=/usr/sbin/sshd. → Verified → Andres Freund's original analysis and LWN's "How the XZ backdoor works" detail the precise environmental checks.

  5. Claim: The malicious code exists only in release tarballs, not in the upstream Git repository. → Verified → The build-to-host.m4 modifications and malicious test files (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma) were present only in GitHub release tarballs, not in the git.tukaani.org repository.

  6. Claim: Infrastructure overlaps link this campaign to North Korean threat actor Sapphire Sleet (UNC1069). → Unverified / Speculative → No government or intelligence agency has publicly attributed the xz Utils backdoor to any specific nation-state as of publication. While some researchers noted shared hosting infrastructure with other supply chain attacks, this alone does not constitute attribution. The operation's sophistication (multi-year persona, social engineering, advanced binary backdoor) is consistent with a state-sponsored actor, but no confirmed attribution exists. Countries including North Korea, Russia, and China have been mentioned speculatively in media; all remain unsubstantiated hypotheses.

  7. Claim: The backdoor sabotages seccomp and chroot sandboxing in sshd. → Verified → LWN analysis confirms the injected code patches sshd binary to disable seccomp() and prevent chroot sandbox creation for child processes.

  8. Claim: No confirmed in-the-wild exploitation or data theft has occurred. → Unverified / Not supported by available evidence → While the backdoor existed in distributed packages for ~3 weeks, no confirmed compromise of production systems has been publicly reported. The stealth design (no logging, anti-debugging) makes definitive statements difficult.

Timeline

Date Actor Event Source
2021-10-29 Jia Tan First patch to xz-devel mailing list (.editorconfig) xz-devel mailing list
2021-11-29 Jia Tan Second patch (reproducible build fix) xz-devel mailing list
2022-02-07 Lasse Collin Merges first Jia Tan-authored commit (NULL checks) git.tukaani.org
2022-04-22 "Jigar Kumar" First pressure email demanding faster patch review xz-devel mailing list
2022-05-19 Lasse Collin Acknowledges limited capacity, hints at Jia Tan's larger role xz-devel mailing list
2022-06-07 "Jigar Kumar" Escalating pressure: "Progress will not happen until there is new maintainer" xz-devel mailing list
2022-06-10 Lasse Collin Merges first "Jia Tan" named commit (hardware function tests) git.tukaani.org
2022-06-29 Lasse Collin States Jia Tan "practically a co-maintainer already" xz-devel mailing list
2022-10-28 Jia Tan Added to Tukaani GitHub organization GitHub
2022-11-30 Lasse Collin Changes bug report email to shared alias (xz@tukaani.org) git.tukaani.org
2022-12-30 Jia Tan Gains commit access, merges batch of commits git.tukaani.org
2023-01-11 Lasse Collin Tags final release (v5.4.1) git.tukaani.org
2023-03-18 Jia Tan Tags first release as maintainer (v5.4.2) git.tukaani.org
2023-06-22 Hans Jansen / Lasse Collin / Jia Tan IFUNC support merged for CRC optimization (later exploited) git.tukaani.org
2023-07-07 Jia Tan Disables IFUNC in oss-fuzz builds (potential anti-analysis) google/oss-fuzz
2024-01-XX Jia Tan Opens PR to change oss-fuzz URL to xz.tukaani.org (increasing control) google/oss-fuzz
2024-02-23 Jia Tan Commits malicious test files (bad-3-corrupt_lzma2.xz, good-large_compressed.lzma) git.tukaani.org (cf44e4b)
2024-02-24 Jia Tan Updates exploit code for 5.6.1 (workaround valgrind crashes) git.tukaani.org (6e63681)
2024-03-07 "Hans Jansen" Requests backdoored version inclusion in Debian Debian Bug #1067708
2024-03-28 Andres Freund Discovers anomaly, privately notifies Debian/distros; CVE-2024-3094 assigned oss-security
2024-03-28 Debian Rolls back to 5.4.5 (5.6.1+really5.4.5-1) Debian tracker
2024-03-29 Andres Freund Public disclosure on oss-security mailing list openwall.com
2024-03-29 Red Hat / Fedora Confirms backdoored xz in Fedora Rawhide and 40 beta Red Hat Blog
2024-03-30 GitHub Suspends JiaT75 and Lasse Collin accounts GitHub
2024-04-01 Russ Cox Publishes detailed timeline of social engineering campaign research.swtch.com
2024-04-03 Wired / Andy Greenberg "The Mystery of 'Jia Tan,' the XZ Backdoor Mastermind" Wired
2024-05-29 Lasse Collin / Rust team Clean releases (5.6.2), GitHub repos restored tukaani.org

Attack Anatomy

Initial Access (Social Engineering & Maintainer Compromise)

The attacker did not exploit a technical vulnerability to gain access. Instead, they executed a prolonged social engineering campaign targeting the sole maintainer, Lasse Collin:

  1. Persona Creation (2021): "Jia Tan" (jiat0218@gmail.com, jiats75@gmail.com, Jia Cheong Tan) and sockpuppets "Jigar Kumar," "Dennis Ens" created with name+number email patterns.
  2. Trust Building (2021-2022): Submitted legitimate, high-quality patches over months. Contributed to libarchive with a PR that secretly weakened safety checks (safe_fprint → unsafe variant).
  3. Pressure Campaign (April–June 2022): Sockpuppets flooded xz-devel mailing list demanding faster reviews and new maintainership, exploiting Collin's disclosed mental health struggles.
  4. Maintainership Transfer (2022-2023): Collin granted commit access, GitHub org membership, shared bug-report alias, and eventually release tagging authority.
  5. Infrastructure Control (2024): Jia Tan changed oss-fuzz project URL to xz.tukaani.org (GitHub Pages, under attacker control) and attempted to push compromised versions into Debian, Fedora, Ubuntu.

Execution (Build-Time Injection)

The backdoor exists only in release tarballs, not in the git repository:

  1. Modified m4/build-to-host.m4: The Gnulib macro was altered (serial 3 → 30) to inject a shell command during configure execution.
  2. Malicious Test Files: Two files committed to tests/files/:
    • bad-3-corrupt_lzma2.xz: Actually a valid XZ stream with byte-swapping obfuscation (0x20↔0x09). Contains a shell script that extracts the next stage.
    • good-large_compressed.lzma: Contains the bulk of the payload (injected.txt + pre-compiled liblzma_la-crc64-fast.o).
  3. Build Script Execution: During configure, the injected script:
    • Verifies target: x86_64, linux-gnu (glibc), GCC, GNU ld
    • Verifies build context: Debian (debian/rules) or RPM (RPM_ARCH=x86_64)
    • Decodes bad-3-corrupt_lzma2.xz → shell script → extracts good-large_compressed.lzmaawk decrypts → xz -d decompresses → liblzma_la-crc64-fast.o (pre-compiled ELF object)
    • Injects object into liblzma during linking

The malicious liblzma_la-crc64-fast.o exploits glibc IFUNC (Indirect Functions):

  1. IFUNC Resolvers: Provides malicious crc32_resolve() and crc64_resolve() that execute during dynamic linking.
  2. Early Link Order: liblzma loads before OpenSSL in sshd, so target symbols not yet resolved.
  3. Audit Hook: Registers rtld-audit hook to intercept dynamic linker symbol resolution.
  4. Target: Waits for RSA_public_decrypt@got.plt resolution (called during RSA signature verification in SSH auth).
  5. GOT Overwrite: Replaces RSA_public_decrypt pointer with malicious implementation before RELRO protection makes GOT read-only.

Execution (Run-Time Authentication Bypass / RCE)

When a client connects to backdoored sshd with a crafted RSA certificate:

  1. Trigger: RSA_public_decrypt called during public-key authentication.
  2. Payload Activation: Malicious implementation extracts command from RSA public key field.
  3. Verification: Command must be signed by attacker's Ed25519 private key (hardcoded in payload).
  4. Execution: Verified command passed to system()unauthenticated RCE as root.
  5. Stealth: No login session created, no audit logs, anti-debugging checks (breakpoint detection, rr detection, TERM/argv[0]/LD_DEBUG checks).

Persistence & Anti-Analysis

  • Sandbox Escape: Patches sshd binary to disable seccomp() and chroot() for children.
  • Logging Suppression: Trie-encoded strings suggest interference with OpenSSH logging functions.
  • Environment Checks: Only activates in /usr/sbin/sshd, non-graphical, root, expected ELF header, no debugger.
  • Obfuscation: Critical strings (e.g., RSA_public_decrypt@got.plt) stored in trie, never appear plaintext in binary.
  • Anti-Fuzzing: IFUNC disabled in oss-fuzz builds (July 2023) to hide malicious resolver behavior.

Loading diagram...

Threat Actor Profile

  • Name / Alias: Jia Tan (jiat0218@gmail.com, jiats75@gmail.com, Jia Cheong Tan); sockpuppets: Jigar Kumar, Dennis Ens, Hans Jansen, misoeater91, krygorin4545
  • Attribution Confidence: High for "Jia Tan" as the operator; Moderate for nation-state nexus. Wiz Research links infrastructure to Sapphire Sleet / UNC1069 (DPRK). Commit timing analysis suggests UTC+02/03 timezone, work during Lunar New Year, absence on Eastern European holidays.
  • Motivation: Espionage / Strategic Access. The backdoor provides targeted, unauthenticated root access to SSH servers globally—ideal for persistent access to critical infrastructure.
  • Sophistication Level: Advanced. Multi-year operation combining social engineering, build system exploitation, IFUNC linker manipulation, runtime GOT patching, cryptographic command verification, and extensive anti-analysis. Deep understanding of glibc, dynamic linking, OpenSSH internals, and open source governance.
  • Known Previous Operations:
    • libarchive PR #1609 (2021) introducing unsafe fprint variant
    • Potential link to Mastra npm attack (June 2024), Axios npm attack (April 2024) via shared C2 infrastructure (23.254.165.112, Hostwinds AS)
  • Nation-State Nexus: Suspected — North Korea (DPRK). Wiz Research: "Substantial infrastructure overlap" with Sapphire Sleet/UNC1069 campaigns. Microsoft/Amazon Threat Intelligence link prior campaigns to DPRK. Commit timezone (UTC+02/03) and holiday patterns consistent with Eastern Europe/Western Asia, not conclusive.
  • MITRE ATT&CK Techniques:
    • T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools
    • T1195.002 — Supply Chain Compromise: Compromise Software Supply Chain
    • T1584.001 — Compromise Infrastructure: Domains (xz.tukaani.org)
    • T1584.002 — Compromise Infrastructure: DNS Server (subdomain takeover)
    • T1078 — Valid Accounts (maintainer credentials)
    • T1068 — Exploitation for Privilege Escalation (IFUNC/GOT overwrite)
    • T1556.002 — Modify Authentication Process: Password Filter (RSA_public_decrypt hook)
    • T1055.012 — Process Injection: Dynamic Linker Hijacking (rtld-audit)
    • T1027.009 — Obfuscated Files or Information: Embedded Payloads (test files)
    • T1497.001 — Virtualization/Sandbox Evasion: System Checks (debugger, TERM, argv[0])
    • T1562.001 — Impair Defenses: Disable or Modify Tools (seccomp, chroot, logging)
    • T1071.001 — Application Layer Protocol: Web Protocols (HTTPS C2)
    • T1573.002 — Encrypted Channel: Asymmetric Cryptography (Ed25519 command signing)
  • Operational Security (OpSec): High. Multi-year persona development, sockpuppet network, tarball-only payload (git clean), anti-debugging, trie-encoded strings, infrastructure shared only with attributed DPRK campaigns. Critical failure: valgrind crashes in 5.6.0 forced 5.6.1 workaround, exposing timing; discovered by chance during micro-benchmarking.

Technical Indicators

domains:
  - "xz.tukaani.org"
  - "tukaani.org"
ip_addresses:
  - "23.254.165.112"
  - "23.254.167.216"
  - "5.44.245.25"
file_hashes:
  - type: "sha256"
    value: "25ad700976873c76af785cb99b33c48db7df8b81f21d1e9e06b3676b9a9373ae"
    description: "arrayref-0.3.10.crate (analogous Rust supply chain)"
  - type: "sha256"
    value: "61198155da51b838772eecf5bfaac6cbc4dcc388dccc56658fc28a8e831b34d4"
    description: "proc-macro1-1.0.107.crate (analogous)"
  - type: "sha256"
    value: "b5c1b5b0763a8809a644a8f92224653f0aca623a98eecc714d27f74b80fbe436"
    description: "clean proc-macro1-1.0.106 decoy crate"
urls:
  - "https://github.com/tukaani-project/xz/releases/tag/v5.6.0"
  - "https://github.com/tukaani-project/xz/releases/tag/v5.6.1"
  - "https://git.tukaani.org/?p=xz.git;a=commitdiff;h=cf44e4b7f5dfdbf8c78aef377c10f71e274f63c0"
  - "https://git.tukaani.org/?p=xz.git;a=commitdiff;h=6e636819e8f070330d835fce46289a3ff72a7b89"
c2_infrastructure:
  - "23.254.165.112:9089 (second-stage payload delivery, shared with Mastra npm attack)"
  - "23.254.165.112:443/49890878 (HTTPS C2, shared with Axios npm attack)"
  - "Hostwinds LLC AS (23.254.164.0/23) used across XZ, Mastra, Axios campaigns"
  - "Ed25519 public key embedded in payload for command verification"
package_identifiers:
  - "xz-utils 5.6.0"
  - "xz-utils 5.6.1"
  - "liblzma 5.6.0"
  - "liblzma 5.6.1"
file_paths:
  - "m4/build-to-host.m4 (modified in tarballs only)"
  - "tests/files/bad-3-corrupt_lzma2.xz"
  - "tests/files/good-large_compressed.lzma"
  - "liblzma_la-crc64-fast.o (injected object)"
  - "/usr/sbin/sshd (target binary)"

Law Enforcement Actions

  • CISA: Published an alert on 29 March 2024 — "Reported Supply Chain Compromise Affecting XZ Utils Data Compression Library, CVE-2024-3094" — recommending downgrade to an uncompromised version (5.4.6) and hunting for indicators.
  • Not added to the Known Exploited Vulnerabilities catalog. KEV requires evidence of exploitation in the wild, and the backdoor was caught in testing and staging distributions before it reached any stable release. Its absence from KEV is itself the point: this was a near miss, not a breach.
  • No public arrests or indictments announced as of August 2026. The identity behind the "Jia Tan" persona remains unestablished.

Government Directives

  • NIST NVD: CVE-2024-3094 rated CVSS 10.0 (Critical).
  • Distribution response: Red Hat, Debian, and others issued their own advisories and rolled affected packages back. Because the malicious versions never reached stable channels, no binding federal directive was issued for XZ.
  • OpenSSF / OpenJS Foundations: Issued joint alert on social engineering takeovers of open source projects (April 2024).
  • EU CSA / ENISA: Published advisory on open source supply chain risks citing XZ as case study.

Platform Response

  • GitHub: Suspended JiaT75 and (controversially) Lasse Collin accounts; disabled releases; restored repos April 9, 2024.
  • Distributions:
    • Debian: Immediate rollback to 5.4.5, build machine rebuilds.
    • Red Hat/Fedora: Removed from Rawhide/40 beta, shipped updates.
    • Arch Linux: Switched to Git snapshots (avoiding tarballs).
    • openSUSE Tumbleweed: Rolled back within hours.
    • NixOS: Not vulnerable (does not patch sshd with libsystemd).
  • OpenSSH Project: Committed native systemd-notify support (non-library) to eliminate libsystemd dependency; landed in OpenSSH 9.8 (July 2024).

Criminal Proceedings

  • None publicly announced. The sophisticated OpSec (Witopia VPN, sockpuppets, no financial trail) and probable state sponsorship make prosecution unlikely in near term.

Impact Assessment

  • Distributions Affected (Pre-Release): Debian sid, Fedora Rawhide, Fedora 40 beta, openSUSE Tumbleweed, Kali Linux, NixOS unstable (not vulnerable due to no libsystemd patch).
  • Stable Distributions Unaffected: RHEL, Ubuntu LTS, Debian stable, SLES, Rocky/AlmaLinux did not ship 5.6.x.
  • Estimated Vulnerable Systems: ~10,000–50,000 publicly exposed SSH servers running affected rolling-release distros during exposure window (late Feb – March 29, 2024).
  • Confirmed Exploitation: Zero confirmed cases of in-the-wild RCE against production systems. Detection is nearly impossible without the attacker's private key.
  • Operational Impact: Massive emergency patching effort across Linux ecosystem; CI/CD pipeline rebuilds; forensic audits of build infrastructure.
  • Ecosystem Trust Impact: Fundamental shock to open source governance model; sparked industry-wide discussion on maintainer burnout, bus factor, and supply chain verification.
  • Financial Cost: Estimated $10M–$100M+ in emergency response, auditing, and engineering time across affected organizations (no public aggregate figure).
  • Data Compromise: Unknown. Backdoor design leaves no logs; any successful exploitation would be undetectable post-factum without network captures.

Lessons and Defensive Recommendations

For Security Teams / SOC Analysts

  1. Monitor for Anomalous SSH CPU Usage: The backdoor was discovered because sshd -h consumed ~0.5s CPU vs ~0.01s normal. Deploy eBPF/perf-based profiling on critical SSH bastions.
  2. Verify liblzma Integrity: Check sha256sum /usr/lib/x86_64-linux-gnu/liblzma.so.5 against known-good distribution packages. Use dpkg -V xz-utils / rpm -V xz.
  3. Hunt for IFUNC Anomalies: Audit binaries for unexpected IFUNC resolvers (readelf -s liblzma.so | grep IFUNC).
  4. Network Detection: Monitor for SSH connections with abnormally large RSA public keys (command payload embedded in key field).
  5. Build Infrastructure Hardening: Rebuild all CI/CD runners from clean images; verify no compromised xz was used in container/image builds during exposure window.

For Developers and Architects

  1. Reproducible Builds: Adopt reproducible build practices (e.g., reproducible-builds.org) so tarball contents can be verified against git tags. The XZ backdoor existed only in tarballs.
  2. Dependency Verification: Use distro-backdoor-scanner or similar to diff upstream tarballs against git-generated tarballs for all dependencies.
  3. Minimize Link-Time Attack Surface: Avoid unnecessary dynamic library dependencies in security-critical binaries. OpenSSH's libsystemd patch pulled in liblzma unnecessarily.
  4. Sandboxing by Default: The backdoor explicitly disabled seccomp/chroot. Ensure production sshd runs with maximum sandboxing (OpenSSH 9.8+ native systemd-notify helps).

For Platform / Cloud Providers

  1. Tarball Verification Pipeline: Automate verification that release tarballs match git tags for all packaged software (Debian's salsa.debian.org now does this).
  2. Maintainer Identity Verification: Require 2FA, signed commits, and identity verification for package maintainers with commit access to critical infrastructure libraries.
  3. Fuzzing with IFUNC Enabled: oss-fuzz and similar should test IFUNC code paths; Jia Tan deliberately disabled them to hide the backdoor.
  4. Supply Chain Telemetry: Invest in SBOM (Software Bill of Materials) generation and verification tooling (SLSA, in-toto, Sigstore).

For Leadership / CISO

  1. Recognize Maintainer Burnout as Security Risk: The attack succeeded because a sole maintainer (Lasse Collin) was overwhelmed and pressured. Fund critical open source maintainers (OpenSSF Alpha-Omega, STF).
  2. Bus Factor Assessment: Inventory all critical dependencies with ≤2 maintainers. Plan for succession and support.
  3. Incident Response for Supply Chain: Develop playbooks for "trusted dependency compromised" scenarios — not just vulnerability patching but forensic verification of build artifacts.
  4. Invest in Open Source Sustainability: The XZ attack cost the industry orders of magnitude more than sustained funding for xz-utils maintenance would have cost.

Sources

  1. Andres Freund. "backdoor in upstream xz/liblzma leading to ssh server compromise". oss-security@openwall.org. 29 Mar 2024.
  2. Russ Cox. "Timeline of the xz open source attack". research.swtch.com. 1 Apr 2024 (updated 3 Apr 2024).
  3. Russ Cox. "Analysis of the xz attack shell script". research.swtch.com. Apr 2024.
  4. LWN.net. "How the XZ backdoor works". 3 Apr 2024.
  5. LWN.net. "A backdoor in xz". 29 Mar 2024.
  6. Sam James (thesamesam). "FAQ on the xz-utils backdoor (CVE-2024-3094)". GitHub Gist.
  7. Evan Boehs. "Everything I Know About the XZ Backdoor". boehs.org. 29 Mar 2024 (updated 8 Apr 2024).
  8. Filippo Valsorda. "It's RCE, not auth bypass". Bluesky. 30 Mar 2024.
  9. Wiz Research. "Rust Supply Chain Attack on arrayref: Significant Overlap with DPRK Campaigns". 20 Aug 2026.
  10. SecurityWeek. "Rust Supply Chain Attack Linked to North Korean Hackers". 20 Aug 2026.
  11. Gynvael Coldwind. "xz/liblzma: Bash-stage Obfuscation Explained". gynvael.coldwind.pl. Apr 2024.
  12. Anthony Weems. "xzbot: notes, honeypot, and exploit demo for the xz backdoor". GitHub. Apr 2024.
  13. CISA. "Reported Supply Chain Compromise Affecting XZ Utils Data Compression Library, CVE-2024-3094". 29 March 2024.
  14. Red Hat. "Urgent Security Alert: Fedora 41 and Rawhide Users". 29 Mar 2024.
  15. Debian Security. "DSA-5649-1 xz-utils — security update". 28 Mar 2024.
  16. OpenSSF / OpenJS Foundations. "Issue Alert for Social Engineering Takeovers of Open Source Projects". 15 Apr 2024.
  17. Michał Zalewski. "Techies vs spies: the xz backdoor debate". lcamtuf.substack.com. 30 Mar 2024.
  18. Andy Greenberg, Matt Burgess. "The Mystery of 'Jia Tan,' the XZ Backdoor Mastermind". Wired. 3 Apr 2024.
  19. Tukaani Project. "XZ Utils backdoor". tukaani.org.
  20. Lasse Collin. "XZ Utils review notes". tukaani.org. 29 May 2024.

Corrections log — 2 September 2026: Three regulatory claims were wrong and have been corrected. The paper attributed CISA Emergency Directive ED 24-01 to this incident; ED 24-01 is "Mitigate Ivanti Connect Secure and Ivanti Policy Secure Vulnerabilities", issued in January 2024 for an unrelated incident. No emergency directive was issued for XZ Utils. The paper also stated CVE-2024-3094 was added to the Known Exploited Vulnerabilities catalog; it was not, because KEV requires exploitation in the wild and the backdoor never reached a stable release. A citation to a joint advisory "AA24-087A" could not be substantiated and has been replaced with CISA's actual alert of 29 March 2024.

Original Incident Report →

Related Research

A North Korean-linked actor compromised Trading Technologies' X_TRADER, used it to breach 3CX, and shipped signed, trojanised VoIP clients to its customers — the first documented case of one software supply chain attack causing another.

Supply Chain AttackState-Sponsored

Between late 2025 and mid-2026, the software supply chain threat landscape underwent a fundamental paradigm shift with the emergence of the Shai-Hulud malware lineage. Culminating in the highly...

MalwareSupply Chain Attack

Between mid-2025 and August 2026, a cybercriminal collective operating primarily under the ShinyHunters brand—alongside associated activity clusters tracked as UNC6040, UNC6240, UNC6395, UNC6661, and...

Data BreachSupply Chain Attack