LiteLLM ve PyTorch Lightning olayları: Python projelerini PyPI tedarik zinciri saldırılarına karşı korumak

Sabit admin açtı, 3 gün önce 0 yanıt 11 görüntülenme
admin Admin
  • 0 mesaj
  • 1K puan
  • Katılım 12.2025
  • Konu sahibi

2026, PyPI için yoğun bir yıl oldu. Özellikle yapay zekâ altyapısında kullanılan paketler hedefteydi. İki olayı ve Python projelerinde alınabilecek somut önlemleri özetliyorum.

LiteLLM (24 Mart 2026)

  • TeamPCP olarak izlenen grup, LiteLLM'in yayın sürecini ele geçirip 1.82.7 ve 1.82.8 sürümlerini zararlı içerikle yayımladı. Paket ayda yaklaşık 95 milyon kez indiriliyor.
  • Zararlı kod bir .pth dosyası ile çalışıyordu. site-packages içindeki .pth dosyaları yorumlayıcı her başladığında işlenir; paketin import edilmesine bile gerek yoktur.
  • Zscaler ThreatLabz'a göre zararlı sürümler karantinaya alınmadan önce yaklaşık üç saat yayında kaldı.
  • Aynı grup, daha önce Trivy ve Checkmarx KICS gibi güvenlik araçlarını da hedef almıştı.

PyTorch Lightning (Nisan 2026 sonu)

2.6.2 ve 2.6.3 sürümleri, import sırasında çalışan kimlik bilgisi hırsızı içeriyordu. Kök neden, CI/CD sırlarına erişen tek bir zararlı GitHub Actions iş akışı dosyasıydı.

Yeni risk: "slopsquatting"

Yaklaşık 200 bin Python istemi üzerinde yapılan bir çalışmada, tüm büyük dil modellerinin PyPI'de var olmayan paket adları ürettiği görüldü. Saldırganlar bu uydurma adları kaydedip, yapay zekânın önerdiği pip install komutunu körü körüne çalıştıranları bekleyebiliyor. Asistanın önerdiği her paketin PyPI sayfasına, yayın geçmişine ve indirme sayısına bakın.

Önlemler

  1. Hash ile sabitleme: Sürüm sabitlemek yetmez; hash doğrulaması zararlı yeniden yayımlamayı engeller.
    # requirements.in dosyasından hash'li kilit dosyası üret
    pip-compile --generate-hashes requirements.in
    pip install --require-hashes -r requirements.txt
    
    # uv kullanıyorsanız
    uv lock
    uv sync --locked
  2. Yeni sürümleri hemen almayın: LiteLLM'deki zararlı sürümler birkaç saat yayında kaldı. Otomatik güncelleme araçlarında yeni sürümler için birkaç günlük bekleme süresi tanımlayın.
  3. .pth dosyalarını denetleyin: Ortamınızdaki beklenmedik .pth dosyalarını listeleyin:
    python -c "import site,glob; [print(p) for d in site.getsitepackages() for p in glob.glob(d+'/*.pth')]"
    İçinde import ile başlayan satır olan ve tanımadığınız her dosya incelenmeli.
  4. Geliştirme ortamı da üretim gibidir: Geliştiricinin makinesinde ve CI'da bulut anahtarları bulunur. Paket kurulumunu izole bir ortamda (container) yapın, CI çalıştırıcılarının internete çıkışını kısıtlayın.
  5. Kendi paketinizi yayımlıyorsanız: Uzun ömürlü API token yerine PyPI'nin trusted publishing (OIDC) özelliğini kullanın, GitHub Actions iş akışlarında pull_request_target kullanımını ve sırların hangi adımlara verildiğini gözden geçirin.
  6. Olay sonrası: Etkilenen sürüm kurulduysa, o ortamdan erişilebilen tüm anahtarları (bulut, Git, PyPI, veritabanı) yenileyin ve bulut denetim kayıtlarını inceleyin.

Siz projelerinizde bağımlılık güvenliği için hangi araçları kullanıyorsunuz? (pip-audit, uv, Socket, Dependabot…)

Kaynaklar

Yanıt yazmak için giriş yap. Giriş yap Hesap oluştur