Shai hulud - paketa npm - sulm në zinxhirin e furnizimit

Shai-Hulud: Krimbi i Paketave npm i Shpjeguar

TL; DR

Më 14 shtator 2025, studiuesit identifikuan Shai Hulud, një krimb vetë-riprodhues i fshehur brenda paketa npm, duke e kthyer një përditësim rutinë të varësisë në një përditësim në shkallë të plotë sulmi i zinxhirit të furnizimitU pa për herë të parë në @ctrl/tinycolor paketë nga Daniel dos Santos Pereira, Shai-Hulud mbledh sekrete, i nxjerr ato përmes depove dhe rrjedhave të punës në GitHub, dhe ripublikon veten në të gjithë regjistrin duke përdorur kredenciale të vjedhura. Brenda disa ditësh, numri i paketave të infektuara u rrit nga dhjetëra në qindra, duke konfirmuar se Shaihulud Nuk është vetëm një tjetër trojan, por një krimb i projektuar për t'u përhapur automatikisht në të gjithë ekosistemin npm.

ndikimi: Çdo zhvillues ose drejtues CI që instalon paketa publike npm është në rrezik.

Veprimet e menjëhershme: bllokoni versionet e njohura, kaloni në instalime vetëm me kyçje skedarësh, rrotulloni tokenët npm dhe GitHub, auditoni rrjedhat e punës dhe monitoroni për Tregues Komprometimi (IoC).

Çfarë ndodh?

La Sulmi i zinxhirit të furnizimit Shai-Hulud në paketat npm është një nga incidentet më shkatërruese në kujtesën e fundit. Ndryshe nga trojanët e izoluar, ky krimb përzihet vjedhja e kredencialeve, nxjerrja automatike e të dhënave dhe vetë-replikimiSi pasojë, afati kohor i infeksionit u tkurr nga javë në vetëm orë.

Për ekipet DevOps, mësimi është i qartë: nëse çdo instalim mund të ekzekutojë kod, atëherë çdo përditësim i varësisë është një pikë e mundshme shkeljeje.

Vektori i mundshëm fillestar dhe kredencialet e synuara

Analiza e hershme tregon se sulmi ka të ngjarë të ketë filluar me kredencialet e vjedhuraPër shembull, fushatat e phishing-ut që falsifikojnë npm-në. login ose kërkesat e MFA-së mund të kenë kapur tokenët e zhvilluesve. Pasi sulmuesit fituan atë pikëmbështetje të parë, krimbi u përhap duke u integruar në paketa npm dhe duke vjedhur më shumë sekrete nga:

  • skedarët e konfigurimit npm si .npmrc, që shpesh përmbajnë tokena publikimi.
  • Variablat e mjedisit dhe konfigurime me GitHub PATs dhe CI/CD sekretet.
  • Pikat fundore të meta të dhënave në cloud (AWS, GCP, Azure) duke dhënë kredenciale jetëshkurtra për lëvizje anësore.

Prandaj, vjedhja e kredencialeve u bë platforma e nisjes. Me tokena npm të vlefshëm dhe sekrete GitHub, Shai-Hulud mund të vetë-replikohej në paketa dhe depo të shumta pa përpjekje shtesë njerëzore.

Ndikimi ekzekutiv i sulmit në zinxhirin e furnizimit Shai-Hulud

Shai-Hulud është ende aktiv sot. Ky krimb përshpejton afatin kohor të ndikimit. Ajo që dikur zgjaste javë me një trojan, tani zhvillohet brenda orësh. Si rezultat, Përhapja është më e shpejtë dhe më e vështirë për t’u përmbajtur. Ai përparon duke:

  • Vjedhja e tokenëve të publikimit npm dhe sekreteve të GitHub.
  • Duke u ribotuar në paketa të tjera npm.
  • Shtimi i rrjedhave të punës të GitHub Actions me qëllim të keq për qëndrueshmëri.

Kush preket:

Çdo ekip që instalon paketa publike npm është i ekspozuar. Për më tepër, zhvilluesit me tokena npm ose GitHub të ruajtura në memorje përballen me rrezik të lartë. Ekzekutuesit e CI që përdorin sekrete me fushëveprim të gjerë janë gjithashtu të prekshëm.

Risku i biznesit

Ndikimi në biznes rritet me shpejtësi. Tokenët e vjedhur mund të çojnë në marrjen e llogarisë, rrëmbimin e paketave dhe madje edhe keqpërdorimin e cloud-it. Përveç kësaj, vazhdimësia në rrjedhat e punës së GitHub e bën më të vështirë pastrimin e saj. Prandaj, ekipet duhet ta trajtojnë Shai-Hulud si një incident të vazhdueshëm, jo ​​si një incident të mbyllur.

Si funksionon sulmi i zinxhirit të furnizimit Shai-Hulud në paketat npm

Objektivat dhe motivi i sulmuesit

Fushata optimizon për tre gjëra:

  • Objektivi i parë është të vjedh kredencialet në shkallë të gjerë nga laptopët e zhvilluesve dhe ekzekutuesit e CI. Kjo përfshin tokenët e publikimit npm, tokenët GitHub dhe kredencialet e cloud. Në fakt, analiza të shumëfishta konfirmojnë mbledhjen sistematike të sekreteve, siç është ekzekutimi i TruffleHog dhe pyetja e pikave fundore të meta të dhënave në cloud.
  • Objektivi i dytë është të përhapet automatikisht duke abuzuar me të drejtat e publikimit të mirëmbajtësve të kompromentuar. Si rezultat, një pikëmbështetje zgjerohet shpejt në shumë të tjera, pasi versionet e reja të infektuara të paketave të tjera shfaqen pa përpjekje shtesë njerëzore.
  • Objektivi i tretë është të vazhdojnë dhe nxirren në mënyrë të besueshme përmes infrastrukturës GitHub. Sulmuesit krijojnë një depo publike të quajtur "Shai-Hulud" me një bazë të dyfishtë64 të dhëna.json, dhe përveç kësaj ata vendosin një rrjedhë pune që serializon ${{ nëJSON (sekrete) }} dhe e poston atë në një webhook statik.

Shpërblimi i mundshëm përfshin akses afatgjatë në regjistra dhe kod burimor, lëvizje të shpejtë anësore në llogaritë cloud dhe mundësinë për ta armatosur më tej zinxhirin e furnizimit. Raportimi publik tregon se depot private i janë dorëzuar publikut me një “-migrim” prapashtesë, e cila rrit ekspozimin ndaj të dhënave dhe momentumin

Brenda ngarkesës Shai-Hulud: pako.js në Paketat npm

Shai-Hulud anijet si një i madh, i paketuar në Webpack dhe shumë i minimizuar Skedari JavaScript (pako.js, rreth 3–3.7 MB) që ekzekutohet nga një post-instalim lidhu package.jsonSi pasojë, Çdo instalim aktivizon automatikisht ngarkesën. Ky dizajn fsheh identifikuesit, kompreson rrjedhën e kontrollit dhe e shtyn të gjithë logjikën në një objekt të vetëm që ekzekutohet gjatë instalimit. Analistët konfirmojnë vazhdimisht bashkimin e Webpack, madhësinë e pazakontë të skedarëve dhe ekzekutimin në kohën e instalimit.

Tiparet e turbullimit dhe anti-analizës që do të shihni në mostra:

  • Grafiku i modulit të minimizuar me ID numerike të moduleve, komente të rralla dhe rrjedhë kontrolli të rrafshuar. Për më tepër, Kjo strukturë e bën rishikimin manual jashtëzakonisht të vështirë.
  • Fshehja e vargut nëpërmjet shtresave base64 dhe ndihmësve të ndërtimit. Për shembull, Kodimi dhe dekodimi i përsëritur base64 zakonisht shfaqet rreth rutinave të eksfiltrimit.
  • Dërgim dinamik përmes vlerësojmodele -style dhe trupa funksionesh të gjeneruara, duke i mundësuar kështu kodit të ndryshojë sjelljen gjatë kohës së ekzekutimit.
  • Filtrimi i sistemit operativ të preferohet ekzekutimi në Linux dhe macOS, veçanërisht në kompjuterët CI dhe laptopët e zhvilluesve.

Nga një këndvështrim funksional, pakoja është modulare. Shkrimet përshkruajnë module për zbulimin e sistemit operativ, skanimet sekrete të sistemit të skedarëve dhe git, aksesin në cloud SDK, operacionet e GitHub API dhe një motor përhapjeje që modifikon paketa të tjera që zotëron mirëmbajtësi. Në fakt, StepSecurity dhe ReversingLabs nxjerrin në pah një funksion që përditëson automatikisht paketat me grepin keqdashës.

Ekzekutimi në Kohën e Instalimit në Shai-Hulud: Si e aktivizojnë krimbin paketat npm

Sulmi fillon kur postinstall ekzekuton nyjen pako.js. Në këtë pikë, skripti inicializohet dhe çpaketon gjendjen e punës në memorie, duke përgatitur terrenin për funksionimin e plotë të krimbit.

Zbulimi dhe korrja

  • Ngarkesa dumps process.env dhe skanon skedarët lokalë për sekrete me entropi të lartë dhe prefikse tokenësh. Përveç kësaj, ai zgjeron mbulimin duke ekzekutuar TruffleHog.
  • Ai pyet pikat fundore të meta të dhënave në cloud për të mbledhur kredencialet jetëshkurtra. Për shembull, thirrje për 169.254.169.254 në AWS ose metadata.google.internal në GCP shpesh shfaqen te nikoqirët e infektuar.
  • Si pasojë, Çdo kredencial i gjetur bëhet menjëherë i përdorshëm për të publikuar paketa të reja npm ose për të nxitur rrjedhat e punës në GitHub.

exfiltration

  • Krimbi krijon një depo të re në GitHub me emrin Shai Hulud dhe shkruan një kodim të dyfishtë base64 data.json me detaje të platformës, informacione të mjedisit dhe sekrete. Siç mund të shihet, kjo sjellje e zhurmshme është e lehtë për t'u dalluar nëse mbrojtësit dinë ku të kërkojnë.
  • Gjithashtu instalon një rrjedhë pune të GitHub Actions, shpesh në një degë të quajtur shai-hulud, që serializon ${{ toJSON(secrets) }} dhe i poston të dhënat në një webhook statik. Për më tepër, ky rrjedhë pune vazhdon derisa dikush ta heqë atë në mënyrë aktive.

Shumim

  • Me çdo token npm të zbuluar, ngarkesa numëron të gjitha paketat në pronësi të mirëmbajtësit të kompromentuar. Pastaj, merr çdo skedar tarball, injekton bundle.js dhe një hyrje pas instalimit, dhe e riboton paketën.
  • Si rezultat, dhjetëra pako të infektuara mund të shfaqen brenda pak orësh, duke shumëzuar rrezen e shpërthimit në të gjithë ekosistemin.

Këmbëngulja dhe ekspozimi

  • Krimbi mban gjallë rrjedhat e punës keqdashëse dhe, në disa raste, i kthen depot private në publike me një “-migrim” prapashtesë. Në përgjithësi, kjo siguron që sulmuesi të mbajë një pikëmbështetje dhe të maksimizojë rrjedhjen e të dhënave.

Shënim për zbulimin e çelësit
Ky përdorim i pazakontë i ${{ toJSON(secrets) }} në rrjedhat e punës të Actions është e rrallë. Prandaj, Ekipet duhet ta trajtojnë atë si një tregues të sinjalit të lartë gjatë gjuetisë.

Model i pastruar i rrjedhës së punës që duhet të kërkoni

Ky përdorim i pazakontë i JSON (sekrete) në Veprime është një tregues me sinjal të lartë në këtë incident.

Pseudo-kod përhapjeje të nivelit të lartë (i sigurt, përshkrues)

Analistët e vunë re këtë lak në shkallë të gjerë, gjë që shpjegon kërcimin e shpejtë nga dhjetëra në qindra paketa të infektuara.

Pse ky është një krimb në një ekosistem paketash

Një krimb është një program keqdashës që përhapet vetë pa kërkuar hapa manualë nga operatori në çdo fazë. Në sistemet operative, krimbat zakonisht shfrytëzojnë dobësitë e rrjetit për të lëvizur nga një makinë në tjetrën. Në të kundërt, Shai-Hulud vepron brenda regjistrit npm. Rruga e tij efikase është përmes ripërdorimi i kredencialeve.

Krimbi shfrytëzon token-et e vjedhura të publikimit npm. Sapo merr kredenciale të vlefshme, ai ripublikon versionet e infektuara nën paketa të tjera në pronësi të të njëjtit mirëmbajtës. Më pas, këto paketa instalohen nga zhvillues ose ekzekutues të CI-së që nuk dyshojnë, dhe cikli përsëritet.

Për këtë arsye, analistët e sigurisë, përfshirë Lexim i errët, klasifikoni Shai-Hulud si një krimb vetë-riprodhues në vend të një trojan të thjeshtë ose një incidenti gabimi në shtyp. Dallimi është i rëndësishëm: një trojan zakonisht kompromenton një strehues, por një krimb e amplifikon ndikimin e tij automatikisht në të gjithë një ekosistem.

Fletë me kod “Si funksionon”

Për të përmbledhur ciklin jetësor të Shai-Hulud, ja një kundërthëniecisNdarja e hapave të saj kryesorë:

  • Një paketë me post-instalim është instaluar, dhe bundle.js ekzekuton.
  • Ngarkesa nxjerr variablat e mjedisit, skanon skedarët dhe historikun e git, ekzekutohet TruffleHogdhe pyet shërbimet e meta-datave në cloud. Si pasojë, çdo sekret i gjetur bëhet menjëherë i dobishëm.
  • Ekfiltrimi ndodh në dy mënyra: së pari, duke krijuar një depo publike të quajtur Shai Hulud me një kodim të dyfishtë baze64 data.json; së dyti, duke krijuar një rrjedhë pune GitHub Actions që poston ${{ toJSON(secrets) }} në një webhook.
  • Duke përdorur çdo token npm të vjedhur, krimbi ripublikon të gjitha paketat e tjera në pronësi të mirëmbajtësit të kompromentuar me të njëjtin grep keqdashës. Në këtë mënyrë, infeksioni shumëfishohet me shpejtësi.
  • Së fundmi, sulmuesi mban më shumë sekrete, më shumë paketa për të përhapur dhe këmbëngulja brenda llogarive dhe depove të GitHub.

Si ta shmangni këtë klasë sulmi, praktikisht

Shai-Hulud është një zile zgjimi. Një krimb që vjedh token-e dhe ribotohet nuk është një rrezik në të ardhmen, ai është aktiv në... Ekosistemi i paketave npm sot. Për të parandaluar këtë lloj sulmi i zinxhirit të furnizimit, ekipet kanë nevojë për kontrolle që janë të programueshme, të automatizuara dhe të zbatuara drejtpërdrejt në CI/CD pipelines. Këto janë të njëjtat mbrojtje që mund t’i zbatoni tashmë me Xygeni.

Ndalo objektet e këqija te porta

Duhet të skanoni paketat npm dhe tarball-et përpara se të arrijnë te zhvilluesit ose punët CI. bundle.js skedarë, postinstalim i dyshimtë hooks, dhe shënuesit e errësimit shërbejnë të gjithë si flamuj të hershëm paralajmërues. Për më tepër, zbatimi i periudhave të qetësimit dhe versioneve të fiksuara në pipelines parandalon konsumimin automatik të lëshimeve të freskëta dhe të paverifikuara.

kalit CI/CD sipas parazgjedhjes

Guardrails in CI/CD janë thelbësore. Ato refuzojnë bashkimet ose instalimet që prezantojnë skripte ose skedarë binare të rinj. Në të njëjtën kohë, ato bllokojnë rrjedhat e punës që serializojnë sekretet ose përpiqen të krijojnë postime të jashtme. Ekipet duhet të kërkojnë gjithashtu instalime vetëm me lockfile (npm ci) në të gjitha pipelines në mënyrë që grupet e varësive të mbeten të riprodhueshme dhe të sigurta.

Zvogëloni rrezen e shpërthimit të tokenit

Sekretet nuk duhet të bëhen pika të vetme dështimi. Skanoni vazhdimisht kodin, konfigurimet dhe pipeline prodhimi për kredencialet e ekspozuaraTokenët duhet të kenë një fushëveprim të ngushtë, duke pasur parasysh jetëgjatësi të shkurtër dhe të rrotullohen automatikisht kur zbulohet ekspozimi. Si rregull, trajtoni çdo token të përdorur në një host që ekzekutoi një postinstalim të dyshimtë si të kompromentuar.

Shihni sjelljen e krimbave herët

Zbulimi i anomalisë është çelësi. Për shembull, rritjet e papritura të ngjarjeve të publikimit të npm, rrjedhat e reja të punës që shfaqen pa arsye ose depot e reja publike të mbushura me skedarë të koduar çuditërisht mund të sinjalizojnë aktivitetin e krimbave. Prandaj, ekipet duhet të ngrenë alarme shpejt dhe të izolojnë çdo mirëmbajtës ose ekzekutues që tregon këto shenja paralajmëruese.

Rregulloni shpejt pa prishur ndërtimet

Shpejtësia dhe siguria duhet të shkojnë së bashku. Automatizuar. pull requests mund të zëvendësojë paketat npm të kompromentuara me versione të verifikuara. Përveç kësaj, arritshmëria shfrytëzueshmëri Analiza siguron që përmirësimet të mbeten minimale dhe të qëndrueshme. Së fundmi, rindërtoni CI-të e prekura nga imazhe të pastra pasi të konfirmohet ekspozimi, duke parandaluar përhapjen e mëtejshme të sulmit.

Treguesit e Kompromisit (IoC)

Kur analizojnë Shai-Hulud, ekipet duhet të kenë kujdes për të dyja IoC statike në dosje dhe IoC-të e sjelljes in pipelineSë bashku, këto sinjale ndihmojnë në zbulimin e hershëm të infeksioneve dhe reagimin përpara se krimbi të përhapet më tej.

IoC-të statike

Përputhja e mëposhtme e përmbledhjeve SHA-256 u vëzhgua bundle.js mostra:

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

Për më tepër, kini kujdes për këto modele të përsëritura:

  • A bundle.js në rrënjën e paketës.
  • "postinstall": "node bundle.js" brenda package.json.
  • Depozitat e emëruara Shai Hulud.
  • Rrjedhat e punës në GitHub që përmbajnë ${{ toJSON(secrets) }}.

IoC-të e sjelljes

Përtej nënshkrimeve të skedarëve, aktiviteti i krimbave zbulohet përmes sjelljes. Për shembull:

  • Shpërthime të papritura të publikimit të ngjarjeve të npm nga një mirëmbajtës.
  • Flukse të reja pune që i çojnë të dhënat në pikat fundore të jashtme.
  • Kërkesat POST dalëse të aktivizuara nga ekzekutuesit CI.
  • Depo publike të krijuara së fundmi me blob të koduara.

Gjueti të shpejta

Përfundim: Mësime nga Shai-Hulud

La Sulmi në zinxhirin e furnizimit Shai-Hulud në paketat npm tregon se sa i brishtë është bërë zinxhiri i furnizimit me softuer të sotëm. Ky krimb bëri më shumë sesa thjesht shtoi kod të dëmshëm. Ai vodhi tokena, dërgoi të dhëna dhe më pas e ribotoi veten automatikisht. Për shkak të kësaj, sulmi u përhap brenda orësh në vend të javëve.

Për zhvilluesit dhe ekipet DevOps, mësimet janë të qarta:

  • Çdo instalim ekzekuton kod. Edhe një paketë e zakonshme npm mund të fshehë një krimb pas instalimit.
  • Çdo shenjë ka vlerë të lartë. Pasi të vidhet, mund të përdoret për të përhapur më tej programet keqdashëse.
  • çdo pipeline ka nevojë për kontrolle. Pa guardrails mbi varësitë, rrjedhat e punës dhe sekretet, një kompromis mund të godasë shpejt prodhimin.

Prandaj, ndalimi i sulmeve si Shai-Hulud kërkon kontrolle që janë automatike dhe të lehta për t'u zbatuar. Ekipet duhet të skanojnë paketat npm para instalimeve, të përdorin ndërtime të skedarëve të kyçur, të zbulojnë aktivitete të çuditshme publikimi dhe t'i mbajnë tokenët jetëshkurtër. Këta hapa nuk janë më opsionalë. Në vend të kësaj, ato janë themeli i qëndrueshmërisë në botën moderne. pipelines.

Në Xygeni, ne e shohim sulmin e zinxhirit të furnizimit Shai-Hulud si një paralajmërim për të gjithë ekosistemin me burim të hapur. Mënyra e qëndrueshme përpara është të sjellim sigurinë e zinxhirit të furnizimit direkt në procesin e zhvillimit, në pikën ku kodi, paketat npm dhe pipelines lidh.

Më poshtë është lista e plotë e paketave dhe versioneve npm të raportuara si të kompromentuara në Shai-Hulud. Përdoreni atë për të kontrolluar skedarët e kyçur, regjistrat dhe CI-në tuaj. pipelines për ekspozim.

Lista e paketave të kompromentuara

📦 Pamje paraprake e paketave npm të kompromentuara

Emri i Paketuesit Version Publikoni datën
json-rules-engine-e-thjeshtësuar0.2.12025-09-14T17:58:51.203Z
pilot ajror0.8.82025-09-14T18:35:07.600Z
grafiku-i-njohurive-mcp1.2.12025-09-14T18:35:09.494Z
komandant ajror0.3.12025-09-14T18:35:09.521Z
portë hyrëse0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/dritare-kthimi-e-thirrjes1.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/menaxher-konfigurimi0.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/validim0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
➡️ Shikoni Listën e Plotë të Paketave të Kompromentuara
Emri i Paketuesit Version Publikoni datën
json-rules-engine-e-thjeshtësuar0.2.12025-09-14T17:58:51.203Z
pilot ajror0.8.82025-09-14T18:35:07.600Z
grafiku-i-njohurive-mcp1.2.12025-09-14T18:35:09.494Z
komandant ajror0.3.12025-09-14T18:35:09.521Z
portë hyrëse0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/dritare-kthimi-e-thirrjes1.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/menaxher-konfigurimi0.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/validim0.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/skalar0.1.72025-09-14T20:45:56.386Z
ngarkimi-i-skedarit-ng27.0.32025-09-15T02:44:29.555Z
trajtuesi i njoftimeve të kondensatorit0.0.22025-09-15T04:54:48.431Z
plugin-i-kondensatorit-vonage1.0.22025-09-15T04:54:48.501Z
shtojca-e-kondensatorit-healthapp0.0.22025-09-15T04:54:48.704Z
kondensatorandroidlejet0.0.42025-09-15T04:54:48.753Z
VoIP-callkit1.0.22025-09-15T04:54:49.223Z
shtojca-e-kondensatorit-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
mjetet-e-për-përbërjes-së-softuerit-sca-tools
Përparësoni, korrigjoni dhe siguroni rreziqet e softuerit tuaj
Merrni Llogarinë tuaj Falas.
Nuk kërkohet kartë krediti.

Siguroni Zhvillimin dhe Ofrimin e Softuerit tuaj

me Xygeni Product Suite