- Paket LiteLLM PyPI je bil v različicah 1.82.7 in 1.82.8 zlorabljen z večstopenjsko krajo poverilnic, povezano s TeamPCP.
- Zlonamerna programska oprema je zbirala skrivnosti iz oblaka, CI/CD, Kubernetes in lokalnih sistemov, pri čemer je šifrirane podatke iztrgala v domene, ki jih nadzorujejo napadalci.
- Napadalci so verjetno šli prek vdora v dobavno verigo Trivy in zlorabili ukraden žeton PyPI med postopkom gradnje in objave na kolesu.
- Zagovornike pozivajo, naj prizadeta okolja obravnavajo kot ogrožena, zamenjajo vse poverilnice, poiščejo artefakte obstojnosti in pripnejo LiteLLM na varno različico.

24. marca 2026 se je izjemno priljubljen paket Python za nekaj ur tiho spremenil v močnega tatu poverilnic. Dve zastrupljeni izdaji LiteLLM, knjižnice, ki se pogosto uporablja kot enoten vmesnik za velike jezikovne modele (LLM), so bili naloženi na PyPI, s čimer so ogromno število sistemov za kratek čas izpostavili sofisticiranemu napadu na dobavno verigo.
Zlonamerne različice, 1.82.7 in 1.82.8, je vključeval večstopenjski koristni tovor, ki je lahko črpal skrivnosti iz razvijalskih računalnikov, izvajalcev CI/CD, oblačne infrastrukture in gruč Kubernetes ter jih nato prenesel na strežnike, ki jih nadzorujejo napadalci. Kampanja je bila povezan s skupino grožnje TeamPCP, ki že več mesecev intenzivno uporablja Trivy, orodja Checkmarx, slike Dockerja, napadi na dobavno verigo NPM in zdaj še ekosistem PyPI.
Kaj je LiteLLM in zakaj je bil tako pomemben?
LiteLLM je Odprtokodna knjižnica Python in proxy strežnik ki deluje kot nekakšen univerzalni adapter za LLM API-je. Aplikacijam omogoča komunikacijo z več kot sto različnimi modeli – od ponudnikov, kot so OpenAI, Anthropic, Google, AWS Bedrock, Vertex AI in drugi – prek enega samega API-ja v slogu OpenAI.
Zaradi te vloge je projekt postal globoko vpet v ekosistem umetne inteligence. Poročila več ponudnikov varnostnih rešitev kažejo, da LiteLLM vidi približno 3–3.4 milijona prenosov na dan, pri čemer telemetrija kaže, da je prisoten v približno 36 % nadzorovanih oblačnih okolijZa napadalce predstavlja ogrožanje paketa s takim odtisom redko priložnost, da z eno samo potezo dostopajo do ogromnega toka občutljivih podatkov in poverilnic.
LiteLLM je po zasnovi pogosto nameščen neposredno med aplikacije in več ponudnikov storitev umetne inteligenceZaradi tega položaja rutinsko obravnava ključe API-ja, okoljske spremenljivke, konfiguracijske datoteke in druge skrivnosti, potrebne za doseganje zunanjih končnih točk LLM. Zadnja vrata v takšni odvisnosti lahko tiho prestrežejo in ukradejo te vrednosti, ne da bi pri tem potrebovali neposredno kršitev samih platform.
Incident poudarja tudi, kako prepleten je sodobni razvoj: lokalne delovne postaje, cevovodi CI/CD, gruče Kubernetes in računi v oblaku so vsi povezani prek skupnih skrivnosti in avtomatizacije. ogrožena odvisnost v tem grafu lahko na koncu razkrije poverilnice na več ravneh organizacijskega sklada, kar okrepi vpliv daleč preko enega samega gostitelja.
Kako so bile uvedene zlonamerne različice LiteLLM
Zastrupljene izpuste LiteLLM 1.82.7 in 1.82.8 so bili potisnjeni v PyPI zjutraj 24. marca 2026, okoli 08 UTCNa voljo so bili skoraj dve uri, preden jih je varnostna ekipa PyPI dala v karanteno in jih blokirala obramba tretjih oseb, odstranitev pa je bila zabeležena približno 11 UTC.
Kar dela ta primer opaznim, je to, da Zadnja vrata se niso pojavila v ustrezni izvorni kodi GitHubEndor Labs in drugi raziskovalci so ugotovili, da je bila zlonamerna logika vbrizgana v zgrajeno kolo, distribuirano na PyPI, ne pa v javno skladišče, kar kaže na to, da se je kompromitacija zgodila med ali po postopku gradnje/objave in ne prek vidnega zapisa kode.
Analitiki so še posebej opazili, da datoteka litellm/proxy/proxy_server.py vseboval vgrajen koristni tovor, kodiran v base64, ki je bil odsoten iz iste datoteke v GitHub commit-uMed sicer legitimne bloke kode je bilo vstavljenih približno ducat vrstic (na primer blizu definicije REALTIME_REQUEST_SCOPE_TEMPLATE in showwarning funkcija). Te dodatne vrstice so tiho dekodirale in izvajale skriti skript vsakič, ko je bil modul uvožen.
V različici 1.82.8, napadalci so šli še korak dlje in spustili .pth datoteka z imenom litellm_init.pth v okolje Python. Ker Python obdeluje vse .pth datoteke ob zagonu interpreterja, kar je zagotovilo, da se bo koristni tovor zagnal ob vsakem klicu Pythona, tudi če aplikacija ni nikoli uvozila samega LiteLLM-a.
Ta eskalacija je povzročila 1.82.8 bistveno bolj nevarno: vsaka skripta Python, izvajalec testov, orodje za gradnjo ali avtomatizacija, zagnana v okolju z nameščenim ogroženim paketom, bi v ozadju tiho sprožila logiko kraje poverilnic.
Povezava s širšo kampanjo TeamPCP
Do kompromitacije LiteLLM ni prišlo osamljeno. Preiskave podjetij Sonatype, Wiz, Endor Labs in drugih jo povezujejo z Stalna kampanja za oskrbovalno verigo, ki jo vodi TeamPCP, skupine, ki je pritegnila pozornost konec leta 2025 in je od takrat ciljala na vrsto odprtokodnih projektov in razvijalskih ekosistemov.
V začetku marca so bili isti akterji povezani z vdorom v Zanimivosti o Aqua Securityju pregledovalnik ranljivosti in z njim povezana dejanja GitHub, pa tudi zlonamerne različice orodij Checkmarx, vključno z Znanja, inteligenca in inoviranje (KIS), dejanja GitHub in razširitve OpenVSX. Kampanja se je dotaknila tudi paketov npm, slik Docker Hub in okolij Kubernetes, pri čemer je pogosto ponovno uporabljala infrastrukturo, sheme šifriranja in artefakte vztrajnosti.
Vzdrževalci so pri sledenju incidentu LiteLLM razkrili, da je Žeton za objavo PyPI shranjen kot okoljska spremenljivka v repozitoriju GitHub podjetja LiteLLM, je bil ukraden prek ogroženega delovnega toka Trivy. Ta žeton je bil nato zlorabljen za objaviti okužene izdaje PyPI, kar napadalcem omogoča, da zaobidejo dvofaktorsko zaščito uporabniških računov in vstavijo zlonamerna kolesa, ne da bi spremenili javno izvorno kodo.
Raziskovalci opozarjajo tudi na sumljive zapise in poteke dela, ustvarjene okoli 23. marca v repozitorijih, povezanih z LiteLLM, vključno s kratkotrajno vejo in potekom dela GitHub Actions, ki vsebuje znan javni ključ RSA, opažen v drugih koristnih obremenitvah TeamPCP. Telemetrija iz izvedb potekov dela kaže, da so bile skrivnosti, ki so bile na voljo tem izvajalcem CI, morda dostopane in ukradene.
Skupina je v vseh incidentih pokazala dosleden vzorec: ukradejo poverilnice v enem okolju in se nato preusmerijo v naslednji ekosistemV tem primeru je napačna konfiguracija v Trivyjevih dejanjih GitHub omogočila krajo privilegiranega žetona; ta žeton je privedel do zlonamernih izdaj Trivyja in slik Dockerja; te pa so nato omogočile ogrožanje orodij Checkmarx in na koncu paketa LiteLLM PyPI.
Kako deluje zlonamerna programska oprema LiteLLM
Analize več ponudnikov opisujejo zadnja vrata LiteLLM kot večstopenjski, base64-zakriti koristni nanos Pythona zasnovan tako, da je prikrit, prilagodljiv in odporen. Logika je organizirana v približno treh plasteh, od katerih vsaka obravnava drugo fazo napada.
V prvi plasti je vbrizgana koda v proxy_server.py ali litellm_init.pth datoteka dekodira in zažene skriti orkestratorNamesto uporabe enostavno označljivih funkcij, kot je exec()Skript se za zagon dekodiranega koristnega tovora in zajem njegovega izhoda opira na klice podprocesov in funkcionalnost standardne knjižnice, kar mu pomaga, da se zlije z običajnim delovanjem aplikacije.
Ko se orkestrator zažene, zbere izhod naslednje faze, šifrira pridobljene podatke z AES‑256‑CBC in nato šifrira sam ključ seje AES z uporabo trdo kodiranega javnega ključa RSA, vdelanega v kodo. Šifrirana datoteka blob in ključ sta združena v arhiv z imenom tpcp.tar.gz, kar je odmevalo druge operacije TeamPCP, in se pripravili na izhod.
Druga plast je odgovorna za agresivno sistemsko izvidovanje in pridobivanje poverilnicNašteje imena gostiteljev, podatke o uporabnikih in omrežju ter spremenljivke okolja, nato pa pregleda dolg seznam poti in konfiguracijskih datotek za občutljivo vsebino. Cilji vključujejo:
- SSH ključi in konfiguracijske datoteke (odjemalec in strežnik)
- Poverilnice v oblaku za AWS, GCP in Azure, vključno z žetoni, pridobljenimi iz metapodatkov
- Datoteke Kubernetes kubeconfig, žetoni storitvenega računa in skrivnosti gruče
- Datoteke okolja kot
.envrazličice, ki se pogosto uporabljajo za shranjevanje ključev API - Konfiguracija CI/CD, skrivnosti in žetoni za dostop
- Terraform, Helm in drugi artefakti IaC ali uvajanja
- Nizi za povezavo z zbirko podatkov in konfiguracijske datoteke
- Zasebni ključi TLS/SSL in material za preverjanje pristnosti
- Cryptocurrency wallets in sorodni podatki
V nekaterih okoljih se tat ne ustavi pri pobiranju. Poskuša aktivno uporablja odkrite poverilnice, na primer s poizvedovanjem po API-jih ponudnikov v oblaku, pridobivanjem skrivnosti Kubernetes ali raziskovanjem dostopnih virov, kar povečuje možnost lateralnega premika in nadaljnjega ogrožanja.
Tretja plast zagotavlja vztrajnost in daljinsko upravljanjeZapiše Python skript na disk (običajno opaženo kot sysmon.py) in ga registrira kot dolgotrajno storitev, pogosto prikrito kot nekaj neškodljivega, kot je »storitev sistemske telemetrije«. Ta storitev občasno vzpostavi stik z infrastrukturo napadalca, običajno vsakih 50 minut, da pridobi dodatne ukaze ali koristne podatke.
Raziskovalci so tukaj opazili nekaj nenavadnega vedenja: ko so nekateri ponudniki varnostnih rešitev poskušali pridobiti koristni tovor iz končne točke za upravljanje in nadzor, se je strežnik odzval s povezavo do predelane različice pesmi »Bad Apple!!«, očitno kot taktika preusmerjanja pozornosti proti avtomatizirani analiziV okuženih sistemih pa lahko isti mehanizem sčasoma neopazno zagotovi nove funkcionalnosti.
Kanali za izhod in infrastruktura napadalcev
V incidentih LiteLLM so analitiki opazili komunikacijo z vsaj dvema glavnima domenama, ki ju nadzorujejo napadalci: modelslitellmcloud in checkmarxzoneTe so usklajene z infrastrukturo, uporabljeno v prejšnjih dejavnostih TeamPCP, in služijo različnim vlogam.
Šifrirani arhiv tpcp.tar.gz je običajno naloženo na models.litellmcloud, kar operaterjem omogoča pridobivanje ukradenih poverilnic iz tisočih nadaljnjih okolij. V nekaterih različicah različne podpoti checkmarxzone (npr. checkmarxzone/raw or .../vsx) se uporabljajo za zagotavljanje skriptov za vztrajnost ali dodatnih stopenj.
Na ogroženih sistemih so zagovorniki poročali o nizu ponavljajočih se kazalniki kompromitacije (IoC) povezano z zlonamerno programsko opremo LiteLLM:
- Prisotnost arhiva
tpcp.tar.gzv začasnih ali delovnih imenikih - Začasne datoteke, kot so
/tmp/pglogin/tmp/.pg_state - Skript Python in konfiguracijske poti, povezane z
sysmon.pyin ustrezno datoteko storitve (pogosto v imenikih user ali systemd config) - Nepričakovana
litellm_init.pthdatoteke v paketih spletnih mest Python za različico 1.82.8 - Odhodni promet ali iskanja DNS, ki kažejo na modelslitellmcloud or checkmarxzone
Zlonamerna logika je bila izsledljiva do datotek, vključno z proxy_server.py (LiteLLM 1.82.7 in 1.82.8) in litellm_init.pth (1.82.8). Ponudniki varnostnih rešitev so katalogizirali zgoščene vrednosti in nadaljnje IoC ter še naprej posodabljajo svoja opozorila, ko se pojavijo dodatne forenzične podrobnosti.
Vpliv na okolja umetne inteligence, oblaka in CI/CD
Ker se LiteLLM pogosto uporablja v Aplikacije in storitve, ki jih poganja umetna inteligenca, praktični radij eksplozije te kompromisne rešitve sega dlje od preprostih porabnikov paketov. Oblačna okolja, kjer je LiteLLM služil kot prehod do ponudnikov LLM, imajo verjetno skupne skrivnosti v istem izvajalnem okolju ali konfiguracijskem prostoru.
Wiz in drugi opazovalci ocenjujejo, da se LiteLLM pojavi približno v tretjina opazovanih oblačnih okolij, kar poudarja potencialni doseg. Nekateri viri, ki jih navaja BleepingComputer, namigujejo, da bi lahko število primerov izkrcanja podatkov doseglo več sto tisoč, čeprav neodvisna potrditev natančnega števila še ni na voljo.
Zlasti zlonamerna programska oprema poudarja Obnašanje, ki upošteva KubernetesV mnogih analizah koristni tovor poskuša namestiti privilegirane pode na vsa vozlišča v gruči in nato te pode uporabiti za dostop do skrivnosti in konfiguracijskih objektov. V ločenih, a povezanih operacijah TeamPCP so raziskovalci opazili gruče Kubernetes, ki so bile tarča skriptov, ki brišejo vozlišča, ko se zdi, da se okolje nahaja v Iranu, medtem ko so drugje nameščali zadnja vrata (kot je tako imenovani CanisterWorm).
Podobno jasen je tudi poudarek na orodjih CI/CD. Z ogrožanjem Trivy GitHub Actions, razširitev Checkmarx VS Code in GitHub Actions ter zdaj tudi LiteLLM napadalci pridobijo vstopne točke, kjer avtomatizacija že ima široke privilegije nad repozitoriji, artefakti gradnje in poverilnicami za uvajanje. Ta pristop sicer varnostno usmerjena orodja spremeni v odskočno desko za širši ogrožanje.
Uradniki FBI in raziskovalci v industriji so opozorili, da z velike količine ukradenih poverilnic v rokah, je razumno pričakovati več obvestil o kršitvah, sekundarnih vdorov in poskusov izsiljevanja v tednih in mesecih po začetnem razkritju LiteLLM.
Koraki za odkrivanje, zadrževanje in sanacijo
Za organizacije, ki so morda prevzele ali izvedle različice LiteLLM 1.82.7 ali 1.82.8 Navodila ponudnikov varnostnih rešitev in vzdrževalcev PyPI so odkrita glede na PyPI: obravnavajte prizadete sisteme kot ogroženePreprosta odstranitev paketa ne odstrani mehanizmov za ohranjanje ali razveljavi morebitne kraje poverilnic, ki se je že zgodila.
Priporočeni takojšnji ukrepi vključujejo:
- Prepoznajte morebitne namestitve LiteLLM 1.82.7 ali 1.82.8 na razvijalskih računalnikih, izvajalcih CI/CD, vsebnikih in produkcijskih okoljih.
- Odstranite zlonamerne različice in pripnite LiteLLM na znano dobro izdajo (pri čemer je 1.82.6 v času poročanja pogosto navedena kot zadnja čista različica).
- Zamenjaj vse poverilnice dostopni iz prizadetih okolij: ključi SSH, ključi in žetoni ponudnikov storitev v oblaku, skrivnosti Kubernetes, skrivnosti CI/CD, poverilnice baze podatkov, ključi TLS in vse denarnice ali skrivnosti, povezane s plačili.
- Iskanje artefaktov obstojnosti, Kot je
sysmon.py, sumljive definicije storitev systemd in nenavadne datoteke pod~/.configali začasne imenike, kot je/tmp/pglogin/tmp/.pg_state. - Pregled gruč Kubernetes za nepričakovane privilegirane pode, zlasti v imenskih prostorih, kot je
kube-systemin za nenavadne račune storitev ali vezave vlog. - Spremljanje odhodnih povezav in poizvedbe DNS za znane domene napadalcev, kot so
models.litellmcloudincheckmarxzone.
V okoljih, kjer bi lahko zadnja vrata delovala dlje časa, mnogi strokovnjaki menijo, da bi popolna obnova iz zanesljive osnove je morda najvarnejša pot, zlasti za kritično infrastrukturo. Glede na naravo zlonamerne programske opreme ni mogoče izključiti subtilnega poseganja ali dodatnih koristnih obremenitev zgolj z odstranitvijo paketa LiteLLM.
Organizacije se spodbujajo tudi k sprejetju robustnejših upravljanje odvisnosti in obramba dobavne verige: pripenjanje na določene, preverjene različice, omogočanje orodij, ki blokirajo ali označijo znane zlonamerne pakete ob času vnosa, in vključevanje avtomatizirane vedenjske analize, ki lahko zazna nepričakovano aktivnost omrežja ali datotečnega sistema med gradnjami in testiranji.
Kaj primer LiteLLM pove o dobavnih verigah programske opreme za umetno inteligenco
Incident LiteLLM poudarja širši trend, ki se je krepil v zadnjih nekaj letih: Visokozmogljive komponente v umetni inteligenci in oblačnih skladih postajajo glavne tarče za napadalce v dobavni verigi. Namesto da bi se neposredno lotili aplikacij končnih uporabnikov, akterji grožnje vse pogosteje iščejo točke v verigi orodij, kjer ogrožanje ene same knjižnice ali vtičnika omogoča dostop do številnih organizacij v nižji fazi dobavne verige.
Paketi, kot je LiteLLM, dejansko sedijo na ozka točka za skrivnostiPosredujejo klice ponudnikom umetne inteligence, dotikajo se sistemov za CI/CD in avtomatizacijo infrastrukture ter pogosto delujejo s povečanimi dovoljenji. Ker se vse več podjetij naglo trudi integrirati zmogljivosti LLM z uporabo orodij odprte kode, vrednost takšnih komponent – in spodbuda za njihovo odkrivanje – le še narašča.
Hkrati napad ponazarja izzive obrambe gradbenih in objavljalnih cevovodov. V tem primeru so napadalci domnevno izkoristili napačno konfiguracijo delovnega toka Trivy, da bi ukradli žeton, nato pa ta žeton uporabili za pošiljanje okuženih paketov v PyPI, pri čemer je drevo javne izvorne kode ostalo navidezno čisto. Oznake različic in koraki gradnje so postali del površine napada, pri čemer izkoriščajo dejstvo, da se številni cevovodi zanašajo na oznake namesto na pripete zapise in lahko implicitno zaupajo artefaktom, ki prihajajo od znanih vzdrževalcev.
Prodajalci, kot so Sonatype, Wiz in Endor Labs, poudarjajo pomen avtomatizirani zaščitni ukrepi v realnem času ki lahko zaznajo nenavadno vedenje – kot so prej nevidne omrežne destinacije ali šifrirano uhajanje podatkov – tudi če so metapodatki paketov in zgodovina repozitorija videti legitimni. Požarni zidovi repozitorijev, skenerji, ki jih poganja obveščevalna služba o grožnjah, in kontekstualna analiza odvisnosti se vse bolj obravnavajo kot nujne plasti in ne kot izbirni dodatki.
Za vzdrževalce in organizacije je kompromis LiteLLM opomnik, da ravnanje s skrivnostmi, utrjevanje CI/CD in rotacija poverilnic so temelj varnosti dobavne verige. Nepopolna ali neatomska rotacija poverilnic v prejšnjih incidentih je pustila odprtine, ki jih je TeamPCP lahko ponovno uporabil več tednov pozneje, kar dokazuje, kako se lahko en sam napačen korak pri odzivanju na incidente razširi na ekosisteme.
Kampanja, ki je zajela LiteLLM, se je začela s težavo, ki je bila videti kot omejen potek dela, in je od takrat zajela GitHub Actions, Docker Hub, incident npm Shai-Hulud, OpenVSX in PyPI. Z zadnjimi vrati, ki se skrivajo v zelo zaupanja vrednih orodjih in konektorjih umetne inteligence, ter ukradenimi poverilnicami, ki tečejo v infrastrukturo napadalcev, ta epizoda poudarja, kako hitro lahko dobavna veriga programske opreme postane privlačna in zelo učinkovita površina za napad.


