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
-
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).
-
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). -
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.
-
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.
-
Claim: The malicious code exists only in release tarballs, not in the upstream Git repository. → Verified → The
build-to-host.m4modifications 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. -
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.
-
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.
-
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:
- 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.
- 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). - Pressure Campaign (April–June 2022): Sockpuppets flooded xz-devel mailing list demanding faster reviews and new maintainership, exploiting Collin's disclosed mental health struggles.
- Maintainership Transfer (2022-2023): Collin granted commit access, GitHub org membership, shared bug-report alias, and eventually release tagging authority.
- 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:
- Modified
m4/build-to-host.m4: The Gnulib macro was altered (serial 3 → 30) to inject a shell command duringconfigureexecution. - 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-compiledliblzma_la-crc64-fast.o).
- 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 → extractsgood-large_compressed.lzma→awkdecrypts →xz -ddecompresses →liblzma_la-crc64-fast.o(pre-compiled ELF object) - Injects object into
liblzmaduring linking
Privilege Escalation (Link-Time IFUNC Hooking)
The malicious liblzma_la-crc64-fast.o exploits glibc IFUNC (Indirect Functions):
- IFUNC Resolvers: Provides malicious
crc32_resolve()andcrc64_resolve()that execute during dynamic linking. - Early Link Order: liblzma loads before OpenSSL in sshd, so target symbols not yet resolved.
- Audit Hook: Registers
rtld-audithook to intercept dynamic linker symbol resolution. - Target: Waits for
RSA_public_decrypt@got.pltresolution (called during RSA signature verification in SSH auth). - GOT Overwrite: Replaces
RSA_public_decryptpointer 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:
- Trigger:
RSA_public_decryptcalled during public-key authentication. - Payload Activation: Malicious implementation extracts command from RSA public key field.
- Verification: Command must be signed by attacker's Ed25519 private key (hardcoded in payload).
- Execution: Verified command passed to
system()→ unauthenticated RCE as root. - 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()andchroot()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
fprintvariant - Potential link to Mastra npm attack (June 2024), Axios npm attack (April 2024) via shared C2 infrastructure (23.254.165.112, Hostwinds AS)
- libarchive PR #1609 (2021) introducing unsafe
- 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)"Legal and Regulatory Response
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
- Monitor for Anomalous SSH CPU Usage: The backdoor was discovered because
sshd -hconsumed ~0.5s CPU vs ~0.01s normal. Deploy eBPF/perf-based profiling on critical SSH bastions. - Verify liblzma Integrity: Check
sha256sum /usr/lib/x86_64-linux-gnu/liblzma.so.5against known-good distribution packages. Usedpkg -V xz-utils/rpm -V xz. - Hunt for IFUNC Anomalies: Audit binaries for unexpected IFUNC resolvers (
readelf -s liblzma.so | grep IFUNC). - Network Detection: Monitor for SSH connections with abnormally large RSA public keys (command payload embedded in key field).
- 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
- 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. - Dependency Verification: Use
distro-backdoor-scanneror similar to diff upstream tarballs against git-generated tarballs for all dependencies. - Minimize Link-Time Attack Surface: Avoid unnecessary dynamic library dependencies in security-critical binaries. OpenSSH's libsystemd patch pulled in liblzma unnecessarily.
- 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
- Tarball Verification Pipeline: Automate verification that release tarballs match git tags for all packaged software (Debian's
salsa.debian.orgnow does this). - Maintainer Identity Verification: Require 2FA, signed commits, and identity verification for package maintainers with commit access to critical infrastructure libraries.
- Fuzzing with IFUNC Enabled: oss-fuzz and similar should test IFUNC code paths; Jia Tan deliberately disabled them to hide the backdoor.
- Supply Chain Telemetry: Invest in SBOM (Software Bill of Materials) generation and verification tooling (SLSA, in-toto, Sigstore).
For Leadership / CISO
- 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).
- Bus Factor Assessment: Inventory all critical dependencies with ≤2 maintainers. Plan for succession and support.
- Incident Response for Supply Chain: Develop playbooks for "trusted dependency compromised" scenarios — not just vulnerability patching but forensic verification of build artifacts.
- 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
- Andres Freund. "backdoor in upstream xz/liblzma leading to ssh server compromise". oss-security@openwall.org. 29 Mar 2024.
- Russ Cox. "Timeline of the xz open source attack". research.swtch.com. 1 Apr 2024 (updated 3 Apr 2024).
- Russ Cox. "Analysis of the xz attack shell script". research.swtch.com. Apr 2024.
- LWN.net. "How the XZ backdoor works". 3 Apr 2024.
- LWN.net. "A backdoor in xz". 29 Mar 2024.
- Sam James (thesamesam). "FAQ on the xz-utils backdoor (CVE-2024-3094)". GitHub Gist.
- Evan Boehs. "Everything I Know About the XZ Backdoor". boehs.org. 29 Mar 2024 (updated 8 Apr 2024).
- Filippo Valsorda. "It's RCE, not auth bypass". Bluesky. 30 Mar 2024.
- Wiz Research. "Rust Supply Chain Attack on arrayref: Significant Overlap with DPRK Campaigns". 20 Aug 2026.
- SecurityWeek. "Rust Supply Chain Attack Linked to North Korean Hackers". 20 Aug 2026.
- Gynvael Coldwind. "xz/liblzma: Bash-stage Obfuscation Explained". gynvael.coldwind.pl. Apr 2024.
- Anthony Weems. "xzbot: notes, honeypot, and exploit demo for the xz backdoor". GitHub. Apr 2024.
- CISA. "Reported Supply Chain Compromise Affecting XZ Utils Data Compression Library, CVE-2024-3094". 29 March 2024.
- Red Hat. "Urgent Security Alert: Fedora 41 and Rawhide Users". 29 Mar 2024.
- Debian Security. "DSA-5649-1 xz-utils — security update". 28 Mar 2024.
- OpenSSF / OpenJS Foundations. "Issue Alert for Social Engineering Takeovers of Open Source Projects". 15 Apr 2024.
- Michał Zalewski. "Techies vs spies: the xz backdoor debate". lcamtuf.substack.com. 30 Mar 2024.
- Andy Greenberg, Matt Burgess. "The Mystery of 'Jia Tan,' the XZ Backdoor Mastermind". Wired. 3 Apr 2024.
- Tukaani Project. "XZ Utils backdoor". tukaani.org.
- 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.
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.
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...
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...