---
title: "PyPI Üzerindeki Ele Geçirilmiş LiteLLM 1.107.0 Sürümü Kimlik Bilgisi Hırsızı ve Arka Kapı Yükler"
url: https://blog.edumints.com/pypi-uzerindeki-ele-gecirilmis-litellm-1-107-0-surumu-kimlik-bilgisi
category: "Yazılım"
date: 2026-10-21T15:05:48.632Z
publisher: Edumints Blog
lang: tr-TR
source_name: "Hacker News"
source_url: https://safedep.io/litellm-pypi-compromise-credential-stealer-backdoor/
---

# PyPI Üzerindeki Ele Geçirilmiş LiteLLM 1.107.0 Sürümü Kimlik Bilgisi Hırsızı ve Arka Kapı Yükler

PyPI üzerindeki **LiteLLM 1.107.0** sürümü, bir kimlik bilgisi hırsızı (credential stealer) ve uzaktan kod yürütme arka kapısı (backdoor) barındırmaktadır. Linux, macOS ve Windows için sunulan yedi wheel paketinin tamamı, bu zararlı bileşenleri `site-packages` dizinine üç dosya olarak yükler. Bu dosyalar, `litellm` paketini hiç içe aktarmayan (import etmeyen) süreçler dahil olmak üzere, ana bilgisayarda herhangi bir Python süreci başladığında otomatik olarak çalışır.

Orijinal GitHub kaynak kodunda bu zararlı dosyalar yer almamaktadır ve PyPI ilgili sürümü yayından kaldırmıştır. **1.106.2**, **1.107.0rc1** ve **1.107.0rc2** sürümleri temizdir. Ayrıca 1.107.0 sürümünün sabitlediği eşlikçi paketler olan `litellm-proxy-extras==0.4.110` ve `litellm-enterprise==0.1.78` paketlerinde de herhangi bir güvenlik sorunu bulunmamaktadır.

## Saldırı Ne Yapıyor?

`litellm==1.107.0` kurulumu `site-packages` içerisine üç dosya yerleştirir ve Python her başladığında bunlardan ikisini otomatik olarak yükler:

- **`cook.pth`**, bir kimlik bilgisi hırsızı olan **`cook.py`** dosyasını içe aktarır. SSH anahtarlarını, bulut kimlik bilgilerini, CI/CD sırlarını, yapay zeka aracı token'larını, tarayıcı şifrelerini ve LiteLLM proxy veritabanındaki LLM sağlayıcı anahtarlarını toplar. Verileri şifreleyerek `www.litellm[.]dev` adresine gönderir.
- **`sitecustomize.py`**, arka planda çalışan bir servis (daemon) başlatır. Bu servis her saat başı bir GitHub dosyasından sunucu adresi okur, kimlik bilgisi hırsızını tekrar çalıştırır ve ilgili sunucudan kod indirip yürütür.

**Geliştiriciler İçin Pratik Çıkarım:** Python'da `.pth` dosyaları ve `sitecustomize.py` mekanizması, hiçbir kod satırı çalıştırılmasa bile yorumlayıcı başlangıcında devreye girer. Bu nedenle AI geliştirme ortamlarında paket güncellemelerini doğrudan üretim veya yerel makinelere kurmak yerine izole container ortamlarında ve sabitlenmiş (pinned) güvenli sürümlerle yönetmek kritik önem taşır.

## Zararlı İmplant Sürüme Nasıl Girdi?

1.107.0 kaynak dağıtımındaki (`sdist`) `pyproject.toml` dosyası, `maturin` derleme bölümünde fazladan bir satır içerir:

```toml
[tool.maturin]
python-source = "."
data = "cook" # <-- enjekte edilen satır
python-packages = ["litellm_cli"] # meşru (upstream'de mevcut)
```

Maturin'deki `data = "cook"` ayarı, wheel paketi içerisindeki `litellm-1.107.0.data/purelib/` dizinine bir `cook/` klasörü kopyalar ve `pip` bu klasörü doğrudan `site-packages` içine yükler. Kaynak dağıtımda (`sdist`) `cook/` klasörü yer almadığı için görünürdeki tek değişiklik bu satırdır. `BerriAI/litellm` deposundaki hiçbir açık commit `data = "cook"` satırını veya `cook/` klasörünü içermez.

Wheel paketinin `RECORD` dosyası eklenen üç zararlı dosyayı listeler:

- `litellm-1.107.0.data/purelib/cook.pth` (12 bayt — `"import cook"`)
- `litellm-1.107.0.data/purelib/cook.py` (22.252 bayt — `exec(zlib.decompress(b64decode(...)))`)
- `litellm-1.107.0.data/purelib/sitecustomize.py` (25.509 bayt — yükleyici/arka kapı ve gömülü hırsız)

## Sürüm Kendi Etiketiyle Eşleşmiyor

GitHub üzerindeki `v1.107.0` etiketi `66c8f5b` (06:59 UTC) commit'ini işaret etmektedir ve bu noktadaki `pyproject.toml` dosyasında `version = "1.108.0"` yazmaktadır. SafeDep, `sdist` içindeki her dosyayı blob hash değerleriyle git ağaçlarıyla karşılaştırmıştır. Sonuç olarak `sdist` paketinin daha sonraki bir main commit'i olan `a8113b0` (08:50 UTC) ile eşleştiği, buna ek olarak beş düzenlenmiş dosya ve `cook/` klasörünü içerdiği görülmüştür. Düzenlenen dosyalardan dördü `readme = "README.md"` satırı eklenen `Cargo.toml` dosyalarıdır (meşru 1.106.2 ve rc2 sürümlerinde de aynı düzenleme vardır). Beşinci dosya ise sürüm numarasının `1.108.0`'dan `1.107.0`'a düşürüldüğü ve bağımlılıkların değiştirildiği `pyproject.toml` dosyasıdır.

**Pratik Çıkarım:** Açık kaynaklı bir paketin GitHub kaynak kodu ile PyPI üzerindeki derlenmiş (wheel) paketi her zaman birebir aynı olmayabilir. Tedarik zinciri güvenliği için paketlerin yalnızca kaynak koduna değil, yayınlanan artifact'lerin bütünlüğüne ve hash doğrulamalarına da dikkat edilmelidir.

Orijinal makaleye [buradan](https://safedep.io/litellm-pypi-compromise-credential-stealer-backdoor/) ulaşabilirsiniz.

---

Bu konuyu derinlemesine öğrenmek isterseniz: [AI Tedarik Zinciri Güvenliği](https://edumints.com/kesfet/ai-altyapi-guvenligi-model-supply-chain-ve-artifac-ja5f) modülüne göz atın.

---

**Kaynak:** Hacker News (https://safedep.io/litellm-pypi-compromise-credential-stealer-backdoor/)
**Yayıncı:** [Edumints Blog](https://blog.edumints.com) · Alıntılarken bu URL'ye bağlantı verin: https://blog.edumints.com/pypi-uzerindeki-ele-gecirilmis-litellm-1-107-0-surumu-kimlik-bilgisi
