Railway bị lấy biến môi trường, và chính Railway không biết key nào của bạn đã lộ
Kẻ xâm nhập Railway đã giải mã được một phần biến môi trường của khách, nhưng Railway không xác định được là biến nào. Ai deploy trên Railway trước ngày 21/10 nên coi mọi key là đã lộ và đổi hết.
Xem nhanh trong 1 phút
Trong báo cáo sơ bộ về vụ xâm nhập tuần trước, Railway thừa nhận một điều khó chịu: họ biết kẻ tấn công đã giải mã được một phần biến môi trường của khách, nhưng không biết đó là những biến nào. Biến môi trường là chỗ phần lớn chúng ta để API key, mật khẩu database, token GitHub. Nên nếu app của bạn chạy trên Railway, câu trả lời an toàn duy nhất là coi như key nào cũng đã lộ.
Chuyện gì đã xảy ra
Railway là nền tảng deploy nhiều người làm app nhanh hay chọn: nối repo, bấm deploy, thêm Postgres hay Redis chỉ bằng vài cú click. Theo Railway, họ có khoảng 5 triệu người dùng.
Theo báo cáo sơ bộ của Railway (giờ UTC):
20/10, 13:58: hệ thống giám sát báo độ trễ tăng. Kỹ sư phát hiện có người đang cố leo thang quyền trong hạ tầng build, rồi dừng các đường build.
Tối 20/10, Railway tưởng đã chặn xong, nhưng sau đó thấy kẻ tấn công còn những đường vào khác và leo quyền song song ở nhiều phần của hệ thống.
Sáng 21/10: kẻ tấn công lấy được thông tin đăng nhập của môi trường CI, chạy một câu truy vấn lấy biến môi trường đã mã hóa trong database, rồi dùng thông tin đăng nhập vừa lấy để giải mã một phần trong số đó.
22/10, 03:32: Railway xác nhận kẻ tấn công không còn quyền vào hệ thống nội bộ. Build và API trở lại bình thường trong ngày 22/10.
Railway nói kẻ tấn công nhắm vào API key của các dịch vụ AI, và vụ này nằm trong một loạt tấn công vào các nền tảng hạ tầng gần đây. Một tuần trước, Zeabur cũng mất 3,2 triệu biến môi trường với cùng mục tiêu đó.
Vì sao không ai biết key nào đã lộ
Railway mã hóa biến môi trường theo kiểu nhiều lớp khóa (envelope encryption). Cách này tốt khi kẻ trộm chỉ lấy được dữ liệu. Nhưng ở đây kẻ trộm lấy được cả khóa để mở, và nhật ký truy vấn không cho biết biến nào trong project nào đã được giải mã.
Kết quả là:
Railway chỉ khẳng định được tối đa 1,85% workspace, khoảng 100.000 workspace, có biến bị lộ.
Họ báo cho các nhà cung cấp AI về toàn bộ key đang lưu, để các bên đó chủ động thu hồi. Vì vậy hơn 100.000 người nhận yêu cầu đổi key.
Railway nói kẻ tấn công không đăng nhập vào tài khoản người dùng, nhưng chưa loại trừ khả năng mã nguồn bị truy cập. Điều này chờ báo cáo điều tra cuối cùng.
Railway không hoàn tiền khoản chi AI bị xài bằng key đã lộ. Bạn phải tự làm việc với nhà cung cấp AI trước.
Nếu mấy hôm nay app của bạn đột nhiên trả lỗi 401 khi gọi OpenAI, Anthropic hay OpenRouter, có thể key đã bị nhà cung cấp thu hồi, chứ không phải code hỏng.
Nếu bạn deploy trên Railway
Lập danh sách biến cần đổi. Mỗi service trên Railway có tab Variables. Có Railway CLI thì vào thư mục project đã railway link và chạy railway variable list để xem hết các biến của service đó. Đánh dấu mọi thứ là bí mật: key AI, khóa cloud, DATABASE_URL, JWT_SECRET, token GitHub, Stripe, Resend…
Đổi từ phía nhà cung cấp trước. Vào trang của OpenAI, Anthropic, Stripe, AWS…, tạo key mới, thu hồi key cũ, rồi mới dán key mới vào Railway và deploy lại. Chỉ sửa biến trên Railway mà không thu hồi key cũ thì key cũ vẫn dùng được.
Đổi mật khẩu bên trong database. Sửa biến PGPASSWORD trên Railway không làm mật khẩu trong Postgres đổi theo. Đổi bằng ALTER USER ... WITH PASSWORD '...' rồi cập nhật lại biến. Railway cũng khuyên tắt truy cập public vào database nếu app không cần.
Xem hóa đơn và lịch sử dùng API của các dịch vụ AI từ 20/10. Thấy khoản lạ thì báo nhà cung cấp, sau đó gửi yêu cầu lên station.railway.com kèm thời gian và bằng chứng.
Xem audit log của GitHub và Docker Hub, gỡ các ứng dụng GitHub không còn dùng. Railway đã thu hồi mọi token truy cập và cài lại GitHub App, nên bạn cần nối lại GitHub và tạo lại token cho CLI và CI.
Deploy lại commit mới nhất. Commit đẩy lên trong lúc Railway tạm dừng build sẽ không được deploy.
Railway khuyên ưu tiên các tài khoản tạo trước ngày 21/10.
Bài học cho chính dự án của bạn
Biến môi trường trên nền tảng deploy an toàn tới đâu là do nền tảng quyết định, không phải bạn. Hai vụ Zeabur và Railway cách nhau một tuần, đều nhắm key AI, cho thấy kẻ tấn công đã tính ra: hack một nền tảng là lấy được key của hàng chục nghìn app một lúc.
Bạn không chặn được vụ tiếp theo, nhưng làm được để lần sau đỡ đau:
Đặt trần chi tiêu cho key AI ngay trên trang của nhà cung cấp. Key bị lộ mà trần là 50 đô thì mất 50 đô.
Mỗi môi trường một key, mỗi app một key, đặt tên rõ. Đến lúc phải đổi thì biết đổi cái nào, thu hồi một key không làm sập cả loạt app.
Ghi lại danh sách secret của từng app và cách đổi từng cái. Hôm nay mà phải mò lại từng biến thì lần sau sẽ chậm hơn kẻ tấn công.
hostingAPI keyrò rỉ/anh/web/railway-lo-bien-moi-truong-480.webphosting · API key · rò rỉ
Railway bi lay bien moi truong, va chinh Railway khong biet key nao cua ban da lo Ke xam nhap Railway da giai ma duoc mot phan bien moi truong cua khach, nhung Railway khong xac dinh duoc la bien nao. Ai deploy tren Railway truoc ngay 21/10 nen coi moi key la da lo va doi het. hosting API key ro ri Trong bao cao so bo ve vu xam nhap tuan truoc, Railway thua nhan mot dieu kho chiu: ho biet ke tan cong da giai ma duoc mot phan bien moi truong cua khach, nhung **khong biet do la nhung bien nao**. Bien moi truong la cho phan lon chung ta de API key, mat khau database, token GitHub. Nen neu app cua ban chay tren Railway, cau tra loi an toan duy nhat la coi nhu key nao cung da lo.

## Chuyen gi da xay ra
Railway la nen tang deploy nhieu nguoi lam app nhanh hay chon: noi repo, bam deploy, them Postgres hay Redis chi bang vai cu click. Theo Railway, ho co khoang 5 trieu nguoi dung.
Theo bao cao so bo cua Railway (gio UTC):
- **20/10, 13:58:** he thong giam sat bao do tre tang. Ky su phat hien co nguoi dang co leo thang quyen trong ha tang build, roi dung cac duong build.
- Toi 20/10, Railway tuong da chan xong, nhung sau do thay ke tan cong con nhung duong vao khac va leo quyen song song o nhieu phan cua he thong.
- **Sang 21/10:** ke tan cong lay duoc thong tin dang nhap cua moi truong CI, chay mot cau truy van lay bien moi truong da ma hoa trong database, roi dung thong tin dang nhap vua lay de **giai ma mot phan** trong so do.
- **22/10, 03:32:** Railway xac nhan ke tan cong khong con quyen vao he thong noi bo. Build va API tro lai binh thuong trong ngay 22/10.
Railway noi ke tan cong nham vao **API key cua cac dich vu AI**, va vu nay nam trong mot loat tan cong vao cac nen tang ha tang gan day. Mot tuan truoc, Zeabur cung mat 3,2 trieu bien moi truong voi cung muc tieu do.
## Vi sao khong ai biet key nao da lo
Railway ma hoa bien moi truong theo kieu nhieu lop khoa (envelope encryption). Cach nay tot khi ke trom chi lay duoc du lieu. Nhung o day ke trom lay duoc ca khoa de mo, va nhat ky truy van khong cho biet bien nao trong project nao da duoc giai ma.
Ket qua la:
- Railway chi khang dinh duoc **toi da 1,85% workspace**, khoang **100.000 workspace**, co bien bi lo.
- Ho bao cho cac nha cung cap AI ve **toan bo key dang luu**, de cac ben do chu dong thu hoi. Vi vay hon 100.000 nguoi nhan yeu cau doi key.
- Railway noi ke tan cong **khong dang nhap vao tai khoan nguoi dung**, nhung **chua loai tru** kha nang ma nguon bi truy cap. Dieu nay cho bao cao dieu tra cuoi cung.
- Railway **khong hoan tien** khoan chi AI bi xai bang key da lo. Ban phai tu lam viec voi nha cung cap AI truoc.
Neu may hom nay app cua ban dot nhien tra loi 401 khi goi OpenAI, Anthropic hay OpenRouter, co the key da bi nha cung cap thu hoi, chu khong phai code hong.
## Neu ban deploy tren Railway
1. **Lap danh sach bien can doi.** Moi service tren Railway co tab Variables. Co Railway CLI thi vao thu muc project da `railway link` va chay `railway variable list` de xem het cac bien cua service do. Danh dau moi thu la bi mat: key AI, khoa cloud, `DATABASE_URL`, `JWT_SECRET`, token GitHub, Stripe, Resend…
2. **Doi tu phia nha cung cap truoc.** Vao trang cua OpenAI, Anthropic, Stripe, AWS…, tao key moi, thu hoi key cu, roi moi dan key moi vao Railway va deploy lai. Chi sua bien tren Railway ma khong thu hoi key cu thi key cu van dung duoc.
3. **Doi mat khau ben trong database.** Sua bien `PGPASSWORD` tren Railway khong lam mat khau trong Postgres doi theo. Doi bang `ALTER USER ... WITH PASSWORD '...'` roi cap nhat lai bien. Railway cung khuyen tat truy cap public vao database neu app khong can.
4. **Xem hoa don va lich su dung API** cua cac dich vu AI tu 20/10. Thay khoan la thi bao nha cung cap, sau do gui yeu cau len station.railway.com kem thoi gian va bang chung.
5. **Xem audit log cua GitHub va Docker Hub**, go cac ung dung GitHub khong con dung. Railway da thu hoi moi token truy cap va cai lai GitHub App, nen ban can noi lai GitHub va tao lai token cho CLI va CI.
6. **Deploy lai commit moi nhat.** Commit day len trong luc Railway tam dung build se khong duoc deploy.
Railway khuyen uu tien cac tai khoan tao **truoc ngay 21/10**.
## Bai hoc cho chinh du an cua ban
Bien moi truong tren nen tang deploy an toan toi dau la do nen tang quyet dinh, khong phai ban. Hai vu Zeabur va Railway cach nhau mot tuan, deu nham key AI, cho thay ke tan cong da tinh ra: hack mot nen tang la lay duoc key cua hang chuc nghin app mot luc.
Ban khong chan duoc vu tiep theo, nhung lam duoc de lan sau do dau:
- **Dat tran chi tieu** cho key AI ngay tren trang cua nha cung cap. Key bi lo ma tran la 50 do thi mat 50 do.
- **Moi moi truong mot key**, moi app mot key, dat ten ro. Den luc phai doi thi biet doi cai nao, thu hoi mot key khong lam sap ca loat app.
- **Ghi lai danh sach secret** cua tung app va cach doi tung cai. Hom nay ma phai mo lai tung bien thi lan sau se cham hon ke tan cong.
---
App cua ban dang chay o dau, va lan gan nhat ban doi key AI la khi nao? Ke trong [cong dong Vibe Code & Bao Mat](https://www.facebook.com/groups/1867387324580254) nhe.
## Nguon
- [Preliminary Report: October Security Incident](https://blog.railway.com/p/preliminary-report-october-security-incident), Railway
- [Security Disclosure: Wednesday October 21st](https://blog.railway.com/p/security-disclosure-wednesday-october-21st), Railway
- [Railway warns devs to rotate secrets after potential breach](https://www.bleepingcomputer.com/news/security/railway-warns-devs-to-rotate-secrets-after-potential-breach/), BleepingComputer
- [Zeabur lo 3,2 trieu bien moi truong roi tuyen bo dong cua](/zeabur-lo-3-trieu-bien-moi-truong), Bao Mat AI