LiteLLM paketinin zehirlenmiş sürümleri üzerinden yürütülen tedarik zinciri saldırısı, 2.100’den fazla kuruluşun gizli anahtar ve parolalarını açığa çıkarmış olabilir. 24 Mart’ta kısa süreliğine PyPI’ye yüklenen 1.82.7 ve 1.82.8 sürümleri, CI ortamlarından cloud anahtarları, SSH anahtarları, Kubernetes token’ları, veritabanı parolaları ve model API anahtarları toplamak için tasarlanmış zararlı kod taşıyordu.
Genişlik hesabı, saldırganların ele geçirdiği yaklaşık 434.000 dosyaya dayanan bir veri kümesine yaslanıyor. Ancak bu sayı, doğrudan mağdur sayısı anlamına gelmiyor; analiz, ele geçirilmiş günlükler ve loot dosyaları üzerinden hangi kuruluşa ait olabileceğini eşleştiriyor. CloudSEK, The Hacker News’e yaptığı açıklamada verilerin gizli istihbarat kaynaklarından geldiğini, listeye alınan kuruluşlardan toplanmış veri değil, kampanyaya ait olduğu değerlendirilen ele geçirilmiş loot ve log dosyaları olduğunu söyledi.
CloudSEK, ele geçirilen dosyaları kuruluşlarla eşleştiren bir arama dizini yayımladı
Tehdit istihbaratı şirketi CloudSEK, elde ettiği veri kümesini ad ve alan adına göre aranabilen bir liste olarak yayımladı. Her satırda kuruluş adı, alan adı, açığa çıkan gizli bilgi sayısı, kaç çalıştırma görüldüğü ve High ya da Medium etiketine karşılık gelen bir güven derecesi yer alıyor.
Şirket, yüksek güvenli eşleşmenin bir dosyanın hangi sistemden geldiği konusunda iddia taşıdığını, ancak bunun yalnızca CI çalıştırıcısındaki kimlik sinyallerine dayandığını belirtti. Bu sinyaller arasında ana makine kimliği ve geçerli commit eden alan adları var. Bir kuruluşun kendi alan adı eşleşmede görünmeden en üst güven puanı verilmiyor. Depo namespace bilgisi ise yalnızca orta güven seviyesinde kabul ediliyor.
Listede NVIDIA, Cisco, Deloitte, Volkswagen, FedEx, Siemens ve X Corp gibi isimler de bulunuyor. CloudSEK ve LiteLLM, bu kayıtların çalınan kimlik bilgilerinin gerçekten kullanıldığını kanıtlamadığını vurguluyor; bu nedenle etkilendiği düşünülen kurumlara beklemek yerine anahtarları döndürme çağrısı yapılıyor.
CloudSEK, veri kümesindeki atfın iki ayrı kontrolden geçtiğini de aktardı. Bir indeks, her dosyayı CI kimlik değişkenleriyle etiketliyor; ayrı bir sahiplik kapısı ise getirilen günlüklerden sahipliği yeniden çıkarıyor ve gerekirse ilk atamayı değiştirebiliyor. İkisi anlaşmazsa rapor dışarıda bırakılıyor ve son kararda daha düşük güven seviyesi esas alınıyor.
Şirket, 434.000 sayısının tekil pipeline, run ya da job sayısını değil, yakalanan dosya ve sızdırma olaylarını anlattığını not etti. Bir dosyanın kabaca bir job çalıştırmasına denk geldiğini, fakat bağımsız tekrar azaltma ve doğrulama yapılmadan bunun benzersiz iş sayısı olarak sunulmadığını belirtti. CloudSEK, yayından önce isimleri geçen kuruluşlara bildirim yapılıp yapılmadığına ve herhangi birinin listede yer almasına itiraz edip etmediğine dair yorum yapmadı.
Trivy zinciri, PyPI, FBI uyarısı ve CVE-2026-33634
Olayın kökünde Aqua Security’nin Trivy tarayıcısına uzanan TeamPCP tedarik zinciri kampanyası var. Google bu kümesi UNC6780 olarak izliyor. Aqua, saldırganların eksik bir kimlik bilgisi rotasyonunun ardından erişimi koruduğunu, 19 Mart’ta 76 trivy-action sürüm etiketinden 76’sına ve yedi setup-trivy etiketinin tamamına kötü amaçlı commit’ler zorla ittiğini, ayrıca zararlı bir Trivy 0.69.4 sürümü yayımladığını açıkladı.
Bu ekosistem ihlali CVE-2026-33634 olarak takip ediliyor ve 26 Mart’ta CISA’nın Known Exploited Vulnerabilities kataloğuna eklendi. The Hacker News, 12 Ağustos’ta yaptığı doğrulamada CVE kaydının artık BerriAI LiteLLM 1.82.7 ile 1.82.8 sürümlerini de Trivy bileşenleriyle birlikte etkilenenler arasında gösterdiğini aktardı.
LiteLLM tarafında proje, 1.82.7 ve 1.82.8 sürümlerinin ele geçirildiğini, bu sürümlerin 24 Mart günü 10:39 UTC’den itibaren yaklaşık 40 dakika boyunca yayında kaldığını ve PyPI tarafından karantinaya alındığını bildirdi. Kullanıcılar ise o gün 16:00 UTC’ye kadar yapılan kurulumları şüpheli saymaya çağrılıyor. PyPI üzerinden 12 Ağustos’ta yapılan doğrulama, bu iki sürümün paketin yayın geçmişinde görünmediğini; 1.82.6 ve 1.83.0 sürümlerinin ise erişilebilir kaldığını gösterdi.
FBI, 2 Temmuz tarihli FLASH-20260702-01 uyarısında TeamPCP kampanyası sırasında sızdırılan kimlik bilgilerinin ilk ihlalden sonra da silah haline getirilebileceğini belirtmişti. Kurum, CI/CD sırlarının, yayımlama token’larının ve ilgili maruziyet pencerelerinde erişilebilir bulut kimlik bilgilerinin döndürülmesini istedi. Uzun ömürlü bir cloud anahtarı, SSH anahtarı ya da yayımlama token’ı ancak iptal edilirse geçersiz hale geliyor; aksi halde çalışmaya devam ediyor. Bu nedenle uyarı paketlere değil, o paketlerin erişebildiği kimlik bilgilerine odaklanıyor. FBI ve Aqua, ekiplerin kalıcı token’lar yerine süreli token’lara yönelmesi gerektiğini de hatırlattı.
1.82.8 sürümünde yer alan litellm_init.pth dosyası, Python yorumlayıcısı başlatıldığında çalışıyordu. Yani o ortamda bir Python süreci her açıldığında devreye giriyor, LiteLLM doğrudan içe aktarılmasa bile kod yürütülüyordu. Paketler, environment değişkenlerini, SSH anahtarlarını, cloud kimlik bilgilerini, Kubernetes token’larını ve veritabanı parolalarını toplayıp şifreledikten sonra attacker-controlled models.litellm[.]cloud alan adına gönderdi. Bu alan adı proje ile bağlantılı değil.
Unit 42’nin kampanya analizine göre yük, OPENAI_API_KEY ve ANTHROPIC_API_KEY gibi model API anahtarlarını taşıyan environment değişkenlerini de okudu. LiteLLM’in kendi tavsiyesi, bir sistemde bu paketin bilinçli olarak kullanılıp kullanılmadığından çok, herhangi bir şeyin o sistemi yükleyip yüklemediğine bakılması gerektiği yönünde. Proje notlarında, bir ajan çerçevesi ya da orkestrasyon aracı üzerinden çekilmiş, sabitlenmemiş bir dolaylı bağımlılığın bile paketi getirebileceği belirtiliyor.
LiteLLM’in kötü amaçlı sürümlerinin PyPI’ye nasıl ulaştığına dair açıklamalar ise tam örtüşmüyor. CloudSEK raporu, zehirlenmiş derleme sürecinin sürümleri ürettiğini ve yayınladığını söylerken; LiteLLM’in kendi olay raporu, resmi CI/CD akışını atlayan doğrudan bir PyPI yüklemesine işaret etti. Unit 42 ise saldırganların Trivy ihlalinin ardından PyPI yayın token’larını hedef aldığını yazdı.
CloudSEK bu farkı, “bunlar aynı saldırı zincirinin farklı aşamaları, birbiriyle yarışan açıklamalar değil” sözleriyle değerlendirdi. Şirketin topladığı kanıtlar kimlik bilgisinin nasıl ele geçirildiğini gösteriyor; LiteLLM ve Unit 42 bulguları ise o kimlik bilgisinin sonra nasıl kullanıldığını anlatıyor. PyPA’nın kötü amaçlı sürümlere ilişkin duyurusu da aynı akışı tarif ediyor: ele geçirilmiş Trivy bağımlılığı üzerinden açığa çıkan bir API token’ı ve ardından bu token ile iki sürümün yüklenmesi. BerriAI ise haberin hazırlandığı sırada kendi adli incelemesinin hangi hesabı desteklediğine dair sorulara yanıt vermemişti.
Campaign verilerinde adı geçen kayıtlar arasında NVIDIA, Cisco, Deloitte, Volkswagen, FedEx, Siemens ve X Corp da yer alıyor. Ancak bu isimlerin listede bulunması, çalınan kimlik bilgilerinin kullanıldığını tek başına göstermiyor. CloudSEK ile LiteLLM’in ortak çizgisi de burada başlıyor: doğrulama beklemek yerine, erişim alanı açığa çıkmış sırların döndürülmesi gerektiği vurgulanıyor.
Kampanyanın etkisi, ölçek hesabı tartışılsa da, aşağı akışta doğrulanmış durumda. Checkmarx, Trivy saldırısı üzerinden elde edilen kimlik bilgilerinin GitHub depolarına yetkisiz erişim sağladığını ve zararlı artefaktların yayımlandığını açıkladı. Mercor, kötü amaçlı LiteLLM sürümlerinden etkilendiğini ve yetkisiz faaliyeti sınırladığını bildirdi. CERT-EU ise bir Avrupa Komisyonu AWS hesabının Trivy tedarik zinciri saldırısı üzerinden yüksek güvenle ele geçirildiğini, yaklaşık 91,7 GB sıkıştırılmış verinin dışarı çıkarıldığını değerlendirdi.
Etkilenme ihtimalini inceleyen kurumların, 24 Mart’taki 10:39 ile 16:00 UTC arasındaki LiteLLM kurulumlarını, erişilebilen sırları ve GitHub organizasyonlarında tpcp-docs ya da docs-tpcp adlı depoları kontrol etmesi isteniyor. FBI bu depoları kampanya göstergeleri arasında sayıyor. Aqua’nın CVE notuna göre kötü amaçlı yazılım bunları tpcp-docs- önekiyle oluşturdu ve çalınan verileri data-<timestamp> etiketli bir release asset olarak yükledi; bu yüzden tam adla arama yapmak bazı izleri kaçırabiliyor.
