Günlük işim havayolu sistemleri; bunun yanında web siteleri ve web uygulamaları geliştirmeyi de seviyorum. Bir proje ya da soru için yazabilirsiniz.

LinkedIn

murtekbey

Sosyal
Yapay Zeka ve Güvenlik

LiteLLM'e Zararlı Kod Bulaştı: Yapay Zeka Tedarik Zinciri Saldırısı Projelerin İçin Ne Anlama Geliyor?

Arka kapılı LiteLLM 1.107.0, PyPI ve Docker Hub'a ulaştı ve Python her açıldığında bulut ve yapay zeka anahtarlarını çaldı. Ne oldu, sistemlerini nasıl kontrol edersin ve bir dahaki sefere hasarı sınırlayan beş alışkanlık.

LiteLLM'e Zararlı Kod Bulaştı: Yapay Zeka Tedarik Zinciri Saldırısı Projelerin İçin Ne Anlama Geliyor?

21 Ekim 2026'da, ekiplerin OpenAI, Anthropic, Bedrock ve onlarca model sağlayıcısına tek bir kapıdan bağlanmak için kullandığı popüler Python kütüphanesi LiteLLM'in zararlı bir sürümü PyPI ve Docker Hub'da yayınlandı. 1.107.0 sürümü sıradan bir güncelleme gibi görünüyordu. Aslında bir kimlik bilgisi hırsızıydı.

Zararlı sürüm yaklaşık iki saat yayında kaldı, ama Wiz'in tespitine göre bu sürede yaklaşık 49.000 kez indirildi. Üstelik bu, LiteLLM'in yayın sürecinin bu yıl ikinci kez ele geçirilmesi. LLM'lerle bir şey geliştiriyorsan, bu olaya on dakika ayırmaya değer.

Ne oldu?

LiteLLM'in kendi olay raporuna göre yayın hattı (release pipeline) ele geçirildi ve yayınlanan 1.107.0 paketleri derlenmiş zararlı yazılım içeriyordu. GitHub'daki kaynak kod etiketi temizdi; zehirlenen yalnızca derlenmiş paketlerdi. StepSecurity, paketlerin gerçek depo yerine ona benzeyen sahte bir GitHub deposundan derlendiğini tespit etti.

Etkilenenler:

  • PyPI'daki yedi litellm==1.107.0 paketinin (wheel) hepsi
  • v1.107.0 Docker imajları ve o sürüme işaret ettikleri süre boyunca latest, main-latest ve main-stable etiketleri

Etkilenmeyenler: 1.106.2, 1.107.0rc1 ve 1.107.0rc2.

Neden bu kadar tehlikeliydi: import edilmeden çalışıyordu

Çoğumuz zararlı bir paketin ancak kodumuz onu import ettiğinde zarar verebileceğini düşünürüz. Bu paket beklemedi. Her paket site-packages klasörüne üç dosya bırakıyordu: cook.pth, cook.py ve sitecustomize.py. Python, .pth dosyalarını ve sitecustomize'ı yorumlayıcı her başladığında çalıştırır. Yani o ortamdaki her Python süreci zararlı kodu çalıştırdı: uygulaman, testlerin, tek seferlik bir betik, hatta pip'in kendisi bile.

Microsoft ve Datadog sonrasını şöyle anlatıyor: makinedeki bulut ve yapay zeka kimlik bilgilerini topluyor, ardından her saat uzaktan kod indirip çalıştıran bir yükleyici kuruyordu. Bir yapay zeka geçidinin (gateway) çalıştığı makine, bunun için akla gelebilecek en kötü yer: bu makineler zaten şirketin kullandığı bütün model sağlayıcılarının API anahtarlarını tutmak için var.

Sistemlerini şimdi kontrol et

  1. Bul. Her ortamda ve imajda pip show litellm çalıştır; lock dosyalarında ve CI loglarında 1.107.0 ara. Docker sunucularında yukarıdaki etiketleri kontrol et.
  2. Kaldır. site-packages içinden cook.pth, cook.py ve beklenmeyen bir sitecustomize.py varsa sil, ardından litellm==1.106.2 sürümüne sabitle. Ortamı ya da imajı sıfırdan kurmak, temizlemeye çalışmaktan daha güvenli.
  3. O makinenin okuyabildiği her sırrı yenile ve bunu başka, temiz bir makineden yap: model sağlayıcı anahtarları, bulut kimlik bilgileri, veritabanı şifreleri, CI token'ları.
  4. Kullanımı denetle: 21 Ekim'den itibaren bu kimlik bilgileriyle yapılan işlemlere bak. Olağandışı API harcaması, yeni açılmış bulut kaynakları, bilinmeyen adreslerden girişler.

Bir dahaki sefere hasarı sınırlayan beş alışkanlık

Kurduğun her paketi tek tek denetleyemezsin. Ama zehirli tek bir sürümün canlıya ulaşmasını zorlaştırabilir, ulaşsa bile çalacak pek bir şey bulamamasını sağlayabilirsin.

1. Sürümleri tam sabitle ve lock dosyasından kur

litellm>=1.100 gibi bir aralık ya da latest imaj etiketi, beş dakika önce ne yayınlandıysa onu kabul ediyorsun demek. Sürümleri tam sabitle: requirements.txt'te ==, repoya eklenmiş bir package-lock.json ile npm ci, etiket yerine imaj özeti (digest). Böylece sen değiştirmedikçe hiçbir şey değişmez.

2. Sadece sürümü değil, özeti (hash) de sabitle

Sürüm numarası bir isimdir; hash ise içeriğin kendisi. pip install --require-hashes ile (ya da pip-tools, uv veya Poetry'nin lock dosyalarıyla) kurulum aracı, hash'i senin incelediğinle eşleşmeyen bir dosyayı reddeder. Hash sabitlemek, 1.107.0'a bilerek yükselten birini durdurmazdı; ama zaten güvendiğin dosyaların sessizce değiştirilmesini durdurur.

3. Yeni sürümleri almadan önce biraz beklet

Zehirli sürümlerin çoğu saatler ya da günler içinde fark edilir. Yeni sürümleri projelerine almadan önce kısa bir bekleme süresi koymak sana neredeyse hiçbir şeye mal olmaz ve bu olayı tamamen atlatırdı. Dependabot'un cooldown ayarı ve uv'nin exclude-newer ayarı tam olarak bunu yapıyor. Kendi projelerimde Dependabot ayda bir, gruplanmış güncelleme PR'ları açıyor ve her PR merge edilmeden önce build'den geçmek zorunda. Böylece bu sabah yayınlanan bir sürüm bu öğleden sonra canlıya çıkmıyor.

4. Her makineye sadece ihtiyacı olan anahtarları ver

Zararlı yazılım bulabildiği her şeyi çaldı. Her sağlayıcı için tek bir ortak ana anahtar tutan ve ortamında bulut yönetici yetkileri de bulunan bir yapay zeka geçidi, her şeyi tek seferde teslim eder. Her ortam ve servis için ayrı anahtar kullan, sağlayıcının izin verdiği kadar dar yetkilendir, harcama limiti koy ve build makinelerinde canlı ortam sırları tutma.

5. Hiç değişmemesi gerekenleri izle

Bir ortamda yeni beliren .pth ya da sitecustomize.py dosyaları, bir build işinden beklenmedik dış bağlantılar, birden derlenmiş kod getirmeye başlayan bir bağımlılık: bunları izlemek ucuz ve neredeyse hiçbiri masum değil. Socket, StepSecurity'nin Harden-Runner'ı ya da CI'da basit bir çıkış (egress) izin listesi tam olarak bu tür davranışları yakalar.

Büyük resim

Yapay zeka araçları, yazılım tedarik zincirindeki en cazip hedeflerden biri haline geldi. Kütüphaneler genç ve hızlı değişiyor, ekipler onları aceleyle kuruyor ve hepsi şirketin en değerli sırlarının yanında çalışıyor. Bu tablo yakında değişmeyecek. İyi haber şu: yukarıdaki alışkanlıkların hiçbiri yapay zekaya özel ya da pahalı değil. Hepsi her projeyi koruyan sıkıcı ama etkili bağımlılık hijyeni; sadece yığının en hızlı değişen kısmına uygulanıyor.

Kaynaklar

İlgili yazılar

Tüm yazılar
PHP2Shell: Yapay Zeka PHP'nin Kendisinde Açık Buldu. Saldırganlar da Kullanmadan Önce Yapmanız GerekenlerYapay Zeka ve Güvenlik
25 Ekim 2026 • 5 dk okuma

PHP2Shell: Yapay Zeka PHP'nin Kendisinde Açık Buldu. Saldırganlar da Kullanmadan Önce Yapmanız Gerekenler

İki kritik PHP açığı neredeyse her PHP sürümünde uzaktan kod çalıştırmaya izin veriyor ve açıkların bulunmasında yapay zeka büyük rol oynadı. Açıklar nasıl çalışıyor, hangi sürümler düzeltiyor ve yapay zeka destekli araştırmanın hızı güncelleme alışkanlıklarımız için ne anlama geliyor?

Cursor Artık Bilgisayarını Kontrol Edebiliyor: Bir Yapay Zeka Ajanının Erişimi Nerede Bitmeli?Yapay Zeka ve Güvenlik
25 Ekim 2026 • 5 dk okuma

Cursor Artık Bilgisayarını Kontrol Edebiliyor: Bir Yapay Zeka Ajanının Erişimi Nerede Bitmeli?

Cursor'ın ajanları artık geliştirdikleri özellikleri test etmek için herhangi bir masaüstü uygulamasında tıklayıp yazabiliyor. Kodlama ajanları için gerçek bir adım ve yeni bir güvenlik sorusu. Bir ajana ekranını verirken uyman gereken pratik kurallar.

İletişime geçelim

E-posta
murtekbey@gmail.com
LinkedIn
Murtekbey
Adres
Antalya, Türkiye