Learn/supply-chainlitellmrustsecurity

The LiteLLM Supply Chain Attack, and the Package We Do Not Ship

The LiteLLM supply chain attack published a bad 1.107.0 that steals credentials and opens a backdoor. This site does not install it. A stolen token can still publish code.

Signed by M·
Dusk brick yard where a sealed crate on a desk stays dark, a bright orb sits on a small plate, and golden threads run up to two rooftop posts
Does the LiteLLM supply chain attack affect dldeploy.com?

The bad release does not run here. LiteLLM 1.107.0 was a malicious publish through stolen GitHub tokens, and it collected credentials and opened a backdoor on machines that installed it. This site ships prerendered files. It does not install that package, and a stolen maintainer token remains a real risk for any project that publishes from GitHub.

The LiteLLM supply chain attack is the October 21, 2026 publish of LiteLLM 1.107.0 with a credential stealer and a backdoor inside it. SafeDep, Socket, StepSecurity, and Upwind reported it. PyPI quarantined the package. The malicious Docker images were taken down. The release was not a typo in a dependency file. It was the project's own release workflow, driven by stolen tokens. This page says how that happened, why a remake in Rust does not by itself stop a stolen token, and what dldeploy.com and the MATA home computer actually refuse to run.

The write-up this page is following is The Hacker News account, which quotes LiteLLM's security director. The index that quarantined the package is PyPI. The language of the crates this house ships is Rust. Those crates are the work at Remade With Rust.

How the LiteLLM supply chain attack was published

Oliver Jensen, LiteLLM's director of security, said the malicious actions went through three engineers' GitHub accounts, appearing to be stolen GitHub CLI tokens. One account triggered the project releaser. Another approved it. The tokens involved were revoked. The project has not yet found how the tokens were acquired, so it would not claim the accounts were clean. As a temporary step it removed every user but one unaffected account from the GitHub organization, and it cut trusted links from public registries back to that organization so a further publish would not go out the same door.

What the bad release did

The LiteLLM supply chain attack landed in 1.107.0 wheels and in Docker images. A source tarball was also tampered. The payloads, as the researchers described them, collect cloud credentials, private keys, and authentication material for developer tools, and a second payload stays running and fetches further code. Python launches that code when the interpreter starts, before the application imports LiteLLM. The same shape showed up in a LiteLLM compromise in March. People who installed 1.107.0 were told to revoke and replace exposed credentials from a clean machine, and to pin 1.106.2 by digest. This page does not repeat the file names or the addresses the payloads used.

What is still unknown

The LiteLLM supply chain attack is not finished as an investigation. The LiteLLM supply chain attack still lacks an explanation for the token theft. The theft of the tokens is unexplained. A revoked token stops the next use of that token. It does not tell you what the token already did, and it does not tell you whether some other credential left the building. That is why the vendor's advice is to rotate from a machine that never installed the release, not from the machine that did.

What this site does not install

dldeploy.com does not depend on LiteLLM. The pages are built by a Rust program and served as files. A reader of the Learn index does not pip-install a gateway, and does not start a Python interpreter, in order to read a paragraph. The LiteLLM supply chain attack harms the machine that installed the package. It does not ride along with a static page.

A package that runs before you call it

The painful part of the LiteLLM supply chain attack is that installation is enough. The payload runs because the interpreter starts, not because the application meant to call LiteLLM. A site that hands visitors a wheel, or a container they run, inherits that risk. This site hands visitors HTML. The flash tool for a board is espino, a Rust program the household runs on purpose, not a hidden import inside a web page. That is a smaller surface. It is not a claim that no tool on a developer's laptop could ever be malicious.

Rust does not bless a token

Remade With Rust publishes Rust crates. Crates.io and GitHub can be driven by a stolen maintainer token the same way PyPI was. The LiteLLM supply chain attack is a reminder of that, not a reason to sneer at Python. What changed for a visitor of this site is the artifact: a page, not a library that executes on install. What changed for a device is a signature check, below. A token that can push to the GitHub organization is still something to keep off laptops and out of long-lived shells.

The gate on a device is a signature

A Janus update is not accepted because a package index said it was current. rusty_esp_mid checks the owner, the device's update capability, a trusted maker, the chip, the model, the size, and the maker's signature before it reads a byte of the image. A maker-signed update has run on silicon. A bad signature is refused in host tests. Rollback refusal is in that same host testing, not yet a second silicon measurement. The identity itself is a did:mata minted on the board.

The home computer is not a model gateway

The MATA home computer, on MATA, lists a device the household adopted. It is not a LiteLLM proxy sitting in front of a hosted model, and it does not install Python packages to answer the LAN. The seam is the one in the MATA Home integration. Sign-in for this website is a wallet signature, sign in with MATA, checked on the server. Neither path imports LiteLLM.

What this page will not promise

The LiteLLM supply chain attack succeeded because release authority and a self-executing package were the same object. This house splits those for the site and for the board: the site does not run the package, and the board does not take an unsigned image. That split does not mean a stolen GitHub token is harmless, and it does not mean development firmware has the device key in a hardware vault. Current development firmware can still keep that key in a plaintext partition. The protection that matches the October 21 release is the boring one. We do not ship LiteLLM 1.107.0, and a page on this origin does not execute it.

FAQ

Quick answers for builders evaluating this technology.

Which LiteLLM release was malicious?

LiteLLM 1.107.0, as wheels on PyPI and as Docker images. PyPI quarantined the package. The malicious images were removed. The vendor's advice to people who installed it is to revoke credentials from a clean machine and pin 1.106.2 by digest.

How did the LiteLLM supply chain attack get published?

LiteLLM's security director said three engineers' GitHub accounts were used, by way of stolen GitHub CLI tokens. One account triggered the release workflow. Another approved it. The tokens were revoked. How the tokens were taken is still unknown.

Does a visitor to this site run Python from a Learn page?

No. A Learn page is HTML written at build time. Nothing in that response imports a Python package, starts a background task, or reads the visitor's cloud keys.

Can a stolen maintainer token still publish a Rust crate?

Yes. Rust does not make a GitHub token harder to steal. The protection on this site is that visitors do not install a package from us in order to read the page. A project that publishes crates still has to treat maintainer tokens as the crown jewels.

Are Janus firmware updates signed?

The update path checks the owner, the device, a trusted maker, the chip, the model, the size, and the maker's signature before it reads the image. A maker-signed update has run on silicon. Refusal of a bad signature is tested on the host so far, not as a second silicon run.