Backdoor in upstream xz/liblzma leading to SSH server compromise

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • xz

    Discontinued XZ Utils [GET https://api.github.com/repos/tukaani-project/xz: 403 - Repository access blocked]

  • I think this has been in the making for almost a year. The whole ifunc infrastructure was added in June 2023 by Hans Jansen and Jia Tan. The initial patch is "authored by" Lasse Collin in the git metadata, but the code actually came from Hans Jansen: https://github.com/tukaani-project/xz/commit/ee44863ae88e377...

    > Thanks to Hans Jansen for the original patch.

    https://github.com/tukaani-project/xz/pull/53

    There were a ton of patches by these two subsequently because the ifunc code was breaking with all sorts of build options and obviously caused many problems with various sanitizers. Subsequently the configure script was modified multiple times to detect the use of sanitizers and abort the build unless either the sanitizer was disabled or the use of ifuncs was disabled. That would've masked the payload in many testing and debugging environments.

  • Thank you. If you wouldn't have explained the background, I totally would've thought that this is just an innocent typo.

    (I still think it's like... 60% a typo? don't know)

    Anyhow, other people called the CCing of JiaT75 by Lasse suspicious:

    https://news.ycombinator.com/item?id=39867593

    https://lore.kernel.org/lkml/20240320183846.19475-2-lasse.co...

    Someone pointed out the "mental health issues" and "some other things"

    https://news.ycombinator.com/item?id=39868881

    https://www.mail-archive.com/[email protected]/msg00567.h...

    Lasse is of course a Nordic name, and the whole project has a finnish name and hosting

    https://news.ycombinator.com/item?id=39866902

    If I wanted to go rogue and insert a backdoor in a project of mine, I'd probably create a new sockpuppet account and hand over management of the project to them. The above is worringly compatible with this hypothesis.

    OTOH, JiaT75 did not reuse the existing hosting provider, but rather switched the site to github.io and uploaded there old tarballs:

    https://github.com/tukaani-project/tukaani-project.github.io...

    If JiaT75 is an old-timer in the project, wouldn't they have kept using the same hosting infra?

    There are also some other grim possibilities: someone forced Lasse to hand over the project (violence or blackmailing? as farfetched as that sounds)... or maybe stole Lasse devices (and identity?) and now Lasse is incapacitated?

    Or maybe it's just some other fellow scandinavian who pretends to be chinese and got Lasse's trust.

    Is the same person sockpuppeting Hans Jansen? It's amusing (but unsurprising) that they are using both german-sounding and chinese-sounding identities.

    That said, I don't think it's unreasonable to think that Lasse genuinely trusted JiaT75, genuinely believed that the ifunc stuff was reasonable (it probably isn't: https://news.ycombinator.com/item?id=39869538 ) and handed over the project to them.

    And at the end of the day, the only thing linking JiaT75 is a swedish/finnish racist joke which could well be a typo. People already checked the timezone of the commits, but I wonder if anyone has already checked the time-of-day of those commits... does it actually match the working hours that a person genuinely living (and sleeping) in China would follow?

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • xz

    xz compression in Go (by jamespfennell)

  • That the "1Password employee since December" is a person I know IRL and worked with for years at their prior employer. They're not a no-name person or a fake identity just FYI. Please don't be witch hunting; this genuinely looks like an unfortunate case where Jared was merely proactively doing his job by trying to get an externally maintained golang bindings of XZ to the latest version of XZ. Jared's pretty fantastic to work with and is definitely the type of person to be filing PRs on external tools to get them to update dependencies. I think the timing is comically bad, but I can vouch for Jared.

    https://github.com/jamespfennell/xz/pull/2

  • libarchive

    Multi-format archive and compression library

  • The PR is pretty devious.

    JiaT75 claims is "Added the error text when printing out warning and errors in bsdtar when untaring. Previously, there were cryptic error messages" and cites this as fixing a previous issue.

    https://github.com/libarchive/libarchive/pull/1609

    However it doesn't actually do that. It literally removes a new line between 2 arguments on the first `safe_fprintf()` call, and converts the `safe_fprintf()` to unsafe direct calls to `fprintf()`. In all cases, the arguments to these functions are exactly the same! So it doesn't actually make ther error messages any different, it doesn't actually solve the issue it references. And the maintainer accepted it with no comments!

  • Vcpkg

    C++ Library Manager for Windows, Linux, and MacOS

  • 5.4.5 can be compromised

    https://github.com/microsoft/vcpkg/issues/37197

  • gentoo

    [MIRROR] Official Gentoo ebuild repository

  • The answer is not complete. There were 2 ways to pull sources:

    bad - https://github.com/tukaani-project/xz/releases/download/...

    or:

    good - https://github.com/tukaani-project/xz/archive/refs/tags/...

    Specifically in Gentoo, there is a note in https://github.com/gentoo/gentoo/blob/master/app-arch/xz-uti...

      # Remember: we cannot leverage autotools in this ebuild in order

  • copyparty

    Portable file server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no deps

  • indeed; it should be trivial in any language. Here's python: https://github.com/9001/copyparty/blob/a080759a03ef5c0a6b06c...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • oss-fuzz

    OSS-Fuzz - continuous fuzzing for open source software.

  • > because the ifunc code was breaking with all sorts of build options and obviously caused many problems with various sanitizers

    for example, https://github.com/google/oss-fuzz/pull/10667

  • wasmtime

    A fast and secure runtime for WebAssembly

  • Just a documentation change, fortunately:

    https://github.com/bytecodealliance/wasmtime/commits?author=...

    They've submitted little documentation tweaks to other projects, too, for example:

    https://learn.microsoft.com/en-us/cpp/overview/whats-new-cpp...

    I don't know whether this is a formerly-legitimate open source contributor who went rogue, or a deep-cover persona spreading innocuous-looking documentation changes around to other projects as a smokescreen.

  • libusb

    A cross-platform library to access USB devices

  • - https://github.com/libusb/libusb/issues/1468#issuecomment-19...

  • rust1

    rust1

  • Kinda relevant, as I saw few comments about how safer languages are the solution.

    Here[0] is a very simple example, that shows how easy such supply chain attacks are in Rust; and lets not forget that there was a very large python attack[1] just a few days ago.

    [0] - https://github.com/c-skills/rust1

    [1] - https://checkmarx.com/blog/over-170k-users-affected-by-attac...

  • github-explorer

    Everything You Always Wanted To Know About GitHub (But Were Afraid To Ask)

  • clickhouse has pretty good github_events dataset on their playground that folks can use to do some research - some info on the dataset https://ghe.clickhouse.tech/

    Example of what user JiaT75 did so far:

    https://play.clickhouse.com/play?user=play#U0VMRUNUICogRlJPT...

    pull requests mentioning xz, 5.6 without downgrade, cve being mentioned in the last 60 days:

    https://play.clickhouse.com/play?user=play#U0VMRUNUIGNyZWF0Z...

  • stencil-golang

    Template repository for Golang applications

  • Here's a PR on an employer-owned public Github repository where I made a change and Jared approved it. Please, let's not witch hunt.

    https://github.com/getoutreach/stencil-golang/pull/404

  • VaRA-Tool-Suite

  • I tried to understand the significance of this (parent maybe implied that they reused a completely fictitious identity generated by some test code), and I think this is benign.

    That project just includes some metadata about a bunch of sample projects, and it links directly to a mirror of the xz project itself:

    https://github.com/se-sic/VaRA-Tool-Suite/blob/982bf9b9cbf64...

    I assume it downloads the project, examines the git history, and the test then ensures that the correct author name and email addresses are recognized.

    (that said, I haven't checked the rest of the project, so I don't know if the code from xz is then subsequently built, and or if this other project could use that in an unsafe manner)

  • openconnect

  • A lot of software (including https://gitlab.com/openconnect/openconnect of which I'm a maintainer) uses libxml2, which in turn transitively links to libzma, using it to load and store compressed XML.

    I'm not *too* worried about OpenConnect given that we use `libxml2` only to read and parse uncompressed XML…

    But I am wondering if there has been any statement from libxml2 devs (they're under the GNOME umbrella) about potential risks to libxml2 and its users.

  • STest

    Unit testing framework for C/C++. Easy to use by simply dropping stest.c and stest.h into your project!

  • first commit made in one of JiaT75's other repos https://github.com/JiaT75/STest/commits/master/

  • lbzip2

    Parallel bzip2 utility

  • The website change reminds me a bit of lbzip2.org https://github.com/kjn/lbzip2/issues/26#issuecomment-1582645... Although, at the moment, it only seems to be spam. The last commit was 6 years ago, so I guess that's better than a maintainer change...

  • zstrong

  • Looking forward to the time when Meta will make https://github.com/facebookincubator/zstrong.git public

    found it mentioned in https://github.com/facebook/proxygen/blob/main/build/fbcode_..., looks like it's going to be cousin of zstd, but maybe for the stronger compression use cases

  • Proxygen

    A collection of C++ HTTP libraries including an easy to use HTTP server.

  • Looking forward to the time when Meta will make https://github.com/facebookincubator/zstrong.git public

    found it mentioned in https://github.com/facebook/proxygen/blob/main/build/fbcode_..., looks like it's going to be cousin of zstd, but maybe for the stronger compression use cases

  • Pack

    Pack (by PackOrganization)

  • The `pack`[0] compression utility that reached the HN front page the other day[1] is setting off my alarm bells right now. (It was at the time too, but now doubly so)

    It's written in Pascal, and the only (semi-)documented way to build it yourself is to use a graphical IDE, and pull in pre-compiled library binaries (stored in the git repo of a dependency which afaict Pack is the only dependent of - appears to be maintained by the same pseudonymous author but from a different account).

    I've opened an issue[2] outlining my concerns. I'm certainly not accusing them of having backdoored binaries, but if I was setting up a project to be deliberately backdoorable, it'd look a lot like this.

    [0] https://pack.ac/

    [1] https://news.ycombinator.com/item?id=39793805

    [2] https://github.com/PackOrganization/Pack/issues/10

  • zstd

    Zstandard - Fast real-time compression algorithm (by JiaT75)

  • Jia Tan "cleaned up" in all their ZSTD branches some hours ago, probably hiding something https://github.com/JiaT75/zstd/branches/all

  • xz-backdoor-github

    History of commits related to the xz backdoor Discovered On March 29, 2024: CVE-2024-3094.

  • I uploaded all GitHub Events from the two suspected users and from their shared project repo as easy to consume CSV files:

    https://github.com/emirkmo/xz-backdoor-github

    For those who want to see the GitHub events (commits, comments, pull_requets, diffs, etc.)

  • Folly

    An open-source C++ library developed and used at Facebook.

  • https://github.com/facebook/folly/pull/2153

  • systemd

    The systemd System and Service Manager

  • It is 10 and more years that I experience such ad-hominem attacks.

    You are so quickly labeling an identifiable professional as troll, while hiding behind your throwaway identity, that I am confident readers will be able to discern.

    Meanwhile let us be precise and add more facts https://github.com/systemd/systemd/pull/31550

    Our community is swamped by people like you, so I will refrain from answering further provocations, believing I have provided enough details to back my assertion.

  • homebrew-core

    🍻 Default formulae for the missing package manager for macOS (or Linux)

  • > Correct. Though we do not appear to be affected, this revert was done out of an abundance of caution.

    [1] https://github.com/Homebrew/homebrew-core/pull/167512

  • CPython

    The Python programming language

  • Python for Windows bundles liblzma from this project, but it appears to be version 5.2.5 [0] vendored into the Python project's repo on 2022-04-18 [1], so that should be fine, right?

    [0] https://github.com/python/cpython/blob/main/PCbuild/get_exte...

    [1] https://github.com/python/cpython-source-deps/tree/xz

  • cpython-source-deps

    Source for packages that the cpython build process depends on

  • Python for Windows bundles liblzma from this project, but it appears to be version 5.2.5 [0] vendored into the Python project's repo on 2022-04-18 [1], so that should be fine, right?

    [0] https://github.com/python/cpython/blob/main/PCbuild/get_exte...

    [1] https://github.com/python/cpython-source-deps/tree/xz

  • aseprite

    Animated sprite editor & pixel art tool (Windows, macOS, Linux)

  • CVE-request-XZ-5.2.5-has-denial-of-service-vulnerability

    XZ 5.2.5 mishandles read the designed payload, leading to denial of service (resource consumption)

  • I found a user who seems suspicious to me.

    https://github.com/snappyJack/CVE-request-XZ-5.2.5-has-denia...

    He understood the software architecture quite early on while working on the following repository. He connected the dots from his other projects and went rogue. (probably to benefit from crypto?). Take a look at his other repositories and code style and recent likes on github. Is he our Jia Tan?

  • I found a user who seems suspicious to me.

    https://github.com/snappyJack/CVE-request-XZ-5.2.5-has-denia...

    He understood the software architecture quite early on while working on the following repository. He connected the dots from his other projects and went rogue. (probably to benefit from crypto?). Take a look at his other repositories and code style and recent likes on github. Is he our Jia Tan?

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts