„TeamPCP“ atakavo „LiteLLM on PyPI“: išsamiai išanalizuota kenkėjiška kampanija, vagianti kredencialus.

Paskutiniai pakeitimai: 03/25/2026
Autorius: C SourceTrail
  • „LiteLLM PyPI“ paketas 1.82.7 ir 1.82.8 versijose buvo įsilaužtas į slaptą apsaugą naudojant daugiapakopį kredencialų vagystės paketą, susietą su „TeamPCP“.
  • Kenkėjiška programa rinko slaptus duomenis debesyje, CI/CD, „Kubernetes“ ir vietinėse sistemose, išgaudama užšifruotus duomenis į užpuoliko kontroliuojamus domenus.
  • Užpuolikai greičiausiai persigalvojo per „Trivy“ tiekimo grandinės pažeidimą, piktnaudžiaudami pavogtu PyPI žetonu rato kūrimo ir publikavimo proceso metu.
  • Apsaugos specialistai raginami paveiktas aplinkas laikyti pažeistomis, pakeisti visus prisijungimo duomenis, ieškoti nuolatinių artefaktų ir prisegti „LiteLLM“ prie saugios versijos.

LiteLLM kenkėjiškos programos incidentas PyPI sistemoje

2026 m. kovo 24 d. kelioms valandoms itin populiarus „Python“ paketas tyliai virto galingu įgaliojimų vagimi. Dvi užkrėstos „LiteLLM“ bibliotekos, plačiai naudojamos kaip... vieninga sąsaja su dideliais kalbos modeliais (LLM), buvo įkelti į PyPI, trumpam atidengiant daugybę sistemų sudėtingai tiekimo grandinės atakai.

Kenkėjiškos versijos, 1.82.7 ir 1.82.8, sujungė daugiapakopį naudingąjį apkrovimą, galintį išgauti paslaptis iš kūrėjų kompiuterių, CI/CD vykdytojų, debesijos infrastruktūros ir „Kubernetes“ klasterių, o tada jas išfiltruoti į užpuolikų kontroliuojamus serverius. Kampanija buvo susijęs su „TeamPCP“ grėsmių grupe, kuris jau kelis mėnesius puola „Trivy“, „Checkmarx“ įrankius, „Docker“ atvaizdus, išpuoliai prieš NPM tiekimo grandinę o dabar ir PyPI ekosistema.

Kas yra LiteLLM ir kodėl jis buvo toks svarbus taikinys?

LiteLLM pakuočių tiekimo grandinės rizika

LiteLLM yra atvirojo kodo Python biblioteka ir tarpinis serveris kuris veikia kaip savotiškas universalus LLM API adapteris. Jis leidžia programoms bendrauti su daugiau nei šimtu skirtingų modelių – iš tokių tiekėjų kaip „OpenAI“, „Anthropic“, „Google“, „AWS Bedrock“, „Vertex AI“ ir kitų – per vieną, „OpenAI“ stiliaus API.

Dėl šio vaidmens projektas tapo giliai įsitvirtinęs dirbtinio intelekto ekosistemoje. Kelių saugumo tiekėjų ataskaitos rodo, kad „LiteLLM“ mato maždaug 3–3.4 mln. atsisiuntimų per dieną, o kai kurie telemetrijos duomenys rodo, kad jis yra maždaug 36 % stebimų debesijos aplinkųUžpuolikams paketo, turinčio tokį pėdsaką, kompromitavimas yra reta galimybė vienu judesiu pasiekti didžiulį jautrių duomenų ir prisijungimo duomenų srautą.

Pagal dizainą, LiteLLM dažnai yra tiesiai tarp programos ir keli dirbtinio intelekto paslaugų teikėjaiŠi pozicija reiškia, kad ji įprastai tvarko API raktus, aplinkos kintamuosius, konfigūracijos failus ir kitas paslaptis, reikalingas norint pasiekti išorinius LLM galinius taškus. Tokios priklausomybės galinis dangus gali tyliai perimti ir išgauti šias vertes, nereikalaujant tiesioginio pačių srovių platformų pažeidimo.

Šis incidentas taip pat pabrėžia, koks susipynęs yra šiuolaikinis programinės įrangos kūrimas: vietinės darbo stotys, CI/CD kanalai, „Kubernetes“ klasteriai ir debesijos paskyros yra susietos bendromis paslaptimis ir automatizavimu. Viena... tame grafike esanti sutrikusi priklausomybė gali atskleisti prisijungimo duomenis daugelyje organizacijos serverių sluoksnių, taip sustiprindamas poveikį gerokai daugiau nei vienam serveriui.

Kaip buvo įdiegtos kenkėjiškos „LiteLLM“ versijos

„LiteLLM“ versijos su „backdoor“ funkcija PyPI platformoje

Apsinuodiję išleidimai LiteLLM 1.82.7 ir 1.82.8 buvo perkelti į PyPI 2026 m. kovo 24 d. rytą, apie 08: 30 UTCJie išliko prieinami beveik dvi valandas, kol juos karantinavo „PyPI“ saugumo komanda ir užblokavo trečiųjų šalių apsaugos sistemos, o apie pašalinimą pranešama maždaug... 11: 25 UTC.

Šią bylą ypatinga daro tai, kad „backdoor“ nebuvo rodomas atitinkamame „GitHub“ šaltinyje„Endor Labs“ ir kiti tyrėjai nustatė, kad kenkėjiška logika buvo įterpta į sukurtą ratą, platinamą „PyPI“, o ne į viešąją saugyklą, o tai rodo, kad kompromitacija įvyko kūrimo / publikavimo proceso metu arba po jo, o ne per matomą kodo patvirtinimą.

Konkrečiai, analitikai pastebėjo, kad byla litellm/proxy/proxy_server.py buvo įterptas „base64“ koduotės paketas, kuris buvo nėra tame pačiame faile „GitHub“ pakeitimų rinkinyjeTarp kitaip teisėtų kodo blokų (pavyzdžiui, šalia apibrėžimo) buvo įterpta apie tuzinas eilučių. REALTIME_REQUEST_SCOPE_TEMPLATE ir showwarning funkcija). Tos papildomos eilutės tyliai dekoduodavo ir vykdydavo paslėptą scenarijų kiekvieną kartą, kai modulis būdavo importuojamas.

Versijoje 1.82.8, užpuolikai žengė dar vieną žingsnį, numesdami .pth failas pavadintas litellm_init.pth į Python aplinką. Kadangi Python apdoroja visus .pth failai paleidžiant interpretatorių, tai užtikrino, kad naudingoji apkrova būtų paleista kiekvieną kartą iškviečiant Python, net jei pati „LiteLLM“ programa niekada nebuvo importuota.

Ši eskalacija sukėlė 1.82.8 žymiai pavojingesnisBet koks „Python“ scenarijus, testavimo programa, kūrimo įrankis ar automatizavimas, paleistas aplinkoje su įdiegtu pažeistu paketu, fone tyliai suaktyvintų kredencialų vagystės logiką.

Ryšys su platesne „TeamPCP“ kampanija

„TeamPCP“ tiekimo grandinės kampanija

„LiteLLM“ kompromitacija neįvyko izoliuotai. „Sonatype“, „Wiz“, „Endor Labs“ ir kitų tyrimų duomenimis, ji siejama su... „TeamPCP“ vykdoma tiekimo grandinės kampanija, grupė, kuri atkreipė dėmesį 2025 m. pabaigoje ir nuo to laiko taikėsi į virtinę atvirojo kodo projektų ir kūrėjų ekosistemų.

Anksčiau kovo mėnesį tie patys aktoriai buvo susieti su slapta vykdomu įsilaužimu į... „Aqua Security“ triviumas pažeidžiamumų skaitytuvas ir susiję „GitHub Actions“, taip pat kenkėjiški „Checkmarx“ įrankių variantai, įskaitant KICS, „GitHub Actions“ ir „OpenVSX“ plėtinius. Kampanija taip pat palietė npm paketus, „Docker Hub“ atvaizdus ir „Kubernetes“ aplinkas, dažnai pakartotinai naudodama infrastruktūrą, šifravimo schemas ir išsaugojimo artefaktus.

Atsekdami „LiteLLM“ incidentą, prižiūrėtojai atskleidė, kad a PyPI publikavimo prieigos raktas saugomas kaip aplinkos kintamasis „LiteLLM“ „GitHub“ saugykloje, buvo išfiltruotas per pažeistą „Trivy“ darbo eigą. Tada šis prieigos raktas buvo piktnaudžiaujamas siekiant publikuoti užterštus PyPI leidimus, leisdami užpuolikams apeiti dviejų veiksnių apsaugą vartotojų paskyrose ir įterpti kenkėjiškus ratukus nekeičiant viešojo šaltinio kodo.

Tyrėjai taip pat atkreipia dėmesį į įtartinus pakeitimus ir darbo eigas, sukurtas apie kovo 23 d. su „LiteLLM“ susijusiose saugyklose, įskaitant trumpalaikę šaką ir „GitHub Actions“ darbo eigą, kurioje yra pažįstamas RSA viešasis raktas, matomas kituose „TeamPCP“ paketuose. Darbo eigų telemetrija rodo, kad galėjo būti pasiektos ir išfiltruotos tiems CI vykdytojams prieinamos paslaptys.

Visų incidentų metu grupė laikėsi nuoseklaus modelio: pavogti prisijungimo duomenis vienoje aplinkoje, o tada pereiti prie kitos ekosistemosŠiuo atveju dėl netinkamos „Trivy“ „GitHub Actions“ konfigūracijos buvo pavogtas privilegijuotas prieigos raktas; dėl šio rakto buvo išleistos kenkėjiškos „Trivy“ versijos ir sukurti „Docker“ atvaizdai; pastarieji savo ruožtu leido pažeisti „Checkmarx“ įrankius ir galiausiai „LiteLLM PyPI“ paketą.

Kaip veikia „LiteLLM“ kenkėjiška programa

Kelių tiekėjų analizės apibūdina „LiteLLM“ galines duris kaip daugiapakopis, „base64“ užmaskuotas „Python“ paketas sukurta taip, kad būtų nepastebima, lanksti ir atspari atakai. Logika suskirstyta į maždaug tris sluoksnius, kurių kiekvienas apdoroja skirtingą atakos etapą.

Pirmame sluoksnyje įterpiamas kodas proxy_server.py arba litellm_init.pth failas dekoduoja ir paleidžia paslėptą orkestratoriųUžuot naudoję lengvai pažymėtas funkcijas, pvz. exec(), scenarijus remiasi subprocesų iškvietimais ir standartinėmis bibliotekos funkcijomis, kad paleistų dekoduotą naudingąją apkrovą ir užfiksuotų jos išvestį, padėdamas jai įsilieti į įprastą programos veikimą.

Paleidęs šį orkestratorių, jis renka kito etapo išvestį, surinktus duomenis šifruoja AES-256-CBC protokolu ir tada užšifruoja patį AES sesijos raktą naudodamas į kodą įkoduotą RSA viešąjį raktą. Užšifruotas „blob“ ir raktas sujungiami į archyvą, pavadintą tpcp.tar.gz, atkartodamas kitas „TeamPCP“ operacijas, ir pasiruošė eksfiltracijai.

Antrasis sluoksnis yra atsakingas už agresyvi sistemos žvalgyba ir kredencialų rinkimasJis išvardija pagrindinių kompiuterių pavadinimus, naudotojų ir tinklo informaciją bei aplinkos kintamuosius, tada nuskaito ilgą kelių ir konfigūracijos failų sąrašą, ieškodamas jautrios medžiagos. Taikiniai apima:

  • SSH raktai ir konfigūracijos failai (klientas ir serveris)
  • Debesijos prisijungimo duomenys AWS, GCP ir „Azure“, įskaitant iš metaduomenų gautus žetonus
  • Kubernetes kubeconfig failai, paslaugos paskyros žetonai ir klasterio paslaptys
  • Aplinkos failai z .env variantai, dažnai naudojami API raktams saugoti
  • CI/CD konfigūracija, paslaptys ir prieigos žetonai
  • „Terraform“, „Helm“ ir kiti IaC arba diegimo artefaktai
  • Duomenų bazės ryšio eilutės ir konfigūracijos failus
  • TLS/SSL privatūs raktai ir autentifikavimo medžiaga
  • Kriptovaliutos piniginės ir susijusius duomenis

Kai kuriose aplinkose vagis neapsiriboja vien rinkimu. Jis bando aktyviai naudoti atrastus prisijungimo duomenis, pavyzdžiui, teikiant užklausas debesijos teikėjų API, ištraukiant „Kubernetes“ paslaptis arba tyrinėjant pasiekiamus išteklius, padidinant horizontalios migracijos ir vėlesnio pažeidimo tikimybę.

Trečiasis sluoksnis suteikia atkaklumas ir nuotolinis valdymasJis įrašo Python scenarijų į diską (dažniausiai stebimas kaip sysmon.py) ir užregistruoja ją kaip ilgai veikiančią paslaugą, dažnai užmaskuotą kaip kažką nekenksmingo, pvz., „Sistemos telemetrijos paslaugą“. Ši paslauga periodiškai susisiekia su užpuoliko infrastruktūra, paprastai kas 50 minučių, kad gautų papildomų komandų ar naudingųjų apkrovų.

Tyrėjai čia pastebi keistą elgesį: kai tam tikri saugumo tiekėjai bandė gauti naudingąją apkrovą iš komandų ir valdymo galinio taško, serveris atsakė nuoroda į remasterizuotą dainos „Bad Apple!!“ versiją, matyt, kaip nukreipimo taktika prieš automatinę analizęTačiau užkrėstose sistemose tas pats mechanizmas laikui bėgant gali tyliai teikti naujas funkcijas.

Eksfiltracijos kanalai ir užpuoliko infrastruktūra

Per visus „LiteLLM“ incidentus analitikai pastebėjo ryšį su bent dviem pagrindiniais užpuolikų kontroliuojamais domenais: modelslitellmcloud bei checkmarxzoneJie atitinka ankstesnėje „TeamPCP“ veikloje naudotą infrastruktūrą ir atlieka skirtingus vaidmenis.

Užšifruotas archyvas tpcp.tar.gz yra paprastai įkelta į models.litellmcloud, leisdami operatoriams gauti pavogtus prisijungimo duomenis iš tūkstančių pasroviui skirtų aplinkų. Kai kuriuose variantuose skirtingi poskyriai checkmarxzone (pavyzdžiui, checkmarxzone/raw or .../vsx) naudojami persistencijos scenarijams arba papildomiems etapams pateikti.

Pažeistose sistemose gynėjai pranešė apie pasikartojančius kompromiso rodikliai (IoC) susijęs su „LiteLLM“ kenkėjiška programa:

  • Archyvo buvimas tpcp.tar.gz laikinuosiuose arba darbiniuose kataloguose
  • Laikini failai, pvz. /tmp/pglog bei /tmp/.pg_state
  • Python scenarijus ir konfigūracijos keliai, susiję su sysmon.py ir atitinkamą paslaugų failą (dažnai esantį vartotojo arba „systemd“ konfigūracijos kataloguose)
  • Netikėtas litellm_init.pth failai Python svetainių paketuose, skirti 1.82.8 versijai
  • Išeinantis srautas arba DNS paieškos, nukreipiančios į modelslitellmcloud or checkmarxzone

Kenkėjiška logika buvo atsekta iki failų, įskaitant proxy_server.py (LiteLLM 1.82.7 ir 1.82.8) ir litellm_init.pth (1.82.8). Saugumo paslaugų teikėjai katalogavo maišos kodus ir kitus informacijos rinkinius (IoC) ir toliau atnaujina savo rekomendacijas, kai atsiranda daugiau teismo ekspertizės duomenų.

Poveikis dirbtinio intelekto, debesijos ir CI/CD aplinkoms

Kadangi LiteLLM plačiai naudojamas Dirbtinio intelekto valdomos programos ir paslaugosPraktinis šio kompromiso veikimo spindulys neapsiriboja paprastais paketų vartotojais. Debesijos aplinkose, kuriose „LiteLLM“ veikė kaip vartai į LLM teikėjus, paslaptys greičiausiai bus bendrose vykdymo aplinkoje arba konfigūracijos erdvėje.

Wiz ir kiti stebėtojai apskaičiavo, kad LiteLLM pasirodo maždaug trečdalis stebimų debesų aplinkų, pabrėžiant galimą aprėptį. Kai kurie „BleepingComputer“ cituojami šaltiniai teigė, kad duomenų nutekėjimo atvejų skaičius gali siekti šimtus tūkstančių, nors tikslaus skaičiaus nepriklausomas patvirtinimas dar laukiama.

Pažymėtina, kad kenkėjiška programa pabrėžia Kubernetes sąmoningas elgesysDaugelyje analizių naudingoji apkrova bando diegti privilegijuotas ankštis visuose klasterio mazguose, o tada panaudoti tas ankštis prieigai prie paslapčių ir konfigūracijos objektų. Atskirose, bet susijusiose „TeamPCP“ operacijose tyrėjai matė, kaip „Kubernetes“ klasteriai buvo nukreipti į scenarijus, kurie išvalo mazgus, kai aplinka atrodo esanti Irane, o kitur diegia galines duris (pvz., vadinamąjį „CanisterWorm“).

Panašiai aiškus dėmesys skiriamas CI/CD įrankiams. Kompromituodami „Trivy GitHub Actions“, „Checkmarx VS Code“ plėtinius ir „GitHub Actions“, o dabar ir „LiteLLM“, užpuolikai gauna patekimo taškus, kur... automatizavimas jau turi plačias privilegijas per saugyklas, kurti artefaktus ir diegimo kredencialus. Toks metodas kitaip į saugumą orientuotus įrankius paverčia platesnio masto kompromisų tramplinu.

FTB pareigūnai ir pramonės tyrėjai perspėjo, kad su dideli kiekiai pavogtų įgaliojimų rankosepagrįstai galima tikėtis daugiau pranešimų apie pažeidimus, antrinių įsilaužimų ir šantažavimo bandymų per kelias savaites ir mėnesius po pradinio „LiteLLM“ atskleidimo.

Aptikimo, izoliavimo ir ištaisymo veiksmai

Organizacijoms, kurios galėjo būti ištraukusios arba įdiegusios „LiteLLM“ versijas 1.82.7 arba 1.82.8 iš PyPI, saugumo tiekėjų ir PyPI prižiūrėtojų nurodymai yra aiškūs: traktuokite paveiktas sistemas kaip pažeistasPaprastas paketo pašalinimas nepašalina išsaugojimo mechanizmų ir neatšaukia jokios jau įvykusios kredencialų vagystės.

Rekomenduojami neatidėliotini veiksmai:

  • Nustatykite bet kokius įrenginius „LiteLLM 1.82.7“ arba „1.82.8“ diegimas kūrėjų kompiuteriuose, CI/CD vykdyklėse, konteineriuose ir gamybinėje aplinkoje.
  • Pašalinkite kenkėjiškas versijas ir prisegkite „LiteLLM“ prie žinomos geros versijos (1.82.6 versija plačiai minima kaip paskutinė švari versija ataskaitos rengimo metu).
  • Pakeisti visus įgaliojimus pasiekiami iš paveiktų aplinkų: SSH raktai, debesijos paslaugų teikėjo raktai ir žetonai, „Kubernetes“ paslaptys, CI/CD paslaptys, duomenų bazės kredencialai, TLS raktai ir visos piniginės ar su mokėjimais susijusios paslaptys.
  • Ieškoti patvarumo artefaktų, Pavyzdžiui, sysmon.py, įtartinus „systemd“ paslaugų apibrėžimus ir neįprastus failus ~/.config arba laikinus katalogus, pvz. /tmp/pglog bei /tmp/.pg_state.
  • Patikrinkite Kubernetes klasterius netikėtiems privilegijuotiems pod'ams, ypač tokiose vardų erdvėse kaip kube-systemir neįprastoms paslaugų paskyroms arba vaidmenų susiejimams.
  • Išeinančių ryšių stebėjimas ir DNS užklausos žinomiems užpuoliko domenams, pvz., models.litellmcloud bei checkmarxzone.

Aplinkose, kuriose užpakalinės durys galėjo veikti ilgą laiką, daugelis ekspertų teigia, kad a visiškas atstatymas iš patikimo bazinio taško gali būti saugiausias būdas, ypač kritinės infrastruktūros atveju. Atsižvelgiant į kenkėjiškos programos pobūdį, subtilaus klastojimo ar papildomų naudingųjų krūvių negalima atmesti vien pašalinus „LiteLLM“ paketą.

Organizacijos taip pat raginamos taikyti griežtesnes priklausomybės valdymas ir tiekimo grandinės apsauga: prisegimas prie konkrečių, patikrintų versijų, įrankių, kurie blokuoja arba žymi žinomus kenkėjiškus paketus įkėlimo metu, įjungimas ir automatinės elgsenos analizės, kuri gali aptikti netikėtą tinklo ar failų sistemos aktyvumą kūrimo ir bandymų metu, įtraukimas.

Ką „LiteLLM“ atvejis sako apie dirbtinio intelekto programinės įrangos tiekimo grandines

„LiteLLM“ incidentas pabrėžia platesnę tendenciją, kuri stiprėjo pastaraisiais metais: didelio sverto komponentai dirbtinio intelekto ir debesijos paketuose tampa pagrindiniais taikiniais tiekimo grandinės užpuolikams. Užuot tiesiogiai persekioję galutinių vartotojų programas, grėsmių kūrėjai vis dažniau ieško tų įrankių grandinės taškų, kur vienos bibliotekos ar papildinio pažeidimas suteikia prieigą daugeliui žemesnio lygio organizacijų.

Tokie paketai kaip „LiteLLM“ iš esmės yra vienoje vietoje. užkimšimo taškas paslaptimsJie tarpininkauja skambučiams su dirbtinio intelekto teikėjais, liečiasi su CI/CD ir infrastruktūros automatizavimo sistemomis ir dažnai veikia su padidintais leidimais. Vis daugiau įmonių skuba integruoti LLM galimybes naudodamos atvirojo kodo įrankius, todėl tokių komponentų vertė ir paskata juos naudoti slapta.

Tuo pačiu metu ši ataka iliustruoja kūrimo ir publikavimo procesų gynybos iššūkius. Šiuo atveju užpuolikai tariamai pasinaudojo „Trivy“ darbo eigos neteisinga konfigūracija, kad pavogtų prieigos raktą, o tada panaudojo tą prieigos raktą, kad perduotų užterštus paketus į „PyPI“, tuo pačiu palikdami viešąjį šaltinio medį, regis, švarų. Versijų žymos ir kūrimo žingsniai tapo atakos paviršiaus dalimi, išnaudojant faktą, kad daugelis kanalų remiasi žymėmis, o ne prisegtais pakeitimais (angl. pinned commits), ir gali netiesiogiai pasitikėti artefaktais, gaunamais iš pažįstamų prižiūrėtojų.

Tokie pardavėjai kaip „Sonatype“, „Wiz“ ir „Endor Labs“ pabrėžia automatizuotos, realiuoju laiku veikiančios apsaugos priemonės kurie gali aptikti anomalų elgesį, pavyzdžiui, anksčiau nematytas tinklo paskirties vietas ar užšifruotą išgavimą, net kai paketo metaduomenys ir saugyklos istorija atrodo teisėti. Saugyklų užkardos, grėsmių žvalgyba pagrįsti skaitytuvai ir kontekstinė priklausomybių analizė vis dažniau laikomi būtinais sluoksniais, o ne pasirenkamais priedais.

Tiek prižiūrėtojams, tiek organizacijoms „LiteLLM“ kompromisas yra priminimas, kad paslapčių tvarkymas, CI/CD stiprinimas ir įgaliojimų rotacija yra tiekimo grandinės saugumo pagrindas. Neišsamus arba neatominis įgaliojimų rotavimas ankstesnių incidentų metu paliko spragų, kurias „TeamPCP“ galėjo pakartotinai panaudoti po kelių savaičių, o tai parodė, kaip viena klaida reaguojant į incidentus gali paveikti visas ekosistemas.

Kampanija, apėmusi „LiteLLM“, prasidėjo nuo, regis, ribotos darbo eigos problemos ir nuo to laiko apėmė „GitHub Actions“, „Docker Hub“, Shai-Hulud npm incidentas, „OpenVSX“ ir „PyPI“. Kai plačiai patikimuose įrankiuose ir dirbtinio intelekto jungtyse slepiasi užpakalinės durys, o pavogti prisijungimo duomenys patenka į užpuolikų infrastruktūrą, šis epizodas pabrėžia, kaip greitai programinės įrangos tiekimo grandinė gali tapti patraukliu ir labai veiksmingu atakų paviršiumi.

ataque Shai-Hulud a la cadena de suministro de npm
Susijęs straipsnis:
Shai-Hulud: el ataque que sacude la cadena de suministro de npm
Susijusios naujienos: