- Dua versi paket PyPI dari pustaka integrasi LLM yang banyak digunakan, LiteLLM (1.82.7, 1.82.8), didistribusikan dengan payload berbahaya yang disisipkan, dan saat dipasang memicu serangan pencurian kredensial sistem
- Penyebab serangan berasal dari kompromi rantai pasok pada alat pemindaian keamanan CI/CD Trivy, yang membocorkan kredensial CircleCI sehingga token publikasi PyPI dan GitHub PAT ikut dicuri
- Pengguna image Docker Proxy resmi LiteLLM tidak terdampak karena versi dipatok di requirements.txt, tetapi lingkungan yang melakukan
pip install langsung dari PyPI perlu segera diperiksa
- Thread issue GitHub dibanjiri ratusan komentar spam bot yang mengganggu diskusi nyata, dan ini dikonfirmasi sebagai upaya penyerang untuk sengaja mengacaukan komunikasi respons
- Banyak proyek yang menggunakan LiteLLM sebagai dependensi, seperti DSPy dan CrewAI, juga terdampak, kembali menyoroti kerentanan mendasar keamanan rantai pasok perangkat lunak
Ringkasan insiden dan kronologi penemuan
- Saat menyiapkan proyek baru, sistem berjalan tidak normal dengan RAM terkuras dan proses berbentuk fork bomb dieksekusi
- Hasil investigasi menunjukkan
proxy_server.py telah ditambahi blob berbahaya yang dienkode base64, lalu didekode untuk membuat file terpisah dan dieksekusi
- Versi 1.82.7 memuat payload di
litellm/proxy/proxy_server.py dan berjalan saat import litellm.proxy
- Versi 1.82.8 juga menyertakan file
litellm_init.pth, sehingga hanya dengan paket terpasang, malware otomatis berjalan saat Python dimulai
- File
.pth adalah mekanisme yang dijalankan otomatis oleh modul site Python saat startup, dan memungkinkan eksekusi kode arbitrer setelah kata kunci import
- Mekanisme ini telah ada sejak Python 2.1 dan diperkenalkan tanpa PEP terpisah
- Tim FutureSearch melaporkan korban pertama: uvx secara otomatis memasang litellm terbaru (tanpa versi dipatok), lalu Cursor memuat server MCP lokal secara otomatis dan infeksi pun terjadi
Jalur serangan dan keterkaitan TeamPCP
- Serangan ini dipastikan dilakukan oleh pelaku yang sama dengan grup TeamPCP yang baru-baru ini membobol Trivy
- Jalur kompromi: pembobolan Trivy → kebocoran penuh kredensial CircleCI → pencurian token publikasi PyPI + GitHub PAT → distribusi paket berbahaya
- Akun GitHub CEO/CTO LiteLLM juga sepenuhnya dibajak; deskripsi repositori pribadi diubah menjadi "teampcp owns BerriAI" dan issue ditutup, di antara aksi lainnya
- Token PYPI_PUBLISH disimpan sebagai variabel lingkungan pada proyek GitHub, dan bocor melalui Trivy
- Akun memang telah memakai 2FA, tetapi pencurian token membuat proteksi itu dapat dilewati
- Penyerang memposting kalimat yang sama berulang kali di issue GitHub menggunakan ratusan akun bot, sehingga diskusi nyata terganggu
- Di repositori Trivy juga ditemukan pola yang sama dengan lebih dari 700 komentar spam
- Sebagian akun spam adalah pengguna GitHub yang punya riwayat kontribusi nyata; sejak Februari terdeteksi commit "Update workflow configuration" yang menyisipkan pencuri kredensial ke workflow CI
- Kompromi Trivy terjadi setidaknya 5 hari sebelumnya, dan pengumuman serangan terbaru baru keluar sehari sebelumnya, sehingga maintainer kemungkinan terdampak sebelum sempat menyadarinya
- Penyerang juga memakai Internet Computer Protocol(ICP) Canisters untuk pengiriman payload, sehingga pemblokiran DNS saja tidak cukup sebagai pertahanan
Cara kerja payload berbahaya
- Membuat proses Python di latar belakang lalu mendekode dan menjalankan stage yang disematkan
- Menjalankan pengumpul kredensial; bila pengumpulan data berhasil, kunci AES dienkripsi dengan RSA public key milik penyerang dan data curian dikirim ke host jarak jauh
- URL yang ditemukan di malware:
checkmarx.zone/raw dan models.litellm.cloud
- Target utama pencurian adalah kunci SSH di
~/.git-credentials dan informasi dompet kripto
- Karena menjalankan pekerjaan intensif CPU, sistem justru menjadi sangat terbebani sehingga lebih mudah terdeteksi; ada juga laporan anomali diketahui dari suara kipas
- Gejala serupa juga muncul saat memasang Harbor: proses
grep -r rpcuser\rpcpassword berjalan seperti fork bomb untuk mencoba mencari dompet kripto
Respons tim LiteLLM
- Versi terdampak (v1.82.7, v1.82.8) telah dihapus dari PyPI
- Kata sandi semua akun maintainer diganti, dan semua kunci GitHub/Docker/CircleCI/pip dihapus serta diganti
- Akun maintainer baru diganti menjadi @krrish-berri-2 dan @ishaan-berri
- Seluruh paket sempat dikarantina sementara di PyPI, lalu dibuka kembali setelah versi terinfeksi dihapus
- Semua rilis baru dihentikan dan distribusi dibekukan sampai review penuh atas rantai pasok selesai
- Investigasi dan pemulihan dilakukan bersama tim keamanan Mandiant dari Google
- Trivy dipatok ke versi aman terakhir, v0.35.0 (diubah dari pematokan awal v0.69.3 setelah menerima masukan komunitas)
- Ke depan dipertimbangkan penguatan keamanan seperti migrasi ke Trusted Publishing (OIDC berbasis token JWT) dan penggunaan akun PyPI terpisah
- Waktu publikasi pertama versi berbahaya sekitar UTC 8:30, dan karantina PyPI dilakukan sekitar UTC 11:25
Cakupan dampak dan proyek downstream
- LiteLLM adalah satu-satunya pustaka pemanggil provider LLM di DSPy, dan juga dipakai sebagai fallback oleh CrewAI
- Airflow, Dagster, Unsloth.ai, Polar, nanobot dan lainnya juga bergantung pada LiteLLM
- Berdasarkan pencarian GitHub, ada lebih dari 628 proyek yang mencantumkan LiteLLM di requirements.txt tanpa mematok versi
- Pengguna jalur distribusi Docker Proxy resmi tidak terdampak karena requirements.txt mereka mematok versi
- Pada distribusi Docker, akses ke filesystem host dan variabel lingkungan relatif lebih terbatas sehingga lebih aman, tetapi kredensial yang di-mount tetap berisiko
- Sasaran utama penyerang adalah kunci SSH pribadi; akses ke kunci LLM bersifat sekunder
- Pengguna alat yang secara otomatis memasang LiteLLM sebagai dependensi, seperti Harbor dan browser-use, juga melaporkan dampak tidak langsung
- CrewAI telah mematok litellm ke 1.82.6 (versi aman terakhir), tetapi pesan commit tidak menyebut insiden kompromi
- DSPy sedang merespons dengan membuat issue secara terbuka
- LangChain memiliki lapisan pemanggil provider LLM sendiri, sehingga tidak terdampak langsung oleh kompromi rantai pasok ini (kecuali bila memakai paket opsional langchain-litellm)
Diskusi komunitas: keamanan rantai pasok dan sandboxing
- Dependensi dan lingkungan pengembangan tidak bisa lagi dipercaya sepenuhnya, sehingga diperlukan defense in depth seperti isolasi VM + primitive container + allowlist + filter egress + seccomp + gVisor
- Situasi ini dipandang sebagai kembalinya kompromi demi kemudahan keamanan selama 50 tahun terakhir, dan menuntut desain ulang model keamanan secara menyeluruh
- Ada pendapat bahwa sandboxing perlu hadir di level bahasa pemrograman per modul
- Java pernah memiliki kemampuan ini sejak v1.2 pada 1990-an, tetapi akhirnya ditinggalkan karena masalah kegunaan
- Ada pula pandangan bahwa sekarang saatnya mengembangkan bahasa berbasis capability
- Runtime workerd milik Cloudflare disebut sebagai solusi yang sudah ada untuk isolasi modul
- Di level OS, alat isolasi seperti pledge/unveil milik OpenBSD, chroot/namespace/cgroup di Linux, dan Capsicum di FreeBSD sudah tersedia
- Guix dapat membuat container terisolasi dalam hitungan detik sehingga dependensi bisa dipasang tanpa mengakses $HOME
- Alat isolasi user space seperti Firejail dan bwrap perlu dimanfaatkan lebih aktif
- Sandboxing + model izin (Intents) pada aplikasi mobile sebenarnya sudah ada, tetapi lingkungan desktop cenderung menolak pembatasan komputasi umum
- Sebagai tanggapan, dikatakan bahwa sifat tertutup app store milik Apple/Meta dan sandboxing keamanan adalah dua isu yang berbeda; alat masih bisa dibangun untuk menjaga kontrol di tangan pengguna sambil tetap aman
- Alat canary/honeypot untuk macOS juga diperkenalkan (github.com/dweinstein/canary): memasang secret palsu ke WebDAV/NFS untuk mendeteksi akses abnormal
- Ada pendapat bahwa harus ada tembok antara penerbitan paket dan repositori publik: menjadikan repositori publik langsung sebagai Trusted Publisher memperluas permukaan serangan
- Argumen tandingnya, tujuan awal Trusted Publishing adalah menyediakan keterkaitan yang bisa diaudit antara source dan artefak publikasi, sehingga lewat repositori privat justru langkah mundur
Rekomendasi keamanan praktis
- Dependensi wajib dipatok versinya bersama checksum SHA256
- Jalankan mirror paket internal agar tidak langsung memakai versi terbaru
- Gunakan artefak build dan hindari bergantung pada instalasi spontan saat deploy seperti
uv run
- Ini juga menghilangkan risiko struktural ketika PyPI mengalami gangguan dan sistem berhenti
- Keunggulan artefak yang siap deploy: mudah diaudit, rollback lebih cepat, dan endpoint jaringan keluar yang berisiko dapat diblokir
- Dengan pengaturan
exclude-newer milik uv, paket baru dalam periode tertentu bisa dikecualikan
- Di pyproject.toml bisa disetel
[tool.uv] exclude-newer = "5 days"
- Dalam CI/CD, solusi mendasar untuk token publikasi adalah berpindah ke workflow berbasis OIDC agar token permanen dihapus
- GitHub dan PyPI sama-sama mendukung OIDC: bila hanya pekerjaan publish yang diberi izin mengakses endpoint OIDC, maka pekerjaan Trivy tidak punya token yang bisa dicuri
- Alat pemindaian keamanan seperti Trivy harus dijalankan di worker terpisah tanpa hak publikasi
- Pengelolaan lockfile dan pembaruan mingguan disarankan agar tidak langsung mengadopsi versi terbaru
- File
.pth Python dapat mengeksekusi kode otomatis; opsi -S bisa menonaktifkan import site, tetapi ada masalah kompatibilitas
- Disarankan melakukan pemindaian seluruh dependensi proyek dengan alat seperti osv-scanner
- Perintah untuk memeriksa infeksi:
find / -name "litellm_init.pth" -type f 2>/dev/null
find / -path '*/litellm-1.82.*.dist-info/METADATA' -exec grep -l 'Version: 1.82.[78]' {} \; 2>/dev/null
- Muncul juga seruan agar dilakukan rotasi kredensial massal di seluruh ekosistem package manager
Audit SOC2 dan masalah keandalan
- Disorot bahwa vendor audit SOC2 LiteLLM adalah Delve, yang belakangan menjadi kontroversial
- SOC2 hanya memeriksa apakah "proses yang terdokumentasi benar-benar dijalankan", dan tidak menjamin tingkat keamanan itu sendiri
- Bahkan SOC2 yang dijalankan dengan baik pun belum tentu bisa mencegah serangan rantai pasok seperti ini
Proyek alternatif LiteLLM
- Bifrost (github.com/maximhq/bifrost): alternatif berbasis Rust, memungkinkan pengaturan virtual key bahkan di instance open source gratis
- Portkey (portkey.ai): layanan proxy, menyediakan paket gratis, dinilai lebih cepat daripada LiteLLM
- pydantic-ai: alternatif berbasis Python
- any-llm (github.com/mozilla-ai/any-llm): proyek Mozilla
- LLM Gateway (llmgateway.io): menyediakan panduan migrasi dari LiteLLM
- InferXgate (github.com/jasmedia/InferXgate): proyek baru dengan dukungan provider yang masih terbatas
- Sebagian pengembang berpendapat bahwa API provider LLM pada praktiknya hanya OpenAI dan Anthropic, sehingga memanggil langsung via
requests.post() lebih aman
- Sebagai bantahan, API kompatibel OpenAI dari Anthropic tidak direkomendasikan sebagai solusi jangka panjang/produksi, dan API native tiap vendor punya fitur unik yang tidak bisa dipetakan ke API OpenAI
1 komentar
Komentar Hacker News
Saya adalah maintainer LiteLLM. Situasi saat ini masih diselidiki, tetapi sejauh ini yang diketahui adalah sebagai berikut
Saat ini kami sedang meninjau analisis akar penyebab dan langkah penguatan keamanan, dan mohon maaf atas ketidaknyamanan ini
Kita masih belum bisa mempercayai dependensi dan lingkungan pengembangan. Dev container kurang terisolasi dan kegunaannya juga terbatas. Sekarang saatnya beralih ke lingkungan pengembangan berbasis sandbox. Diperlukan lingkungan dengan isolasi setingkat VM, filter egress, seccomp, dan lapisan pertahanan seperti gVisor. Dalam lingkungan seperti ini, meskipun terjadi kompromi, container bisa langsung dihentikan dan masalahnya mudah diidentifikasi
Memperkenalkan alat canary untuk macOS yang saya buat (tautan). Ini adalah biner Go sederhana yang mendeteksi file yang tidak seharusnya diakses oleh paket. Ia mengekspos rahasia palsu melalui WebDAV atau NFS, lalu mengirim notifikasi saat ada akses. Dengan pendekatan honeypot, perilaku aneh bisa dideteksi
Ini terkait insiden yang berhubungan dengan aktivitas TeamPCP dalam beberapa minggu terakhir. Linimasa yang saya susun sepertinya akan membantu
Ada kritik bahwa sistem deteksi spam GitHub terlalu lemah. Katanya ada lebih dari 170 komentar spam di issue litellm
Saya sudah menduga hal seperti ini akan terjadi suatu hari nanti. Saya mencoba bertahan dengan mematok versi dependensi, tetapi itu pun tidak sempurna. Karena kompleksitas rantai pasok open source, mustahil memverifikasi semua kode. Berkat LLM, risiko penyebaran malware dalam skala besar meningkat 100 kali lipat
Jika kode yang ditulis AI berhasil menyusup ke LLVM atau Linux, kita benar-benar akan menghadapi masalah “trusting trust”
Disebutkan bahwa lembaga audit SOC2 LiteLLM adalah Delve.
Setelah memasang Harbor, CPU melonjak ke 100% dan sistem macet. Proses
grep -r rpcuser\rpcpasswordtampaknya mencoba mencari dompet kripto. Untungnya backdoor tidak terpasangInsiden kali ini tampaknya ulah kelompok penyerang yang sama, yaitu TeamPCP yang meretas Trivy. Membanjirnya issue dengan komentar bot juga menunjukkan pola yang sama. Sangat mungkin ini adalah serangan otomatis dengan memanfaatkan LLM