Railway Security Incident Oct 21: What Happened, What to Do

Railway said an unauthorized party may have accessed environment variables on Oct 21, 2026. What happened, who is affected and exactly what to rotate.

By Danyal Ahmed - Data Scientist · · 7 min read

On October 21, 2026, Railway disclosed that it had detected anomalous activity involving systems that store customer environment variables, and that an unauthorized third party may have accessed encrypted environment variables and, for some of them, obtained the decrypted contents. Railway recommends that all users immediately roll every environment variable stored in Railway, including API keys and private registry credentials, and review logs for unusual activity. If you run anything on Railway, assume your stored secrets are at risk and rotate them now.

This is an independent summary of Railway's own statements, its status page and published guidance. It is not affiliated with Railway, and the situation is still developing. Last updated: October 22, 2026, using Railway's status page as of 11:01 UTC. Always check Railway's official channels for the latest.

Key takeaways

  • What Railway said: an unauthorized third party "may have accessed" encrypted environment variables and, for some, obtained the decrypted contents [1].
  • What could be inside: environment variables can hold API keys, database credentials and registry credentials [1].
  • Who is affected: Railway's initial analysis suggests the impact may be limited to a subset of users, but it recommends everyone act as a precaution [1].
  • What to do: rotate every secret stored in Railway, review logs, and follow Railway's published guides for your cloud and database providers [1][2].
  • What is still unknown: Railway has not published how many accounts were affected, how access was gained or who was responsible, according to coverage we reviewed.

What Railway has disclosed

Railway's post, "Security Disclosure: Wednesday October 21st," says [1]:

  • "Earlier this morning, Railway detected anomalous activity involving systems that store customer environment variables."
  • An unauthorized third party "may have accessed encrypted environment variables and, for some of them, obtained the decrypted contents."
  • "Environment variables may contain secrets such as API keys or database and registry credentials."
  • "We believe this is part of a series of attacks recently targeting platform companies with the aim of compromising AI inference providers."
  • "All deployments are paused while we investigate," and Railway notified upstream providers to revoke keys proactively.
  • Affected customers will be contacted by email as the scope is confirmed.

Railway's disclosure does not mention databases, source code, payment data or a count of affected accounts. We did not find those details elsewhere, so treat them as unknown, not as safe.

Timeline

All times are UTC and come from Railway's incident page [2].

Time Update
Oct 21, 07:24 Railway begins investigating an issue
Oct 21, 09:28 Issue identified, fix in progress
Oct 21, 11:33 API back up, some features unavailable
Oct 21, 19:15 Plan to re-enable builds in stages: Enterprise, then Pro, Hobby, Free and Trial
Oct 21, 20:19 OAuth sessions invalidated as part of mitigation, so some users are signed out
Oct 21, 21:59 Railway strongly recommends revoking all environment variables stored in Railway
Oct 21, 22:10 Railway begins rotating all Railway bucket credentials
Oct 22, 01:22 Railway publishes guides for recommended next steps
Oct 22, 03:32 Builds available for Enterprise workspaces
Oct 22, 04:17 All Railway API tokens invalidated
Oct 22, 06:29 Builds available for Pro and Enterprise workspaces
Oct 22, 11:01 Status "Identified"; Hobby next, then Free and Trial; queued deployments starting

Who is affected?

Railway says the impact may be limited to a subset of users, but asks every user to act [1]. Practical reading: if you stored any secret in Railway variables, treat it as exposed until you have rotated it and checked logs.

What about sealed variables?

Railway describes sealed variables as unreadable through the UI, API or CLI. Its disclosure does not say whether they were in scope, so GitGuardian's advice is to rotate them too [3]. That is also the safe course.

What to do now: a step-by-step checklist

These steps combine Railway's instructions [1][2] with GitGuardian's guidance [3]. Do them in this order.

Step 1: List every secret stored in Railway. Go through each project, environment, service and shared variable. Note what each secret unlocks.

Step 2: Rotate at the source first. GitGuardian advises rotating credentials at the upstream provider (AWS, GCP, GitHub, an AI provider) before updating the value in Railway [3]. Create the new credential, then deactivate the old one.

Step 3: Prioritise by blast radius. Start with whatever could cost money or expose data fastest:

  1. Cloud provider keys (AWS, Google Cloud).
  2. Database credentials (PostgreSQL, MongoDB, Redis, MySQL).
  3. AI provider keys (for example OpenRouter, Grok, Anthropic, OpenAI), since stolen keys can run up charges.
  4. Payment keys (Stripe).
  5. GitHub tokens and private registry credentials.
  6. Everything else, including signing keys and webhook secrets.

Step 4: Update Railway and redeploy. Edit the variables, deploy the staged change and confirm the logs show successful calls to each provider.

Step 5: Review for misuse. Check each provider's audit logs and usage pages for activity you do not recognise. For AWS see how to check for anomalous AWS access, and for Google Cloud see how to check for anomalous GCP access.

Step 6: Create new Railway API tokens. Railway invalidated all API tokens, so make new ones to keep using the public API [2].

Step 7: Know what Railway already did. Railway rotated bucket credentials, and the new ones appear in your dashboard automatically. Audit logs may show credentials revoked by a Railway employee, which Railway describes as expected [2].

Step 8: Scan for leftover secrets. GitGuardian suggests dumping each service's variables to a local file and scanning it with its ggshield tool to get a prioritised list of what to rotate, then deleting the dump, since it contains plaintext values [3].

Step 9: Watch your email. Railway says it will contact confirmed-affected customers directly [1]. Be wary of phishing that imitates these emails, and only act on instructions from Railway's real domains.

Step 10: Write it down. Record what you rotated, when and why. It helps if a provider asks questions later.

Redeploying while builds are recovering

From Railway's status page [2]:

  • Builds are being restored in stages, with Hobby and then Free and Trial still pending as of the last update we read.
  • Deployments may be slow, and some builds were failing more often than usual.
  • If Redeploy is unavailable, Railway's workaround was to open your service, press Ctrl or Cmd+K and choose "Deploy Latest Commit."
  • Do not trigger the same deployment repeatedly, since that adds to the queue.
  • Some guide steps need a redeploy, including redeploying buckets and reconnecting GitHub.

What this teaches about secrets management

Whatever happens next at Railway, incidents like this are a reminder to limit what a leaked variable can do:

  • Least privilege. Give each key only the permissions one service needs.
  • Separate keys per environment and per service, so one leak does not unlock everything.
  • Short-lived credentials where the provider supports them.
  • Spending limits and billing alerts on cloud and AI accounts, since stolen keys are often used to run up usage. See LLM cost optimization.
  • Rotation as a routine, not an emergency. Practise it before you need it.
  • Secret scanning in your repositories and deployments.
  • Audit logging turned on before an incident, because you cannot investigate logs you never kept. See observability: logs, metrics and traces.
  • An incident plan. See incident management and postmortems.

For how credentials are protected in general, read symmetric vs asymmetric encryption, encryption vs hashing and authentication vs authorization.

Other security disclosures on October 21, 2026

The same day, other disclosures made news, including two critical PHP remote code execution flaws (CVE-2026-109618 and CVE-2026-109619, nicknamed PHP2Shell) patched in an out-of-band PHP release [4]. We found no source linking them to Railway's incident, so treat them as separate. If you run PHP, check the PHP Foundation's release notes and patch.

Want help hardening your deployment?

We review secrets handling, deployment pipelines and infrastructure for startups and agencies, and help set up rotation and monitoring. Get a scope estimate for a security and deployment review, or see our guides to CI/CD pipelines and zero-downtime deployments.

FAQ

What happened in the Railway security incident?

On October 21, 2026, Railway said it detected anomalous activity involving systems that store customer environment variables, and that an unauthorized third party may have accessed encrypted variables and, for some, obtained decrypted contents.

Do I need to rotate my secrets?

Railway recommends that all users immediately roll every environment variable stored in Railway, including API keys and private registry credentials, and review logs for unusual activity.

Were my databases or source code accessed?

Railway's disclosure does not say. It warns that variables may contain database credentials, so rotate those. Do not assume safety from the absence of information.

Are sealed variables safe?

Railway describes them as unreadable through the UI, API and CLI, but its disclosure does not say whether they were in scope. GitGuardian recommends rotating them too.

Is Railway back online?

Railway paused builds and restored them in stages. As of its status page at 11:01 UTC on October 22, builds were available for Pro and Enterprise, with Hobby next, then Free and Trial. Check status.railway.com for the current state.

Why am I signed out of Railway?

Railway said it invalidated OAuth sessions as part of its mitigation, so some users need to log in again. It also invalidated all API tokens, so create new ones.

Who is behind the attack?

Railway has not named anyone. It says it believes the incident is part of a series of attacks targeting platform companies, with the aim of compromising AI inference providers.

Should I stop using Railway?

That is your decision. Rotate your secrets, follow Railway's guidance and watch for its full post-incident report before deciding.

References

  1. Railway Blog, Jacob Cooper. "Security Disclosure: Wednesday October 21st." 21 October 2026. blog.railway.com/p/security-disclosure-wednesday-october-21st
  2. Railway Status. Incident QH8L8B3E. status.railway.com/incident/QH8L8B3E
  3. GitGuardian. "New Railway Incident: Treat Every Env Variable as Exposed." October 2026. blog.gitguardian.com/railway-october-2026-incident-environment-variables
  4. Sansec. "PHP2Shell: Critical PHP RCE (CVE-2026-109618, CVE-2026-109619)." sansec.io/research/php2shell

Disclaimer: this is an independent, unofficial summary of public statements, written to help affected users. Qyvera is not affiliated with Railway. Details are changing, so rely on Railway's official channels, and treat this as general information, not legal or professional security advice.