Skip to content
Ferroscope
Menu

07Supply chain

You do not have to click
anything to be compromised.

Four of the twenty-seven incidents arrived through a trusted channel: an updater, a registry, a workflow, a hosting console. This page is the developer-specific cut of the dataset.

9 incidents6 critical8 actions
3.4MDaily installsLiteLLM's reach
321kAccountsZeabur breach
26,739ServersOnamae payload
0Clicks neededTrusted channel

The chain

01

Update channel

A signed binary is only as trustworthy as the pipeline that signed it. AOMEI, OVHcloud, and the WordPress plugin vendor all shipped malicious code through legitimate mechanisms.

02

Package registry

LiteLLM was downloaded 3.4 million times a day. Install scripts run with your privileges, and an imported wheel can read every key the process can see.

03

CI workflow

GitHub Actions holds deployment tokens. A workflow pinned to a tag can be moved by anyone who controls that tag. Pin to a commit SHA.

04

Control plane

Railway, Zeabur, Onamae, and TiDB Cloud sit above your servers. Whoever owns the control plane can push code to every host beneath it.

Incidents on this surface

The audit order

  1. 01

    Install every pending Windows update

    Windows Update is also the delivery path for root-certificate distrust. Skipping it leaves compromised CAs trusted system-wide.

    15 min · 55% of the surface

  2. 02

    Audit GitHub Actions across your repos

    A malicious workflow can read every secret the repository can see. Pin third-party actions to commit SHAs and review anything with write tokens.

    30 min · 60% of the surface

  3. 03

    Rotate CI and hosting secrets

    If a platform that held your secrets was breached, rotation is the only remediation. Deleting the old value is not enough if it is still valid elsewhere.

    20 min · 70% of the surface

  4. 04

    Remove the poisoned LiteLLM release

    If the malicious build ever ran, assume every key in that process is stolen. Uninstalling is step one; rotation is step two.

    8 min · 90% of the surface

  5. 05

    Verify signatures before installing

    A valid signature only proves who signed the file, not that their build pipeline was honest. Check the publisher and the hash together.

    5 min · 35% of the surface

  6. 06

    Patch self-managed GitLab

    CVE-2026-110264 is unauthenticated RCE. GitLab.com is already patched; only self-managed instances need action.

    25 min · 95% of the surface

  7. 07

    Patch NGINX and cap HTTP/3

    Three memory-safety fixes plus a single-connection crash make this a one-afternoon job for anyone terminating traffic.

    20 min · 90% of the surface

  8. 08

    Audit or retire PHP endpoints

    PHP2Shell is only exploitable where PHP parses requests. If you do not need PHP, removing it is faster and safer than patching it.

    20 min · 95% of the surface