Sabline 8.7.1

The xz backdoor, replayed in Sabline

The xz-utils backdoor, CVE-2024-3094, 2024-03-29. Also called Jia Tan, CVE-2024-3094, the xz utils backdoor. (The name in use.) Verdict: NOT COVERED - nothing in Sabline addresses this shape.

Note

This is the shape of the attack, not a claim that Sabline would have prevented the real event. The real one happened in a language, a package manager, a build system or an agent framework that Sabline neither runs nor bounds. What this page shows is narrower and checkable: the same shape written in Sabline, the command, what the runtime printed, and the one line of budget that did the work - or, where nothing here addresses the shape, that.

What happened #

On 29 March 2024 Andres Freund posted to the oss-security list: "After observing a few odd symptoms around liblzma (part of the xz package) on Debian sid installations over the last weeks (logins with ssh taking a lot of CPU, valgrind errors) I figured out the answer: The upstream xz repository and the xz tarballs have been backdoored." Versions 5.6.0 and 5.6.1 carried it. It activated during a Debian or RPM package build on x86-64 Linux with gcc and the GNU linker, and interfered with sshd along liblzma's dependency chain: openssh does not use liblzma itself, but Debian and several other distributions patch it to link libsystemd, which depends on liblzma. It redirected sshd's RSA_public_decrypt to its own code, so that public-key authentication could be subverted.

The shape, in Sabline #

Code was added to an artefact during the build that produced it, and the artefact was native. Nothing Sabline has addresses that shape. A budget bounds what a running Sabline program may do; it is not a check on how a binary was produced, and a compiled extension has, as THREAT_MODEL.md puts it, "no source to read and whose behaviour a budget does not constrain any more than it constrains Python".

This is the entry to read if you want the limit stated at its widest. Sabline is itself a Python package built by a pipeline, signed, and published to PyPI and npm; an attack of exactly this shape against that pipeline would not be caught by anything in this repository, and PROVENANCE.md's attestations would attest to the backdoored bytes as faithfully as to any others. sabline audit's ffi_native field reports where a granted module ships a compiled extension, and it is deliberately never allowed to say false.

What this does not cover #

All of it. Sabline bounds what a Sabline program does at run time and has nothing to say about how any artefact - including its own - was built.

Sources #

The entry, its program and its recorded run are in incidents/xz-utils-backdoor/. Every incident, with its verdict, is in the catalogue.