deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

PyPI'daki kötü niyetli LiteLLM 1.107.0, 2026'daki ikinci ihlalde AI kodlama kimlik bilgilerini hedefledi

Kötü niyetli litellm 1.107.0 sürümü PyPI'da bir günden kısa süre yayında kaldı ve AI kodlama araçlarının kimlik bilgilerini topladı; güvenli sürüm 1.106.2 ve üç günlük bir kurulum gecikmesi kötü sürümü engellemiş olurdu.

PyPI'daki kötü niyetli LiteLLM 1.107.0, 2026'daki ikinci ihlalde AI kodlama kimlik bilgilerini hedefledi

21 Ekim 2026'da, yaygın olarak kullanılan litellm Python paketinin kötü niyetli bir sürümü PyPI'a ulaştı ve kaldırılmadan önce bir günden kısa süre indirilebilir kaldı. GMO Flatt Security'nin analizini özetleyen bir dev.to yazısına göre 1.107.0 sürümü veri çalan bir kötü yazılım taşıyordu. Bu, paketin 2026'daki ikinci ihlaliydi ve Mart ayındaki önceki olayla bir ilgisi yok. Aynı sabah yayımlanan 1.106.2 sürümü güvenli kabul ediliyor.

Saldırı nasıl sahnelendi

dev.to yazısı, zaman çizelgesini Flatt Security'nin bulgularından ve PyPI sürüm meta verilerinden yeniden oluşturuyor. Saldırganın GitHub hesabı 13 Ekim'de 06:43 UTC'de oluşturuldu ve veri sızdırma alan adı litellm[.]dev için bir TLS sertifikası üç dakika sonra düzenlendi. 21 Ekim'de meşru 1.106.2 sürümü 10:44 UTC'de yayımlandı; zehirli 1.107.0 yaklaşık bir saat sonra, 11:39 UTC'de onu izledi ve PyPI aynı gün içinde onu kaldırdı.

İki ayrıntı sürümü inandırıcı kıldı. Projenin GitHub deposundaki 1.107.0 etiketi hiçbir kötü niyetli kod içermiyordu — payload yalnızca PyPI'a yüklenen wheel dosyalarında mevcuttu — dolayısıyla kaynağı denetlemek bir işe yaramazdı. Ve 1.107.0rc1 ile rc2 birkaç gün önce normal şekilde yayımlanmış olduğundan, nihai bir 1.107.0 tam olarak o gün yükseltme yapan birinin almayı bekleyeceği şeydi.

Payload ne yaptı

Yazıya göre kötü yazılım paketin içe aktarılmasını beklemedi. Wheel dosyası site-packages içine bir .pth dosyası ve bir sitecustomize.py yerleştirdi; Python ikisini de her başlangıçta yüklediğinden, ele geçirilen ortamdaki herhangi bir Python süreci onu tetikledi. Kimlik bilgisi hırsızlığının yanı sıra payload, komut sunucusunun adresini GitHub'da barındırılan bir dosyadan okuyarak, saatlik bir programla uzak kod indiren ve çalıştıran bir daemon ayağa kaldırdı.

Ne çalındı

Flatt Security toplanan verileri 16 kategoride katalogladı. Liste özellikle AI kodlama araçlarının kimlik bilgilerini sayıyor: Claude, Cursor, Copilot, Gemini CLI, Codex CLI, Windsurf, Aider, OpenCode ve Hugging Face token'ları. Ortam değişkenleri yalnızca kötü yazılımın kendi sürecinden değil, /proc/*/environ üzerinden diğer süreçlerden de toplandı; bu nedenle yazı, ANTHROPIC_API_KEY veya OPENAI_API_KEY olarak aktarılan her şeyi kaybedilmiş saymayı öneriyor. .env dosyaları, private key'ler, SSH anahtarları, bulut kimlik bilgileri, tarayıcı parolaları ve shell geçmişi de toplandı; ayrıca LiteLLM proxy'sinin çalıştığı yerlerde kötü yazılım, saklanan sağlayıcı anahtarları için proxy'nin veritabanını sorguladı.

Yazı, Claude Code kullanıcıları için bir uyarı ekliyor: kimlik bilgileri macOS Keychain'de tutulur, ancak Linux ve Windows ~/.claude/.credentials.json dosyasına güvenir ve Keychain yazılabilir olmadığında — örneğin SSH üzerinden — macOS da bu dosyaya geri düşer; CI'da veya sunucularda Claude Code çalıştıran herkes o dosyanın okunduğunu varsaymalı.

Nasıl kontrol edilir

pip show yalnızca etkin ortamı incelediğinden, yazar ev dizininde litellm-*.dist-info klasörlerini aramayı öneriyor; bu aynı zamanda uv tool ve pipx ortamlarının içine gizlenmiş kopyaları da yakalar; litellm-1.107.0.dist-info adında bir klasör enfeksiyon belirtisidir. 1.107.0'ı sabitleyen lockfile'lar da önemlidir, çünkü dahili bir mirror ya da cache'ten yeniden derleme kötü wheel'i yeniden kurar. Geride bırakılan izler arasında, verilerin çoktan gönderildiğine işaret eden /tmp/.pc_once_72129118c59f5636c0bb ile backdoor'un etkin olduğunu gösteren /tmp/remote_code_loader.lock veya eşleşen bir süreç yer alıyor. macOS yeniden başlatmada /tmp'yi temizlediğinden, yalnızca bu dosyaların yokluğu pek bir şey kanıtlamaz.

Etkilenenler Flatt Security'nin temizlik adımlarını izlemeli ve her sırrı döndürmelidir: sağlayıcı API anahtarları, Claude Code ve diğer araç oturumları, bir LiteLLM proxy'sinde tutulan anahtarlar, .env içeriği, registry ve GitHub token'ları, SSH anahtarları ile bulut kimlik bilgileri; ayrıca 21 Ekim'den bu yana tanınmayan etkinlik için sağlayıcı kullanım sayfaları gözden geçirilmelidir.

Bunun atlanmasını sağlayacak ayar

Kötü niyetli sürüm bir günden kısa süre var olduğundan, yalnızca birkaç saat eski olan her şeyi yok sayan bir yükleyici onu hiç indirmezdi. Flatt Security'nin kendi registry proxy'si üç günlük bir karantina uygular ve kullanıcıları etkilenmedi. Aynı davranış doğrudan uv ve pip'te mevcuttur: uv, [tool.uv] altında exclude-newer = "3 days" kabul eder ve gerçekten aynı gün güvenlik yaması gerektiren paketleri muaf tutmak için exclude-newer-package sunar; pip ise --uploaded-prior-to P3D ya da PIP_UPLOADED_PRIOR_TO ortam değişkenini destekler ve bu, yükleme zamanlarını bildiren index'lerde — PyPI bunlardan biridir — çalışır. Node tarafında pnpm eşdeğer bir minimumReleaseAge ayarı sunar. Ödün, acil düzeltmelerin de gecikmesidir; bu nedenle bunu geçersiz kılma bilinçli ve görünür bir eylem olmalıdır.

Neden önemli

LiteLLM birçok AI yığınının içinde yer alır, çoğu zaman agent'ların ve proxy'lerin geçişli bir bağımlılığı olarak, dolayısıyla geliştiriciler onu hiç bilinçli olarak kurmamış olsalar bile çalıştırıyor olabilir. Olay, saldırganların normal bir yayım ritmine karışmak için bir sürümü zamanlamasını, zehirli wheel'lerin yanı sıra temiz kaynak sunmasını ve doğrudan AI geliştirici kimlik bilgilerini hedeflemesini gösteriyor. Savunmalar ucuz: pip show'a güvenmek yerine dist-info klasörünü arayın, 1.106.2'de kalın ve bu saldırıyı sıfır olaya dönüştürecek kısa bir kurulum gecikmesini düşünün.

  • #python
  • #security
  • #supply-chain
  • #pypi
  • #llm

İlgili yazılar