Shai hulud – NPM paketai – tiekimo grandinės ataka

Shai-Hulud: NPM paketų kirmino paaiškinimas

Lt; DR

2025 m. rugsėjo 14 d. tyrėjai nustatė Shai Hulud, viduje pasislėpęs save dauginantis kirminas npm paketai, paversdami įprastą priklausomybės atnaujinimą visaverčiu tiekimo grandinės atakaPirmą kartą pastebėtas @ctrl/tinycolor Danielio dos Santoso Pereiros sukurtą paketą „Shai-Hulud“ renka paslaptis, jas išfiltruoja per „GitHub“ saugyklas ir darbo eigas ir iš naujo publikuoja registre naudodama pavogtus prisijungimo duomenis. Per kelias dienas užkrėstų paketų skaičius išaugo nuo dešimčių iki šimtų, patvirtindamas, kad Šaihuludas yra ne tik dar vienas Trojos arklys, bet ir kirminas, skirtas automatiškai plisti NPM ekosistemoje.

Poveikis: Bet kuris kūrėjas ar CI vykdytojas, diegiantis viešuosius npm paketus, yra pavojuje.

Neatidėliotini veiksmai: blokuoti žinomas versijas, pereiti prie diegimų tik su užrakinimo failais, kaitalioti npm ir GitHub žetonus, audituoti darbo eigas ir stebėti kompromitavimo indikatorius (IoC).

Kas atsitiko?

Geriausios Shai-Hulud tiekimo grandinės ataka NPM paketuose yra vienas labiausiai trikdančių incidentų per pastarąją istoriją. Skirtingai nuo pavienių Trojos arklių, šis kirminas maišosi kredencialų vagystė, automatinis išgavimas ir savęs replikavimasDėl to užsikrėtimo trukmė sutrumpėjo nuo savaičių iki vos kelių valandų.

„DevOps“ komandoms pamoka aiški: jei kiekvienas diegimas gali vykdyti kodą, tai kiekvienas priklausomybės atnaujinimas yra potencialus saugumo pažeidimo taškas.

Galimas pradinis vektorius ir tiksliniai įgaliojimai

Ankstyva analizė rodo, kad ataka greičiausiai prasidėjo nuo pavogti įgaliojimaiPavyzdžiui, sukčiavimo apsimetant kampanijos imituoja npm. login Arba MFA užklausos galėjo užgrobti kūrėjo žetonus. Kai užpuolikai pirmą kartą įsitvirtino, kirminas išplito įterpdamas save į npm paketus ir pavogdamas daugiau paslapčių iš:

  • npm konfigūracijos failai kaip .npmrc, dažnai turinčios publikavimo žetonus.
  • Aplinkos įvairovė ir konfigūracijos su „GitHub“ PAT ir CI/CD paslaptis.
  • Debesijos metaduomenų galiniai taškai (AWS, GCP, Azure) suteikia trumpalaikius įgaliojimus horizontaliam judėjimui.

Todėl kredencialų vagystės tapo atspirties tašku. Turėdamas galiojančius npm žetonus ir „GitHub“ paslaptis, „Shai-Hulud“ galėjo savarankiškai replikuotis keliuose paketuose ir saugyklose be papildomų žmogiškųjų pastangų.

Shai-Hulud tiekimo grandinės atakos poveikis vadovybei

„Shai-Hulud“ vis dar aktyvus. Šis kirminas pagreitina smūgio laiką. Tai, kas anksčiau užtrukdavo savaites su Trojos arkliu, dabar išsisklaido per kelias valandas. Todėl... plitimas yra greitesnis ir sunkiau sustabdomas. Tai vyksta toliau:

  • „npm“ publikavimo žetonų ir „GitHub“ paslapčių vagystė.
  • Pakartotinai publikuojama kituose npm paketuose.
  • Kenkėjiškų „GitHub Actions“ darbo eigų pridėjimas siekiant išsaugoti duomenis.

Kas yra paveiktas:

Bet kuri komanda, diegianti viešus „npm“ paketus, yra pažeidžiama. Be to, didelę riziką patiria kūrėjai, turintys talpykloje saugomus „npm“ arba „GitHub“ žetonus. Taip pat pažeidžiami yra CI vykdytojai, naudojantys plačios apimties paslaptis.

Verslo rizika

Poveikis verslui sparčiai auga. Pavogti žetonai gali lemti paskyros perėmimą, paketų užgrobimą ir net netinkamą debesijos naudojimą. Be to, nuolatinis įsitvirtinimas „GitHub“ darbo eigose apsunkina jų valymą. Todėl...komandos privalo traktuoti Shai-Hulud kaip besitęsiantį incidentą, o ne kaip užsibaigusį.

Kaip veikia „Shai-Hulud“ tiekimo grandinės ataka npm paketuose

Užpuoliko tikslai ir motyvai

Kampanija optimizuojama pagal tris dalykus:

  • Pirmasis tikslas yra: vogti įgaliojimus dideliu mastu iš kūrėjų nešiojamųjų kompiuterių ir CI serverių. Tai apima npm publikavimo žetonus, „GitHub“ žetonus ir debesijos prisijungimo duomenis. Iš tiesų, daugybė analizių patvirtina sistemingą slaptų duomenų rinkimą, pavyzdžiui, „TruffleHog“ paleidimą ir debesijos metaduomenų galinių taškų užklausas.
  • Antrasis tikslas yra skleisti automatiškai piktnaudžiaujant pažeistų kūrėjų leidybos teisėmis. Dėl to viena pozicija greitai išsiplečia į daugelį, nes naujos užkrėstos kitų paketų versijos atsiranda be papildomų žmonių pastangų.
  • Trečiasis tikslas yra išsilaiko ir patikimai išsiskiria per „GitHub“ infrastruktūrą. Užpuolikai sukuria viešą saugyklą pavadinimu „Shai-Hulud“ su dviguba baze64 duomenys.json, ir be to, jie įdiegia darbo eigą, kuri serializuoja ${{ toJSON(paslaptys) }} ir paskelbia jį statiniame žiniatinklio kabliuke.

Tikėtina nauda apima ilgalaikę prieigą prie registrų ir šaltinio kodo, greitą horizontalią perėjimą prie debesijos paskyrų ir galimybę dar labiau ginkluoti tiekimo grandinę. Viešose ataskaitose rodoma, kad privačios saugyklos buvo perkeltos į viešas. „-migracija“ priesaga, kuri padidina duomenų matomumą ir pagreitį

„Shai-Hulud“ naudingojo krovinio viduje: bundle.js npm paketuose

Shai-Hulud laivai kaip didelis, su „Webpack“ paketu susietas ir labai sumažintas JavaScript failas (bundle.js, apie 3–3.7 MB) kuris vykdomas iš po įdiegimo užsikabinti paketas.jsonTodėl, Kiekvienas diegimas automatiškai suaktyvina naudingąją apkrovą. Šis dizainas paslepia identifikatorius, suspaudžia valdymo srautą ir visą logiką sujungia į vieną artefaktą, kuris vykdomas diegimo metu. Analitikai nuolat patvirtina „Webpack“ paketų naudojimą, neįprastą failo dydį ir diegimo metu vykdomą procesą.

Pavyzdžiuose pastebėsite tokius obfuskacijos ir antianalizės bruožus:

  • Sumažintas modulio grafikas su skaitmeniniais modulių ID, retais komentarais ir suplokštintu valdymo srautu. Be to, Dėl šios struktūros rankinė peržiūra yra itin sudėtinga.
  • Stygų slėpimas per „base64“ sluoksnius ir konstravimo pagalbininkus. Pavyzdžiui, Pakartotinis „base64“ kodavimas ir dekodavimas paprastai pasireiškia eksfiltracijos procedūrų metu.
  • Dinaminis išsiuntimas per evalstiliaus šablonus ir sugeneruotus funkcijų kūnus, todėl kodas gali keisti elgseną vykdymo metu.
  • OS filtravimas teikti pirmenybę „Linux“ ir „macOS“ vykdymui, ypač CI vykdytojams ir kūrėjų nešiojamiesiems kompiuteriams.

Funkciniu požiūriu, paketas yra modulinis. Aprašuose aprašomi OS aptikimo, failų sistemos ir „Git“ slaptų nuskaitymų, debesies SDK prieigos, „GitHub“ API operacijų ir sklaidos moduliai, kurie redaguoja kitus paketus, kuriuos valdo kūrėjas. Tiesą sakant, „StepSecurity“ ir „ReversingLabs“ pabrėžia funkciją, kuri automatiškai atnaujina paketus su kenkėjiška priemone.

Diegimo laiko vykdymas Shai-Hulud: kaip npm paketai suaktyvina kirminą

Ataka prasideda, kai po diegimo vykdomas mazgas bundle.js. Šiuo metu scenarijus inicijuoja ir išpakuoja darbinę būseną atmintyje, taip paruošdamas dirvą visapusiškam kirmino veikimui.

Atradimas ir derliaus nuėmimas

  • Naudingoji apkrova iškelia „process.env“ failą ir nuskaito vietinius failus, ieškodama didelės entropijos paslapčių ir žetonų prefiksų. Be to, ji išplečia aprėptį paleisdama „TruffleHog“.
  • Jis pateikia užklausas debesies metaduomenų galiniams taškams, kad surinktų trumpalaikius prisijungimo duomenis. Pavyzdžiui, skambina į 169.254.169.254 AWS arba metadata.google.internal GCP dažnai atsiranda užsikrėtusiuose šeimininkuose.
  • Taigi, Bet kokie rasti prisijungimo duomenys tampa iš karto naudojami naujiems npm paketams publikuoti arba „GitHub“ darbo eigoms vykdyti.

Eksfiltracija

  • Kirminas sukuria naują „GitHub“ saugyklą pavadinimu Shai Hulud ir rašo dvigubą „base64“ koduotę data.json su platformos informacija, aplinkos išklotinėmis ir paslaptimis. Kaip matyti, šį triukšmingą elgesį lengva pastebėti, jei gynėjai žino, kur ieškoti.
  • Taip pat įdiegiama „GitHub Actions“ darbo eiga, dažnai pavadinimu vadinamoje šakoje Šai-huludas, kuris serializuoja ${{ toJSON(secrets) }} ir paskelbia duomenis statiniame žiniatinklio kabliuke. Be to, ši darbo eiga išlieka tol, kol kas nors ją aktyviai pašalina.

Dauginimas

  • Aptikus bet kokį npm prieigos raktą, naudingoji apkrova išvardija visus pažeistam prižiūrėtojui priklausančius paketus. Tada ji nuskaito kiekvieną tarball, įterpia bundle.js ir postinstall įrašą ir iš naujo publikuoja paketą.
  • Dėl to per kelias valandas gali pasirodyti dešimtys užkrėstų paketų, kurie padidina sprogimo spindulį visoje ekosistemoje.

Patvarumas ir poveikis

  • Kirminas palaiko kenkėjiškas darbo eigas ir keliais atvejais privačias saugyklas paverčia viešomis su... „-migracija“ priesaga. Tai užtikrina, kad užpuolikas išlaikytų savo pozicijas ir maksimaliai padidintų duomenų nutekėjimą.

Rakto aptikimo pastaba
Šis neįprastas panaudojimas ${{ toJSON(secrets) }} Veiksmų darbo eigose yra retos. Todėl, komandos medžioklės metu turėtų tai laikyti didelio signalo indikatoriumi.

Išvalytas darbo eigos modelis, kurio turėtumėte ieškoti

Šis neįprastas panaudojimas į JSON (paslaptys) „Actions“ yra didelio signalo rodiklis šiame incidente.

Aukšto lygio sklidimo pseudokodas (saugus, aprašomasis)

Analitikai pastebėjo šią kilpą dideliu mastu, o tai paaiškina spartų užkrėstų paketų skaičiaus šuolį nuo dešimčių iki šimtų.

Kodėl tai yra kirminas paketų ekosistemoje

Kirminas yra kenkėjiška programa, kuri plinta pati, nereikalaujanti rankinio operatoriaus veiksmų kiekviename etape. Operacinėse sistemose kirminai paprastai išnaudoja tinklo pažeidžiamumus, kad pereitų iš vieno kompiuterio į kitą. Priešingai, „Shai-Hulud“ veikia npm registro viduje. Jo efektyvus kelias yra per pakartotinis įgaliojimų naudojimas.

Kirminas pasinaudoja pavogtais npm publikavimo žetonais. Kai tik gauna galiojančius prisijungimo duomenis, jis iš naujo publikuoja užkrėstas versijas kituose to paties kūrėjo paketuose. Vėliau tuos paketus įdiegia nieko neįtariantys kūrėjai arba CI vykdytojai, ir ciklas kartojasi.

Dėl šios priežasties saugumo analitikai, įskaitant Tamsus skaitymas, klasifikuokite Shai-Hulud kaip save replikuojantis kirminas o ne paprastas Trojos arklys ar rašybos klaidą sukeliantis incidentas. Skirtumas svarbus: Trojos arklys paprastai pažeidžia vieną šeimininką, o kirminas automatiškai sustiprina savo poveikį visoje ekosistemoje.

„Kaip tai veikia“ atmintinė

Apibendrinant Shai-Hulud gyvenimo ciklą, pateikiame vieną trūkumą.cispagrindinių jo etapų suskirstymas:

  • Paketas su po įdiegimo yra įdiegtas, ir bundle.js vykdo.
  • Naudingoji apkrova iškelia aplinkos kintamuosius, nuskaito failus ir „git“ istoriją, paleidžia TruffleHogir užklausia debesies metaduomenų paslaugas. Todėl bet koks rastas slaptažodis tampa iš karto naudingas.
  • Eksfiltracija vyksta dviem būdais: pirma, sukuriant viešą saugyklą pavadinimu Shai Hulud su dviguba „base64“ kodavimo sistema data.json; antra, įdiegiant „GitHub Actions“ darbo eigą, kuri skelbia ${{ toJSON(secrets) }} į internetinę kablį.
  • Naudodamas bet kokį pavogtą npm prieigos raktą, kirminas iš naujo publikuoja visus kitus pažeisto prižiūrėtojo paketus su tuo pačiu kenkėjišku kabliu. Tokiu būdu infekcija sparčiai plinta.
  • Galiausiai, užpuolikas turi daugiau paslapčių, daugiau paketų, kuriuos gali platinti, ir atkaklumas „GitHub“ paskyrose ir saugyklose.

Kaip praktiškai išvengti šios klasės atakų

„Shai-Hulud“ yra žadinantis skambutis. Kirminas, kuris vagia žetonus ir save iš naujo publikuoja, nėra ateities pavojus, jis egzistuoja. npm paketų ekosistema šiandien. Siekiant užkirsti kelią tokio tipo tiekimo grandinės atakakomandoms reikalingos kontrolės priemonės, kurios būtų programuojamos, automatizuotos ir tiesiogiai vykdomos CI/CD pipelines. Tai tos pačios gynybos priemonės, kurias jau galite įdiegti su Ksigeni.

Sustabdykite blogus artefaktus prie vartų

Turėtumėte nuskaityti npm paketus ir tarball failus prieš jiems pasiekiant kūrėjus arba CI užduotis. bundle.js failai, įtartini po įdiegimo hooksir užmaskavimo žymekliai – visa tai yra ankstyvi pavojaus signalai. Be to, taikant apribojimų laikotarpius ir prisegtas versijas pipelineneleidžia automatiškai sunaudoti šviežių, nepatikrintų leidimų.

Griežčiau CI/CD pagal nutylėjimą

Guardrails in CI/CD yra būtini. Jie atmeta sujungimus arba diegimus, kurie įveda naujus scenarijus arba dvejetainius failus. Tuo pačiu metu jie blokuoja darbo eigas, kurios serializuoja paslaptis arba bando skelbti išorinius įrašus. Komandos taip pat turėtų reikalauti diegimų, kuriuose būtų tik užrakinimo failai (npm ci) visuose pipelineTaigi priklausomybių rinkiniai išlieka atkuriami ir saugūs.

Sumažinkite žetono sprogimo spindulį

Paslaptys neturi tapti vieninteliais gedimo taškais. Nuolat nuskaitykite kodą, konfigūracijas ir pipeline išvestis už atskleisti prisijungimo duomenysŽetonų taikymo sritis turėtų būti siaura, jiems turėtų būti suteiktas trumpas galiojimo laikas ir jie turėtų būti automatiškai keičiami, kai aptinkamas užkrėtimas. Paprastai bet koks žetonas, naudojamas pagrindiniame kompiuteryje, kuris vykdė įtartiną įdiegimo veiksmą, laikomas pažeistu.

Ankstyvai stebėkite kirminų elgesį

Anomalijos nustatymas yra labai svarbu. Pavyzdžiui, staigus npm publikavimo įvykių padidėjimas, be priežasties atsirandantys nauji darbo eigos arba naujos viešos saugyklos, pripildytos keistų užkoduotų failų, gali signalizuoti apie kirminų aktyvumą. Todėl komandos turėtų greitai siųsti įspėjimus ir izoliuoti visus prižiūrėtojus ar vykdytojus, kurie rodo šiuos įspėjamuosius ženklus.

Greitas taisymas nesugadinant konstrukcijų

Greitis ir saugumas turi būti suderinti. Automatizuota pull requests gali pakeisti pažeistus npm paketus patikrintomis versijomis. Be to, pasiekiamumas bei išnaudojamumą Analizė užtikrina, kad atnaujinimai būtų minimalūs ir stabilūs. Galiausiai, patvirtinus užkrėtimą, atkurkite paveiktus CI vykdytojus iš švarių atvaizdų, kad ataka neplistų toliau.

Kompromiso rodikliai (IoC)

Analizuodamos Shai-Hulud, komandos turėtų atkreipti dėmesį į abu aspektus statiniai IoC failuose ir elgesio IoC in pipelines. Kartu šie signalai padeda anksti aptikti infekcijas ir reaguoti prieš kirminui toliau plintant.

Statiniai IoC

Pastebėtas šis SHA-256 santraukų atitikmuo bundle.js pavyzdžiai:

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

Be to, atkreipkite dėmesį į šiuos pasikartojančius modelius:

  • A bundle.js paketo šaknyje.
  • "postinstall": "node bundle.js" viduje package.json.
  • Saugyklų pavadinimai Shai Hulud.
  • „GitHub“ darbo eigos, kuriose yra ${{ toJSON(secrets) }}.

Elgesio IoC

Be failų parašų, kirminų aktyvumas pasireiškia ir elgesiu. Pavyzdžiui:

  • Staigūs npm publikavimo įvykių pliūpsniai iš vieno prižiūrėtojo.
  • Nauji darbo srautai, kurie perduoda duomenis išoriniams galiniams taškams.
  • Išsiunčiamos POST užklausos, suaktyvintos CI vykdytojų.
  • Neseniai sukurtos viešos saugyklos su užkoduotais „blob“ failais.

Greitos medžioklės

Išvada: pamokos iš Shai-Hulud

Geriausios Shai-Hulud tiekimo grandinės ataka „npm“ paketuose esantis virusas rodo, kokia trapi tapo šiandieninė programinės įrangos tiekimo grandinė. Šis kirminas ne tik pridėjo kenkėjišką kodą. Jis pavogė žetonus, išsiuntė duomenis ir automatiškai save iš naujo publikavo. Dėl šios priežasties ataka išplito per kelias valandas, o ne savaites.

Programuotojams ir „DevOps“ komandoms pamokos aiškios:

  • Kiekvienas diegimas paleidžia kodą. Net ir įprastas „npm“ paketas gali paslėpti įdiegimo slieką.
  • Kiekvienas žetonas turi didelę vertę. Pavogus, jis gali būti panaudotas kenkėjiškoms programoms platinti toliau.
  • Kiekvienas pipeline poreikių patikrinimai. Be guardrails Kalbant apie priklausomybes, darbo eigas ir paslaptis, vienas kompromisas gali greitai paveikti gamybą.

Todėl norint sustabdyti tokias atakas kaip „Shai-Hulud“, reikia automatinių ir lengvai įgyvendinamų valdiklių. Komandos turėtų nuskaityti npm paketus prieš diegimą, naudoti užrakinimo failų versijas, aptikti keistą publikavimo veiklą ir trumpai naudoti žetonus. Šie veiksmai nebėra pasirenkami. Jie yra šiuolaikinių sistemų atsparumo pagrindas. pipelines.

„Xygeni“ įmonėje Shai-Hulud tiekimo grandinės ataką laikome įspėjimu visai atvirojo kodo ekosistemai. Tvarus kelias į priekį – tiekimo grandinės saugumą įtraukti tiesiai į kūrimo procesą, toje vietoje, kur kuriamas kodas, npm paketai ir... pipelines prisijungti.

Žemiau pateikiamas visas „npm“ paketų ir versijų, apie kurias pranešta kaip pažeistas „Shai-Hulud“, sąrašas. Naudokite jį, kad patikrintumėte savo užrakinimo failus, registrus ir CI. pipelines ekspozicijai.

Pažeistų paketų sąrašas

📦 Pažeistų npm paketų peržiūra

Pakuotės Vardas versija Paskelbimo data
json-rules-engine-simplified0.2.12025-09-14T17:58:51.203Z
oro pilotas0.8.82025-09-14T18:35:07.600Z
mcp-žinių-grafikas1.2.12025-09-14T18:35:09.494Z
oro vadas0.3.12025-09-14T18:35:09.521Z
šuolio vartai0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/atgalinio-skambinimo-langas1.1.42025-09-14T20:31:38.479Z
@tnf-dev/api1.0.82025-09-14T20:31:39.547Z
@tnf-dev/js1.0.82025-09-14T20:31:41.251Z
@tnf-dev/mui1.0.82025-09-14T20:31:41.259Z
@tnf-dev/core1.0.82025-09-14T20:31:42.728Z
@teselagen/react-table6.10.202025-09-14T20:37:08.597Z
@hestjs/demo0.1.22025-09-14T20:45:52.348Z
@nexe/eslint-config0.1.12025-09-14T20:45:53.625Z
@hestjs/eslint-config0.1.22025-09-14T20:45:55.044Z
@nexe/config-manager0.1.12025-09-14T20:45:55.066Z
@nexe/logger0.1.32025-09-14T20:45:55.170Z
@hestjs/logger0.1.62025-09-14T20:45:55.197Z
@hestjs/validation0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
➡️ Peržiūrėti visą pažeistų paketų sąrašą
Pakuotės Vardas versija Paskelbimo data
json-rules-engine-simplified0.2.12025-09-14T17:58:51.203Z
oro pilotas0.8.82025-09-14T18:35:07.600Z
mcp-žinių-grafikas1.2.12025-09-14T18:35:09.494Z
oro vadas0.3.12025-09-14T18:35:09.521Z
šuolio vartai0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/atgalinio-skambinimo-langas1.1.42025-09-14T20:31:38.479Z
@tnf-dev/api1.0.82025-09-14T20:31:39.547Z
@tnf-dev/js1.0.82025-09-14T20:31:41.251Z
@tnf-dev/mui1.0.82025-09-14T20:31:41.259Z
@tnf-dev/core1.0.82025-09-14T20:31:42.728Z
@teselagen/react-table6.10.202025-09-14T20:37:08.597Z
@hestjs/demo0.1.22025-09-14T20:45:52.348Z
@nexe/eslint-config0.1.12025-09-14T20:45:53.625Z
@hestjs/eslint-config0.1.22025-09-14T20:45:55.044Z
@nexe/config-manager0.1.12025-09-14T20:45:55.066Z
@nexe/logger0.1.32025-09-14T20:45:55.170Z
@hestjs/logger0.1.62025-09-14T20:45:55.197Z
@hestjs/validation0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
@hestjs/cqrs0.1.62025-09-14T20:45:55.966Z
@hestjs/skaliaras0.1.72025-09-14T20:45:56.386Z
ng2-failo-įkėlimas7.0.32025-09-15T02:44:29.555Z
kondensatoriaus pranešimų tvarkyklė0.0.22025-09-15T04:54:48.431Z
kondensatoriaus-įskiepio-vonage1.0.22025-09-15T04:54:48.501Z
kondensatoriaus-įskiepio-sveikatos-programėlė0.0.22025-09-15T04:54:48.704Z
kondensatoriaus „Android“ leidimai0.0.42025-09-15T04:54:48.753Z
VoIP skambučių rinkinys1.0.22025-09-15T04:54:49.223Z
kondensatoriaus-įskiepis-ihealth1.1.82025-09-15T04:55:08.113Z
@art-ws/common2.0.222025-09-15T05:21:15.411Z
@art-ws/config-eslint2.0.42025-09-15T05:21:17.199Z
ngx-ws1.1.52025-09-15T05:21:17.514Z
@art-ws/slf2.0.152025-09-15T05:21:17.524Z
@art-ws/http-server2.0.212025-09-15T05:21:17.745Z
pm2-gelf-json1.0.42025-09-15T05:21:18.413Z
@art-ws/di2.0.282025-09-15T05:21:18.488Z
@art-ws/di-node2.0.132025-09-15T05:21:18.849Z
@art-ws/config-ts2.0.72025-09-15T05:21:19.408Z
@art-ws/db-context2.0.212025-09-15T05:21:19.814Z
@art-ws/openapi0.1.92025-09-15T05:21:19.969Z
@art-ws/web-app1.0.32025-09-15T05:21:20.383Z
@art-ws/ssl-info1.0.92025-09-15T05:21:20.927Z
sca-tools-software-composition-analyses-tools
Prioritetizuoti, pašalinti ir apsaugoti savo programinės įrangos rizikas
Gaukite nemokamą paskyrą.
Nebūtina kreditinės kortelės.

Apsaugokite savo programinės įrangos kūrimą ir tiekimą

su „Xygeni“ produktų rinkiniu