Railway ihlalinde müşteri anahtarları çalındı, 740 bin dolarlık izinsiz kullanım yapıldı
Bulut barındırma platformu Railway, 20 ve 21 Ekim'deki saldırıya ilişkin ayrıntılı olay raporunu 10 Kasım'da yayımladı. Rapora göre saldırganlar birden fazla açığı zincirleyerek çalışma alanlarının en fazla yüzde 1,85'inin, yaklaşık 100 bininin ortam değişkenlerini çözebildi. Çalınan anahtarlarla yapılan izinsiz kullanımın yaklaşık 740 bin dolara ulaştığı tahmin ediliyor.
- 4 dk okuma
- 2 kaynak

Kısaca
- Saldırgan önce derleme altyapısındaki bilinmeyen bir açıkla dosya sistemi yalıtımını kısmen aştı ve Railway'in iç kaynak kodunu ele geçirdi. Ardından hatalı tanımlanmış bir OIDC yapılandırmasıyla bulut ortamındaki kimlik bilgilerine ulaştı.
- Railway'e göre saldırganın asıl hedefi yapay zekâ sağlayıcılarının API anahtarlarıydı. 1.852 kullanıcının bağlı hesap token'ları da açığa çıktı ve sıfırlandı.
- Şirket, sağlayıcıların iade etmediği izinsiz kullanım bedellerini kendisinin karşılayacağını açıkladı.
Uygulama barındırma platformu Railway, 20 ve 21 Ekim’de yaşadığı güvenlik olayına ilişkin ayrıntılı raporunu 10 Kasım’da yayımladı. Şirket olayı 22 Ekim’de ön raporla duyurmuş ve müşterilerinden gizli bilgilerini değiştirmelerini istemişti. Yeni rapora göre saldırganlar birden fazla açığı zincirleyerek sistemler arasında yatay hareket etti ve müşteri ortam değişkenlerinin bir bölümünü ele geçirip çözdü.
İlk giriş noktası
Railway’e göre saldırgan 18 Ekim’de çok sayıda sahte hesap açarak denemelere başladı. Bu ilk denemeler başarısız oldu. 20 Ekim’de UTC 07.28’de saldırgan, Railway’in derleme (build) altyapısındaki önceden bilinmeyen bir açığı kullanarak dosya sistemi yalıtımını kısmen aştı ve derlemenin çalıştığı sanal makinedeki bazı dosyaları okuyabildi. Böylece derleme sunucularının bazı iç sistemlere kimlik doğrulamak için kullandığı bir kimlik bilgisini ele geçirdi.
Bu kimlik bilgisi yalnızca derlemeleri tamamlamak için gereken işlere yetki vermek üzere tasarlanmıştı. Ancak Railway’in derlemeler için kullandığı iç Temporal kümesi bu bilgiyi güvenilir bir istemci olarak kabul ediyordu. Saldırgan bu yolla başka derlemelerin saklanan geçmişlerinin bir bölümünü, derleme değişkenleriyle birlikte okudu ve Railway’in iç kod deposunun (monorepo) bir kopyasını aldı. Şirkete göre bu kopya saldırgana Railway’in nasıl çalıştığına dair ayrıcalıklı bir görüş verdi.
Railway mühendisleri saldırıyı aynı gün UTC 13.58’de, derleme çıktılarını saklayan servise yapılan olağan dışı API çağrılarının tetiklediği bir alarmla fark etti. Şirket UTC 17.28’de ele geçirilen kimlik bilgisini iptal edip yeniledi.
İkinci giriş noktası
Railway o sırada saldırganın kod deposunun kopyasına sahip olduğunu bilmiyordu. Rapora göre saldırgan koddaki ipuçlarından yola çıkarak yeni yollar denedi ve bulut ortamlarından birinde hatalı tanımlanmış bir OIDC bağlama yapılandırması buldu. 21 Ekim’de UTC 03.26’da bu yapılandırma üzerinden, Railway’in sürekli dağıtım sisteminin üretim altyapısına erişmek için kullandığı kısa ömürlü bulut kimlik bilgilerinden birini elde etti.
Saldırgan bu kimlik bilgisiyle bulut ortamındaki iç kimlik bilgilerine ulaştı. Bunlardan biri, bir iç ağa erişimle birleştiğinde üretim veritabanındaki şifreli ortam değişkenlerinin okunmasını sağlıyordu. Railway’e göre saldırgan ortam başına tanımlı şifreleme anahtarlarını iki aralıkta, UTC 04.42 ile 05.14 ve 06.36 ile 07.15 arasında çözdü. Şirket kullanılan kimlik bilgisini UTC 07.14’te devre dışı bıraktı. Saldırgan 21 Ekim’de UTC 09.24’te sistemlerden tümüyle çıkarıldı.
Railway olayı tek bir ihlal ve tek bir düzeltme olarak tanımlamıyor. Şirkete göre saldırgan birçok yolu aynı anda denedi, Railway de bu yolları aynı anda kapattı. Rapor, Wiz’e dayanarak Railway’in güvenlik önlemleri kaldırılmış (abliterated) modellere ve ARTEX’e benzer bir düzeneğe karşı savunma yaptığını yazıyor.
Müşterilere etkisi
Railway’e göre:
- Çalışma alanlarının en fazla yüzde 1,85’inin, yaklaşık 100 bininin ortam değişkenlerinden herhangi biri çözülmüş olabilir. Kayıtlar tek tek değişkenleri değil ortamları gösterdiği için bu rakam bir üst sınır.
- Saldırgan 20 Ekim’de 353 derlemenin saklanan geçmişini, mühürlü (sealed) değişkenler dahil okudu.
- 1.852 kullanıcının bağlı hesap token’ları (kendi anahtarını getiren ajan anahtarları ve GitHub OAuth token’ları) çözülen veriler arasındaydı. Railway bu token’ların hepsini sıfırladı, kullanıcılara haber verdi ve bu olayda alınan bilgilerle Railway hesaplarına giriş yapıldığını tespit etmedi.
- Şirketin incelemesinde müşteri veritabanlarına erişildiğine dair bir bulgu yok.
Railway, 21 Ekim’de UTC 09.25’ten itibaren GitHub, GitLab, Anthropic, OpenAI, OpenRouter, SpaceXSI, Google ve Stripe’tan açığa çıkmış olabilecek anahtarları iptal etmelerini istedi. Şirket aynı gün bütün kullanıcı oturumlarını ve token’larını geçersiz kıldı, derlemeleri 22 Ekim’de UTC 22.49 itibarıyla bütün planlar için yeniden açtı.
Saldırının amacı
Railway’in adli incelemesine göre saldırının asıl hedefi yapay zekâ sağlayıcılarının anahtarlarıydı. Saldırgan değişken adlarını yapay zekâ sağlayıcı anahtarları için sorguladı, bir sorgu da bulut, veritabanı ve ödeme servisi kimlik bilgileriyle eşleşti. Şirket, anahtarların model damıtma (distillation) amacıyla kullanılmak üzere aracılara aktarıldığını düşünüyor.
Çalınan anahtarlarla yapılan izinsiz kullanımın yaklaşık 740 bin dolara ulaştığı tahmin ediliyor. Railway’e göre gözlenen kullanım kodlama ajanlarından yapay zekâ eğitim hatlarına kadar uzanıyor. Şirket olayı, yapay zekâ anahtarı barındıran platformlara yönelik bir dizi saldırının parçası olarak değerlendiriyor ve OpenCode, Warp ve Fireworks AI gibi şirketlerin 6 ile 23 Ekim arasında benzer hırsızlıklar duyurduğunu hatırlatıyor. Northflank’in ekim ayındaki ihlalinde de müşterilerin kaydettiği yapay zekâ API anahtarları izinsiz kullanılmıştı.
İadeler ve alınan önlemler
Railway müşterilerinden kendilerinin yapmadığı harcamaları bildirmelerini istiyor. Rapora göre AWS Bedrock ve Google Gemini iadeleri başlattı, OpenAI ve SpaceXSI talepleri tek tek inceliyor, Anthropic ile görüşmeler sürüyor ve Railway bu süre içinde Anthropic anahtarlarına ilişkin bedelleri kendisi karşılıyor. OpenRouter iade yapmama politikasını uyguladığı için o bedelleri de Railway üstleniyor.
Şirkete göre saldırıda kullanılan bütün yollar kapatıldı. Her derleme artık kendine ayrılmış geçici bir sanal makinede, yalnızca belirli bir imajı gönderme yetkisi olan bir kimlik bilgisiyle çalışıyor. Sürekli entegrasyon altyapısı baştan kuruldu ve kritik alanlarda iki aşamalı doğrulama (2FA) ve biyometrik onay zorunlu hâle getirildi.
Railway’de yapay zekâ sağlayıcısı, bulut, veritabanı ya da ödeme servisi anahtarı saklayan müşterilerin, henüz yapmadılarsa bu anahtarları yenilemesi ve sağlayıcı faturalarında kendilerine ait olmayan kullanım olup olmadığını kontrol etmesi gerekiyor.