Last reviewed: Oct 22, 2026, 2:05 PM PT. We update this page when Railway or LiteLLM post new information; the newest changes are under “What changed since Oct 21”. This is not legal advice.
The October 21, 2026 attacks: how they worked and what to do
On October 21, two separate disclosures described attacks aimed at the credentials that AI applications depend on. Railway says this is part of "a series of attacks recently targeting platform companies with the aim of compromising AI inference providers." Here is what the primary sources say, which steps cost nothing, and where our kits help.
What changed since Oct 21 (updated Oct 22, 2:05 PM PT)
Railway. Per Railway's status page:
- All Railway API tokens and Project Tokens were invalidated (Oct 22, 04:39 UTC [Oct 21, 9:39 PM PT]). Railway's API is fully restored as of 17:00 UTC [10:00 AM PT], but tokens created before the incident still don't work. If a script, the Railway CLI or a CI job uses a token (for example a
RAILWAY_TOKENsecret), create a new one and delete the old one from your CI secrets. - Railway is rotating every storage bucket credential. The new credentials show up in your dashboard automatically, but a service only picks them up after a redeploy. Railway has a guide for redeploying buckets and reconnecting GitHub.
- OAuth sessions were invalidated, so you may have been signed out. Signing in again is expected.
- Builds are coming back in stages. As of 20:29 UTC Oct 22 [1:29 PM PT], builds run normally for Pro and Enterprise workspaces. Hobby builds are still being enabled, with Free and Trial after that. If you can't redeploy yet, still rotate at the issuer and revoke the old keys now. Your app may error until it redeploys, which is safer than leaving a leaked key live.
- US West redeploys. If a US West deployment failed after its build completed (around 18:42–18:49 UTC [11:42–11:49 AM PT]), Railway says to redeploy the service.
- New signups are paused (since 19:06 UTC [12:06 PM PT]) while Railway focuses on existing customers. Railway says it will publish a full incident report on its blog once the incident is resolved.
- Provider-specific guides. Railway published checks for unexpected OpenAI, Anthropic, xAI (Grok) and OpenRouter usage, Stripe, GitHub, AWS and GCP access, and for rotating Postgres, MySQL, MongoDB and Redis credentials. Work through the guide for each provider whose key lived in Railway.
LiteLLM.
- Stolen credentials have been used. Wiz Research reports that, starting about 4.5 hours after exfiltration (16:20–17:01 UTC Oct 21 [9:20–10:01 AM PT]), AWS instance-role credentials taken from CI runners and Kubernetes nodes were checked with
sts:GetCallerIdentityand thenbedrock:ListFoundationModels. Wiz says that pattern is consistent with LLMjacking, meaning stolen access used to run models on your bill. If an affected host had an AWS role, search CloudTrail for those calls from outside your infrastructure, revoke active role sessions, and turn on Bedrock invocation logging and a billing alarm. - Scale. Wiz puts downloads of 1.107.0 at about 49,000 (SOURCED: Wiz, from ClickPy data).
- LiteLLM releases are paused. LiteLLM says it is revoking or rotating every token in its organization and that its registries are locked to new releases. Stay pinned to
litellm==1.106.2(or the image by digest) until LiteLLM says releases have resumed. - A separate LiteLLM fix is due Oct 27. LiteLLM says enterprise customers already have an embargoed fix for a vulnerability with a public disclosure date of Oct 27. It also suspects the attacker reached its internet-exposed internal proxy through a recently patched vulnerability. Until then, keep any LiteLLM proxy off the public internet.
- Still paused, town hall Oct 23. In GitHub issue #47826 (15:54 UTC Oct 22 [8:54 AM PT]), a LiteLLM maintainer said the root-cause investigation is continuing, the enterprise private registry wasn't affected, hardening changes will be shared, and LiteLLM will hold a public town hall on Oct 23. As of about 1:55 PM PT Oct 22, 1.106.2 is still the newest release on PyPI and GitHub, and releases haven't been announced as resumed.
- Tracking IDs. GitHub advisory GHSA-92x9-889m-jgmw and OSV MAL-2026-2144 both list 1.107.0.
Also this week, for agent builders (separate issues with no known link to Oct 21): vLLM 0.31.0 fixes a critical remote-code issue when trust_remote_code is on. The MCP TypeScript SDK 1.32.0 / 2.3.0 fixes five HTTP server and client issues. Node.js 22.23.4 / 24.22.1 / 26.12.1 fix a Brotli decoder RCE and TLS hostname bypasses. Added Oct 22 afternoon: GitHub flagged versions of two coding-agent skill bundles on npm (agentic-awesome-skills, opencode-skills-collection) and a PyPI typosquat, aanthropic, as malware. Next.js 16.4.1 / 15.5.28 fix two critical unauthenticated RCEs. PyJWT 2.14.0 fixes token forgery through an empty-key JWK. See the Cyber Defense Desk for the free first steps.
Timeline (Oct 21, 2026; UTC, with PT in brackets)
- 10:08 [3:08 AM]: LiteLLM says a privileged developer credential was used to override branch protection on its private release workflow.
- 10:46–11:11 [3:46–4:11 AM]: the modified workflow builds from a lookalike repository,
Berri-AI/litellm, and a second developer credential satisfies the production approval gate. - 11:39–13:23 [4:39–6:23 AM]:
litellm==1.107.0is live on PyPI. - 11:46–14:20 [4:46–7:20 AM]: Docker tags
v1.107.0,latest,main-latestandmain-stablepoint to compromised images (GHCR copies were made unavailable by 13:51). - Same day: Railway discloses that an unauthorized third party may have accessed encrypted customer environment variables and, for some of them, obtained the decrypted contents. Deployments are paused while Railway investigates.
Path 1: Secrets stored on a hosting platform (Railway)
What happened. Railway detected anomalous activity in systems that store customer environment variables. Its investigation "indicates that an unauthorized third party may have accessed encrypted environment variables and, for some of them, obtained the decrypted contents." Those variables can hold API keys and database and registry credentials. Railway says impact "may be limited to a subset of users" and will email the customers it confirms were affected.
Who is affected. Anyone who stored secrets in Railway environment variables. Railway recommends that all users take action as a precaution.
Free steps first.
- Roll every environment variable stored in Railway, including API keys and private registry credentials. Rotate each key where it was issued (the model provider, Stripe, GitHub, your database), then revoke the old one. Changing the value in the panel alone leaves the old key working.
- Review provider and service logs for unusual use, especially spend on inference keys.
- Set spend limits or alerts on model-provider keys if your provider offers them.
Which kit helps. Agent Secrets Exposure & Rotation Kit: a blast-radius-ordered rotation runbook, an inventory sheet, and a checker that flags keys still unrevoked. Incident Runbooks gives you the severity levels and the kill switch for agents that send, pay or deploy. Coming soon: Inference Key Abuse & Spend Caps Kit (coming soon).
Path 2: A poisoned package release (LiteLLM 1.107.0)
What happened. LiteLLM says its release pipeline was compromised and pushed 1.107.0 to PyPI and Docker. The release contained malware that steals credentials and loads remote code. According to LiteLLM and the OSV record, the official source tag was clean. The artifacts were built from an attacker-controlled lookalike repository, and the malicious files run whenever Python starts, even if your code never imports LiteLLM. OSV lists cloud, Kubernetes, CI, registry and AI developer-tool credentials among what it collects.
Who is affected. Per LiteLLM: anyone who installed an unpinned LiteLLM through pip between 11:39 and 13:23 UTC, or ran the Docker tags above between 11:46 and 14:20 UTC. LiteLLM says its private enterprise registry was not affected.
Free steps first (summarised from LiteLLM's notice, which is the authority):
- Check with
pip show litellmand look forlitellm-1.107.0.dist-info,cook.pthandsitecustomize.py. Not finding them does not prove an environment is clean. - Don't start with
pip install, because any Python start re-runs the payload. Follow LiteLLM's cleanup order, or better, rebuild images and virtual environments from scratch pinned tolitellm==1.106.2. - From a clean machine, rotate everything the host could reach: the cloud role, every provider key in the LiteLLM proxy database plus master and virtual keys, the database password, and any secret in the environment.
- Pin packages by exact version and containers by digest rather than
latest.
Which kit helps. Agent Secrets Exposure & Rotation Kit for the rotation, Incident Runbooks for containment and the postmortem, and Agent Security Audit Kit to review what your agents' hosts can reach. Coming soon: Supply-Chain Pinning & Verification Kit (coming soon).
Path 3: Developer and CI tokens that leaked into logs
What happened. LiteLLM believes the attacker reached an internal LiteLLM deployment that was exposed to the public internet, found an unexpected account there, and obtained GitHub CLI OAuth tokens from its logs. LiteLLM says it observed situations in which an AI coding tool embedded a user's GitHub CLI token in a response body, which then appeared in logs. Three developer credentials were then used: one owner-level token to disable branch protection, one to approve production, and one to delete workflow records. LiteLLM says it is still confirming parts of this chain.
Who is affected. Any team whose AI gateway or proxy logs full request or response bodies, or whose internal tools face the internet.
Free steps first.
- Search gateway and agent logs for tokens (for example
gho_,ghp_,sk-), purge them, and turn off body logging or add redaction. - Revoke and reissue GitHub CLI and CI tokens. Prefer short-lived, narrowly scoped tokens.
- Limit organization-owner accounts, and require more than one person to change branch protection or release workflows.
- Take internal admin tools off the public internet, and review user accounts on them.
Which kit helps. MCP & Tool-Access Review Kit to audit which tokens and tools each agent holds, Agent Observability Starter and Real-Time Agent Monitoring Kit to log usefully without logging secrets, and AI Vendor Security Questionnaire for questions to ask hosts and gateway vendors. Coming soon: CI & Registry Credential Hardening Kit (coming soon).
Path 4: Third-party tools that hold OAuth grants for your accounts
This path is a precaution, not a confirmed part of either incident. Apps hosted on an affected platform may store OAuth tokens for your X, LinkedIn, GitHub or Google accounts. You can revoke an app's access from each account's own connected-apps settings, and that works even if the app itself is down. Reconnect only after the vendor confirms rotation. Coming soon: OAuth Grant Revocation Kit (coming soon).
Sources
- Railway, "Security Disclosure: Wednesday October 21st": blog.railway.com
- LiteLLM, "Oct 21, 2026 LiteLLM release v1.107.0 Compromised" (last updated 20:30 UTC Oct 21): docs.litellm.ai
- OSV, MAL-2026-2144: osv.dev
- Railway status, incident QH8L8B3E (API tokens, bucket credentials, builds): status.railway.com
- Railway, "Redeploy Buckets and Reconnect GitHub After the Credential Reset": blog.railway.com
- Wiz Research, "LiteLLM Compromised, Steals Credentials" (post-exploitation activity): wiz.io
- LiteLLM maintainer status updates, GitHub issue #47826: github.com
- GitHub advisory GHSA-92x9-889m-jgmw: github.com
Agent Field Kit sells editable templates. This page is general defensive information, not legal or security advice, and it summarises others' disclosures, which may change. Check the sources above for the latest.