google cloud api keylerini github'a atanlar gemini'ye de erişim vermiş
arkadaşlar, yeni bir araştırma ortaya çıktı ve durum hiç iç açıcı değil. truffle security adlı firma, github’da ve açık kaynaklarda dolaşan google cloud api keylerini incelemiş. sonuç: yaklaşık 3.000 tane “AIza” ile başlayan api key bulmuşlar ve bunların bir kısmı gemini api’sine erişim veriyor. yani siz faturalama için kullanılır diye düşündüğünüz bu keyleri client-side kodlara gömmüşseniz, tebrikler, gemini’ye de erişim vermişsiniz.
olay ne tam olarak?
google cloud api keyleri normalde proje tanımlayıcısı ve faturalama için kullanılır. maps, translate, youtube gibi servislere erişim için client tarafında kullanılması normal karşılanır. ama işin içine gemini girince durum değişiyor.
truffle security’nin bulduğu keylerin bir kısmı gemini api endpoints’lerine erişim sağlıyor. bu ne demek? kötü niyetli birisi sizin keyinizi bulursa:
- gemini ile konuşabilir (sizin faturanıza)
- özel prompt’larınıza erişebilir
- fine-tune edilmiş modellerinizi kullanabilir
- proje verilerinize ulaşabilir
- faturanızı şişirebilir (quota bitene kadar)
spoiler: bu keyler github’da, mobil uygulamalarda, javascript dosyalarında, hatta apk’larda bile bulunmuş. klasik “client-side’a secret koymayın” hikayesi yine başımıza geldi.
etkilenen sistemler
| Sistem | Durum |
|---|---|
| Google Cloud API Keys (AIza*) | 🔴 Etkileniyor |
| Gemini API erişimi olan keyler | 🔴 Kritik risk |
| Maps/Translate gibi keyler | 🟡 Daha az riskli ama yine de sorun |
| GitHub public repo’lar | 🔴 Key sızıntısı kaynağı |
| Mobil uygulamalar (APK) | 🔴 Key sızıntısı kaynağı |
hemen yapmanız gerekenler
1. keyinizi kontrol edin
# github'da kendi repo'larınızı tarayın
git log -p | grep -i "AIza"
# veya trufflehog kullanın
trufflehog git https://github.com/kullanici/repo --only-verified
2. sızan keyleri iptal edin
google cloud console’a gidin:
- APIs & Services → Credentials
- “AIza” ile başlayan keyinizi bulun
- Regenerate key’e tıklayın
- Eski keyi silin
3. key yetkilerini kısıtlayın
önemli: api keyinize mutlaka kısıtlama koyun:
API restrictions:
- Sadece ihtiyacınız olan API'leri seçin
- Gemini'ye ihtiyacınız yoksa KALDIR
Application restrictions:
- HTTP referrer kısıtlaması ekleyin
- IP adresi kısıtlaması ekleyin (mümkünse)
4. backend’e taşıyın
client-side’da api key kullanmayı bırakın:
// YANLIŞ ❌
const apiKey = "AIzaSyDxxxxxxxxxxxxxx";
fetch(`https://api.google.com/gemini?key=${apiKey}`);
// DOĞRU ✅
// backend'inize istek atın, key orada kalsın
fetch(`https://kendi-backend.com/api/gemini-proxy`);
5. secret scanning aktif edin
github’da secret scanning’i açın:
- Settings → Code security and analysis
- Secret scanning → Enable
- Push protection → Enable
google ne diyor?
google’ın resmi açıklaması şu ana kadar yok ama truffle security ile çalıştıkları söyleniyor. beklenen:
- api key yetkilerinde daha granular kontrol
- gemini api için ayrı authentication mekanizması
- otomatik key rotation önerileri
edit: google cloud’un best practices dokümanında zaten “api keylerini public kod’a gömmeyin” yazıyor ama kim okur ki onu.
geçici çözümler
yamayı (yani yeni authentication sistemini) beklerken:
- quota limitleri koyun: günlük/aylık harcama limiti belirleyin
- billing alerts: fatura alarm’ları kurun, anormal kullanım görürseniz hemen keyi iptal edin
- audit logs: cloud logging’de api çağrılarını izleyin
- key rotation: düzenli olarak keyinizi değiştirin (ayda bir falan)
teknik detaylar
zafiyet türü: hardcoded credentials, improper access control
risk seviyesi: 🔴 kritik (gemini erişimi varsa), 🟡 orta (sadece maps vs. varsa)
sömürü zorluğu: çok kolay, key bulunca direkt kullanılıyor
etki: veri sızıntısı, fatura şişmesi, özel model erişimi
kaynaklar
son söz
agalar, bu olay ciddi ciddi github’daki her public repo’yu taramanız gerektiğini gösteriyor. “benim keyim önemsiz” demeyin, içinde gemini erişimi varsa birisi sizin faturanıza konuşabilir veya daha kötüsü özel verilerinize ulaşabilir.
yapmanız gereken şeyler:
- ✅ hemen github’ı tarayın
- ✅ sızan keyleri iptal edin
- ✅ yeni keyler oluştururken kısıtlama koyun
- ✅ mümkünse backend’e taşıyın
- ✅ secret scanning aktif edin
- ✅ billing alerts kurun
dikkat: bu iş sadece google cloud değil, aws, azure, openai ne varsa hepsinde geçerli. client-side’a secret koymayın, sonra ağlarsınız.
şimdi gidin repo’larınızı kontrol edin, ben uyardım.
Bu içerik yapay zeka tarafından oluşturulmuştur.
