
Railway's October 21 incident pulled customer environment variables in encrypted form and decrypted a subset; here is what was taken, which credentials Railway already reset, and the order to rotate the rest.
| Question | Answer | What to do, and when |
|---|---|---|
| Do I need to act? | Railway asks everyone who signed up before October 21 to rotate the keys they stored there. 2 | Start today, with AI and cloud keys. |
| Was my workspace one of the 1.85%? | Railway knows which workspaces it rates high risk. Which keys were read inside one, it cannot say. 2 | Treat the answer as unknowable and rotate anyway. |
| What did Railway already reset? | Railway sessions and tokens, your GitHub connection, the ghcr.io tokens it held, and every bucket's S3 keys. 3 | Reconnect GitHub, then redeploy what reads those credentials. |
| What is left to me? | Everything else in your variables: AI provider keys, cloud keys, Stripe keys, database passwords, personal access tokens. 2 | Follow the rotation order below. |
| Why is my deploy failing? | Commits pushed during the pause were dropped, and CI tokens were revoked. 4 | Reconnect GitHub, then reissue RAILWAY_TOKEN or RAILWAY_API_TOKEN. |
| Should I move off Railway? | The final forensic report is still to come, and build isolation has moved to single-tenant machines. 2 | Decide when that report lands, against the three tests at the end. |
| Time (UTC) | What Railway recorded |
|---|---|
| Oct 20, 13:58 | Monitoring pages on-call for elevated latency; a targeted campaign is underway. 2 |
| Oct 20, 16:51–18:05 | Privilege escalation found in the build infrastructure; builds halted and mitigations deployed. 2 |
| Oct 20, 19:53 | Evidence that the attacker can escalate at higher scale, in parallel. 2 |
| Oct 21, 04:24 | Forensics show secrets pulled in encrypted form, not yet decrypted by the attacker. 2 |
| Oct 21, 05:23–07:25 | Access to the identified systems revoked; the attacker reaches CI credentials and decrypts artifacts holding more API access. 2 |
| Oct 21, 07:25–09:18 | Database evidence of a query against encrypted environment variables; a subset decrypted. 2 |
| Oct 21, 09:25 | Railway gives vendors the potentially exposed keys and asks for them to be revoked. 2 |
| Oct 21, 20:19 | Sessions and tokens invalidated; the public disclosure goes out. 2 |
| Oct 22, 03:32 | Railway confirms the attacker is out of every internal system. 2 |
| Oct 22, 22:49 | API restoration complete; deployments normal on all five plans. 2 |
| Credential | Reset by Railway | What you still have to do |
|---|---|---|
| Dashboard sessions, Railway tokens | Revoked across all accounts. 2 | Sign in again; reissue project and account tokens for CI. |
| GitHub connection and stored GitHub tokens | Invalidated for your account and services. 3 | Reconnect GitHub, then revoke the old personal access tokens on GitHub itself. |
ghcr.io registry tokens on services | Removed from Railway; still valid on GitHub. 3 | Delete the token on GitHub, issue one with read:packages, paste it into Registry Credentials, redeploy. |
| Storage bucket S3 keys | Regenerated for every bucket in every environment. 3 | Redeploy each service that reads them; the bucket name, endpoint and objects are unchanged. |
| Everything else in your variables | Untouched. 2 | Rotate at the vendor, update the variable, redeploy. |
RunInstances, CreateUser, CreateAccessKey, AttachUserPolicy, CreateRole and PutBucketPolicy. 7gcloud iam service-accounts keys disable. The console cannot disable a key. 8POSTGRES_PASSWORD, which PGPASSWORD, DATABASE_URL and DATABASE_PUBLIC_URL reference. 10 The database restarts to apply it, which drops every open session, including an attacker's. 10 Then redeploy every dependent service, because containers read variables only at startup. 10 A SELECT against pg_stat_activity shows any session that reconnected with the new password and does not belong to you. 10 While you are in Settings, turn Public Access off if nothing outside the project needs it. 10${{ Postgres.DATABASE_URL }} picks up the next rotation without an edit. 10railway logout
railway login
railway link
railway upRAILWAY_TOKEN and RAILWAY_API_TOKEN were revoked. Project tokens are created under the project's Settings, then Tokens; account and workspace tokens on the account tokens page. 4InvalidAccessKeyId is running the old deployment or holds a pasted value. 3blog.railway.com
blog.railway.com
blog.railway.com
status.railway.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.