Yapay zekâ uygulamalarında farklı model sağlayıcılarını tek bir arayüzde toplamak için yaygın kullanılan açık kaynak LiteLLM kütüphanesinin zararlı bir sürümü, 21 Ekim 2026’da yaklaşık iki saat boyunca Python paket deposu PyPI’da kaldı. Geliştirici şirket BerriAI’nin açıklamasına göre litellm==1.107.0 sürümü, kimlik bilgisi çalan ve uzaktan kod yükleyebilen bir zararlı yazılım içeriyordu. Aynı içerik LiteLLM’in Docker imajlarına da girdi.

Şirket, zararlı sürümün PyPI’da 11.39–13.23 UTC (TSİ 14.39–16.23) arasında yayında kaldığını, Docker Hub’daki v1.107.0, latest, main-latest ve main-stable etiketlerinin ise 11.46–14.20 UTC arasında zararlı imajı gösterdiğini açıkladı. Daha önceki sürümlerin güvenli olduğu, kurumsal müşterilere özel kayıt deposunun etkilenmediği belirtildi. Güvenli son sürüm 1.106.2.

Zararlı kod ne yapıyordu?

Olayı inceleyen bulut güvenliği şirketi Wiz’e göre zararlı paket kurulduğunda Python’un paket klasörüne üç dosya bırakıyordu. Bu dosyalar, makinede herhangi bir Python yorumlayıcısı her başladığında kendiliğinden çalışacak biçimde tasarlanmıştı; yani paketi kullanan uygulama dışında, örneğin bir pip komutu bile zararlı kodu yeniden tetikleyebiliyordu. Wiz, aynı anda iki farklı otomatik çalıştırma tekniğinin kullanılmasının sahada belgelenen ilk örnek olduğunu değerlendirdi.

Wiz’in analizine göre “privcollect” adlı hırsızlık modülü tarayıcılarda kayıtlı parola ve çerezleri, AWS, Google Cloud ve Azure kimlik bilgilerini, SSH ve GPG anahtarlarını, kabuk geçmişini ve OpenAI, Anthropic, Cohere gibi büyük dil modeli sağlayıcılarının API anahtarlarını topluyordu. LiteLLM’in vekil sunucu (proxy) olarak kullanıldığı kurulumlarda zararlı kod, sağlayıcı anahtarlarının tutulduğu veritabanı tablosunu doğrudan sorguluyordu. Toplanan veriler şifrelenip LiteLLM’i taklit eden sahte bir alan adına gönderiliyordu.

Wiz, çalınan kimlik bilgilerinin kötüye kullanıldığını da gözlemledi. Şirkete göre sızdırmadan yaklaşık 4,5 saat sonra saldırgan, ele geçirilen CI sunucuları ve Kubernetes düğümlerinden alınmış AWS kimliklerini birden fazla ortamda denedi. Denemelerde AWS’nin yapay zekâ modeli hizmeti Bedrock’a erişim sorgulandı. Wiz bu deseni, başkasının hesabı üzerinden ücretli YZ modeli kullanmak anlamına gelen “LLMjacking” ile uyumlu buldu.

Saldırı yayın hattına nasıl girdi?

BerriAI’nin olay sayfasındaki zaman çizelgesine göre saldırgan, şirketin özel yayın iş akışında yetkisiz bir değişiklik yapmaya çalıştı; dal koruma kuralı bunu reddetti. Beş saniye sonra ayrıcalıklı bir geliştirici hesabına ait kimlik bilgisiyle korumalar aşıldı. Değiştirilen iş akışı, gerçek BerriAI/litellm yerine ona benzeyen Berri-AI/litellm deposundaki kodu derleyip resmî kanaldan imzalı olarak yayımladı. Üretim onayı ikinci bir geliştirici hesabıyla verildi, iş akışı kayıtları ise üçüncü bir hesapla silindi. Şirkete göre GitHub’daki resmî 1.107.0 etiketi zararlı dosyaları içermiyor.

Şirket, saldırganın üç geliştiricinin GitHub CLI oturum anahtarlarını ele geçirdiğini düşünüyor. Açıklamaya göre internete açık olan şirket içi bir LiteLLM kurulumunda masum adlı beklenmedik bir kullanıcı hesabı bulundu; saldırganın bu kuruluma erişip kayıtlardan anahtarları topladığı tahmin ediliyor. BerriAI, belirli durumlarda Claude Code’un kullanıcının GitHub CLI anahtarını yanıt gövdesine yerleştirdiğini, yanıt gövdelerinin kaydedildiği kurulumlarda bu anahtarların LiteLLM kayıtlarına düşebildiğini gözlemlediğini de yazdı. Şirket iç kuruluma nasıl girildiğini henüz doğrulamadığını, yakın zamanda yamanan bir açıktan şüphelendiğini belirtti.

LiteLLM için bu ilk tedarik zinciri krizi değil. Şirket mart ayındaki önceki olayın ardından yayın hattını sıkılaştırdığını, sürümleri özel bir depoya taşıdığını, Docker etiketlerini değiştirilemez yaptığını anlatıyor. Ancak bu hafta acil hata düzeltmeleri için yayın yetkilerinin geçici olarak genişletilmesi ve tek bir organizasyon sahibine ait anahtarın ele geçirilmesi, bu katmanların aşılmasına yetti.

Yapay zekâ araçları yeni bir saldırı yüzeyi

Olayın ironisi, yapay zekâ altyapısını korumak için kullanılan bir aracın, yapay zekâ kodlama asistanlarının ürettiği kayıtlar üzerinden zayıf düşmüş olması. LiteLLM gibi ağ geçitleri, bir şirketin tüm model sağlayıcı anahtarlarını tek yerde topladığı için saldırganlar açısından değerli bir hedef. Wiz de zararlı yazılımın kendisinde büyük dil modeli yardımıyla yazıldığına işaret eden izler bulduğunu belirtti: aşırı uzun değişken adları, genel hata yakalama blokları ve hiç çağrılmayan ölü kod.

Çalınan bir API anahtarının faturası doğrudan anahtar sahibine çıkıyor. Bulut ve YZ şirketleri kullanım başına ücretlendirme modeliyle büyürken, kötüye kullanımın maliyeti çoğu zaman küçük ekiplerin, girişimlerin ve bağımsız geliştiricilerin sırtına biniyor. Açık kaynak bir projenin birkaç geliştiricisine ait oturum anahtarları, binlerce kurumun bulut hesabına giden bir kapıya dönüşebiliyor. Bu da yazılım tedarik zincirinin güvenliğinin tek tek geliştiricilerin dikkatine bırakılamayacak, ortak ve kurumsal bir sorumluluk olduğunu gösteriyor.

Türkiye açısından

Türkiye’de yapay zekâ uygulaması geliştiren yazılım ekipleri, ajanslar ve kamu projelerinde çalışan yükleniciler de LiteLLM’i doğrudan ya da başka araçların bağımlılığı olarak kullanıyor olabilir. Sürüm sabitlenmeden pip install litellm komutunu 21 Ekim öğleden sonra çalıştıran ya da latest etiketli imajı bu saatlerde çeken her ortam risk altında. Ele geçirilen anahtarlar kişisel veri içeren sistemlere erişim sağlıyorsa olay, 6698 sayılı KVKK’nın 12. maddesi kapsamında veri güvenliği yükümlülüğünü de gündeme getirebilir. Benzer bir anahtar sızıntısı için CyberNews’in OpenCode Console haberine, resmî güncelleme kanalının zehirlenmesine dair örnek için Rank Math PRO dosyasına bakabilirsiniz.

Etkilendiyseniz ne yapmalı?

  • Önce kontrol edin: pip show litellm ile sürümü görün; site-packages içinde litellm-1.107.0.dist-info, cook.pth ve sitecustomize.py dosyalarını arayın. Bulamamanız ortamın temiz olduğunu kanıtlamaz.
  • Python’u çalıştırmadan temizleyin: BerriAI, etkilenen ortamda pip dahil Python başlatılmamasını, zararlı dosyaların kabuktan silinmesini ve arka planda çalışan süreçlerin durdurulmasını öneriyor. En güvenlisi ortamı ve imajları sıfırdan yeniden kurmak.
  • Sürümü sabitleyin: litellm==1.106.2 ya da öncesine sabitleyin; imajları etiket yerine özet (digest) değeriyle çekin.
  • Bütün sırları yenileyin: Makinenin erişebildiği bulut rolleri, LiteLLM veritabanındaki tüm sağlayıcı anahtarları, ana ve sanal anahtarlar, veritabanı parolası ve ortam değişkenlerindeki her sır değiştirilmeli.
  • Kayıtlara bakın: AWS kullanıyorsanız kurulum saatleri civarında rolünüzden yapılan GetCallerIdentity ve Bedrock çağrılarını, altyapınız dışından kimlik bilgisi kullanımını inceleyin.