Šai huluds — NPM paketes — piegādes ķēdes uzbrukums

Šai-Huluds: NPM pakotņu tārps ir izskaidrots

TL; DR

2025. gada 14. septembrī pētnieki identificēja Šajs Huluds, iekšā paslēpts pašreplicējošs tārps npm pakotnes, pārvēršot rutīnas atkarības atjauninājumu par pilna mēroga atjauninājumu piegādes ķēdes uzbrukumsPirmo reizi pamanīts @ctrl/tinycolor Ar Daniela dos Santosa Pereiras paketi Shai-Hulud ievāc noslēpumus, izfiltrē tos, izmantojot GitHub repozitorijus un darbplūsmas, un atkārtoti publicē sevi reģistrā, izmantojot nozagtus akreditācijas datus. Dažu dienu laikā inficēto pakotņu skaits pieauga no desmitiem līdz simtiem, apstiprinot, ka Šaihuluds nav tikai vēl viens Trojas zirgs, bet gan tārps, kas paredzēts automātiskai izplatīšanai NPM ekosistēmā.

Ietekme: Jebkurš izstrādātājs vai CI izpildītājs, kas instalē publiskas npm pakotnes, ir pakļauts riskam.

Tūlītējas darbības: bloķēt zināmās versijas, pārslēgties uz instalēšanu tikai ar bloķēšanas failiem, mainīt npm un GitHub tokenus, auditēt darbplūsmas un uzraudzīt apdraudējuma indikatorus (IoC).

Kas notiek?

The Shai-Hulud piegādes ķēdes uzbrukums npm paketēs ir viens no postošākajiem incidentiem pēdējā laikā. Atšķirībā no atsevišķiem Trojas zirgiem, šis tārps sajaucas akreditācijas datu zādzība, automatizēta eksfiltrācija un pašreplikācijaLīdz ar to inficēšanās ilgums saruka no nedēļām līdz tikai stundām.

DevOps komandām mācība ir skaidra: ja katra instalācija var izpildīt kodu, tad katrs atkarības atjauninājums ir potenciāls pārkāpuma punkts.

Iespējamais sākotnējais vektors un mērķtiecīgi atlasītie akreditācijas dati

Agrīna analīze norāda, ka uzbrukums, visticamāk, sākās ar nozagtas akreditācijasPiemēram, pikšķerēšanas kampaņas, kas vilto npm. login vai MFA uzvednes varēja būt ieguvušas izstrādātāju žetonus. Kad uzbrucēji ieguva pirmo vietu, tārps izplatījās, ieguldoties npm pakotnēs un zogot vairāk noslēpumu no:

  • npm konfigurācijas faili tāpat .npmrc, bieži vien satur publicēšanas žetonus.
  • Vides mainīgie un konfigurācijas ar GitHub PAT un CI/CD noslēpumi.
  • Mākoņa metadatu galapunkti (AWS, GCP, Azure), kas sniedz īslaicīgas pilnvaras sānu kustībai.

Tāpēc akreditācijas datu zādzība kļuva par palaišanas platformu. Ar derīgiem npm žetoniem un GitHub noslēpumiem Shai-Hulud varēja pašreplicēties vairākās pakotnēs un repozitorijos bez papildu cilvēka piepūles.

Šai-Huludas piegādes ķēdes uzbrukuma ietekme uz vadību

Šai-Huluds joprojām ir aktīvs. Šis tārps paātrina trieciena laika grafiku. Tas, kas kādreiz ar Trojas zirgu aizņēma nedēļas, tagad risinās dažu stundu laikā. Tā rezultātā, izplatība ir ātrāka un grūtāk ierobežojama. Tas virzās uz priekšu, izmantojot:

  • Npm publicēšanas žetonu un GitHub noslēpumu zagšana.
  • Pārpublicē sevi citās npm pakotnēs.
  • Ļaunprātīgu GitHub darbību darbplūsmu pievienošana noturības nodrošināšanai.

Kas tiek ietekmēts:

Jebkura komanda, kas instalē publiskas npm pakotnes, ir pakļauta riskam. Turklāt izstrādātājiem ar kešatmiņā saglabātiem npm vai GitHub tokeniem ir augsts risks. Arī CI palaistāji, kas izmanto plaša darbības jomas noslēpumus, ir neaizsargāti.

Biznesa risks

Ietekme uz uzņēmējdarbību strauji pieaug. Nozagti tokeni var izraisīt konta pārņemšanu, pakotņu nolaupīšanu un pat mākoņa ļaunprātīgu izmantošanu. Turklāt noturība GitHub darbplūsmās apgrūtina to tīrīšanu. Tāpēckomandām Shai-Hulud lieta jāuztver kā notiekošs incidents, nevis jau noslēgts.

Kā Shai-Hulud piegādes ķēdes uzbrukums darbojas npm pakotnēs

Uzbrucēja mērķi un motīvs

Kampaņa optimizē trīs lietas:

  • Pirmais mērķis ir zagt akreditācijas datus plašā mērogā no izstrādātāju klēpjdatoriem un CI runneriem. Tas ietver npm publicēšanas žetonus, GitHub žetonus un mākoņa akreditācijas datus. Faktiski vairākas analīzes apstiprina sistemātisku slepeno datu vākšanu, piemēram, TruffleHog palaišanu un mākoņa metadatu galapunktu vaicājumus.
  • Otrais mērķis ir izplatīt automātiski ļaunprātīgi izmantojot apdraudēto uzturētāju publicēšanas tiesības. Tā rezultātā viena ietekme ātri vien pārvēršas daudzās, jo bez papildu cilvēka piepūles parādās jaunas inficētas citu pakotņu versijas.
  • Trešais mērķis ir saglabājas un droši izfiltrējas izmantojot GitHub infrastruktūru. Uzbrucēji izveido publisku repozitoriju ar nosaukumu “Shai-Hulud” ar dubultu base64 dati.json, un turklāt viņi izveido darbplūsmu, kas serializē ${{ toJSON(noslēpumi) }} un ievieto to statiskā tīmekļa āķī.

Iespējamais ieguvums ietver ilgstošu piekļuvi reģistriem un pirmkodam, ātru horizontālu pārvietošanos uz mākoņkontiem un iespēju vēl vairāk ieroci izmantot piegādes ķēdi. Publiskie ziņojumi liecina, ka privātie krātuvju portfeļi ir pārvērsti publiski pieejamās pārvaldībās ar… "-migrācija" sufikss, kas palielina datu ekspozīciju un impulsu

Šai-Hulud kravas iekšpusē: bundle.js npm pakotnēs

Šai-Huluda kuģi kā liels, Webpack komplektā iekļauts un stipri samazināts JavaScript fails (bundle.js, aptuveni 3–3.7 MB) kas tiek izpildīts no pēc instalēšanas pieķerties pack.jsonLīdz ar to, Katra instalēšana automātiski aktivizē lietderīgo slodzi. Šis dizains slēpj identifikatorus, saspiež vadības plūsmu un visu loģiku apvieno vienā artefaktā, kas tiek izpildīts instalēšanas laikā. Analītiķi pastāvīgi apstiprina Webpack komplektēšanu, neparastu faila lielumu un izpildi instalēšanas laikā.

Apmulsināšanas un antianalīzes iezīmes, ko redzēsiet paraugos:

  • Samazināts moduļu grafiks ar skaitliskiem moduļu ID, reti komentāriem un saplacinātu vadības plūsmu. Turklāt, Šī struktūra padara manuālu pārskatīšanu ārkārtīgi sarežģītu.
  • Stīgu slēpšana izmantojot base64 slāņus un konstrukcijas palīgus. Piemēram, Atkārtota base64 kodēšana un dekodēšana parasti parādās ap eksfiltrācijas rutīnām.
  • Dinamiska nosūtīšana cauri evalstila modeļi un ģenerēti funkciju pamatelementi, tādējādi ļaujot kodam mainīt uzvedību izpildes laikā.
  • OS filtrēšana dot priekšroku Linux un macOS izpildei, īpaši CI Runners un izstrādātāju klēpjdatoros.

No funkcionālā viedokļa komplekts ir modulārs. Aprakstos ir aprakstīti moduļi operētājsistēmas noteikšanai, failu sistēmas un git slepeno kodu skenēšanai, mākoņa SDK piekļuvei, GitHub API darbībām un izplatīšanas dzinējam, kas rediģē citas uzturētāja īpašumā esošās pakotnes. Faktiski gan StepSecurity, gan ReversingLabs izceļ funkciju, kas automātiski atjaunina pakotnes ar ļaunprātīgo āķi.

Instalēšanas laika izpilde Shai-Hulud: Kā npm pakotnes aktivizē tārpu

Uzbrukums sākas, kad pēcinstalēšanas palaišanas mezgls bundle.js. Šajā brīdī skripts inicializē un izpako darba stāvokli atmiņā, sagatavojot augsni tārpa pilnīgai darbībai.

Atklāšana un ražas novākšana

  • Lietderīgā slodze izgāž failu process.env un skenē lokālos failus, meklējot augstas entropijas noslēpumus un marķieru prefiksus. Turklāt tā paplašina pārklājumu, palaižot TruffleHog.
  • Tas vaicā mākoņa metadatu galapunktus, lai apkopotu īslaicīgus akreditācijas datus. Piemēram, zvani uz 169.254.169.254 vietnē AWS vai metadata.google.internal uz GCP bieži parādās inficētos saimniekorganismos.
  • Līdz ar to, Jebkuru atrasto akreditācijas informāciju var nekavējoties izmantot jaunu npm pakotņu publicēšanai vai GitHub darbplūsmu virzīšanai.

Eksfiltrācija

  • Tārps izveido jaunu GitHub repozitoriju ar nosaukumu Šajs Huluds un raksta dubultu base64 kodējumu data.json ar platformas detaļām, vides izgāztuvēm un noslēpumiem. Kā redzams, šo trokšņaino uzvedību ir viegli pamanīt, ja aizstāvji zina, kur meklēt.
  • Tas arī ievieto GitHub darbību darbplūsmu, bieži vien uz filiāles ar nosaukumu šai-huluds, kas serializē ${{ toJSON(secrets) }} un ievieto datus statiskā tīmekļa āķī. Turklāt šī darbplūsma tiek saglabāta, līdz kāds to aktīvi noņem.

Pavairošana

  • Ar jebkuru atklātu npm marķieri, lietderīgā slodze uzskaita visas apdraudētā uzturētāja piederošās pakotnes. Pēc tam tā ielādē katru tarball, injicē bundle.js un postinstall ierakstu un atkārtoti publicē pakotni.
  • Tā rezultātā dažu stundu laikā var parādīties desmitiem inficētu paku, reizinot sprādziena rādiusu visā ekosistēmā.

Noturība un iedarbība

  • Tārps uztur ļaunprātīgas darbplūsmas un vairākos gadījumos pārvērš privātās krātuves publiskās formātā ar "-migrācija" sufikss. Kopumā tas nodrošina uzbrucējam stabilu pozīciju un palielina datu noplūdi.

Piezīme par atslēgu atpazīšanu
Šis neparastais lietojums ${{ toJSON(secrets) }} Darbību darbplūsmās tas ir reti sastopams. Tādēļ, komandām medību laikā tas jāuztver kā spēcīga signāla indikators.

Sanitizēts darbplūsmas modelis, kas jums jāmeklē

Šis neparastais lietojums uz JSON(noslēpumi) Darbībās šajā incidentā ir augsta signāla indikators.

Augsta līmeņa izplatīšanas pseidokods (drošs, aprakstošs)

Analītiķi novēroja šo cilpu plašā mērogā, kas izskaidro straujo lēcienu no desmitiem līdz simtiem inficētu pakotņu.

Kāpēc šis ir tārps pakotņu ekosistēmā

Tārps ir ļaunprogrammatūra, kas izplatās pati par sevi, neprasot manuālas operatora darbības katrā posmā. Operētājsistēmās tārpi parasti izmanto tīkla ievainojamības, lai pārvietotos no vienas iekārtas uz citu. Turpretī Shai-Hulud darbojas npm reģistra iekšpusē. Tā efektīvais ceļš ir caur akreditācijas datu atkārtota izmantošana.

Tārps izmanto nozagtas npm publicēšanas pilnvaras. Tiklīdz tas iegūst derīgus akreditācijas datus, tas atkārtoti publicē inficētās versijas citās pakotnēs, kas pieder tam pašam uzturētājam. Pēc tam šīs pakotnes instalē neko nenojaušoši izstrādātāji vai CI izpildītāji, un cikls atkārtojas.

Šī iemesla dēļ drošības analītiķi, tostarp Tumša lasīšana, klasificējiet Šai-Huludu kā pašreplicējošs tārps nevis vienkāršs Trojas zirgs vai drukas kļūdas incidents. Atšķirība ir svarīga: Trojas zirgs parasti apdraud vienu saimnieku, bet tārps automātiski pastiprina savu ietekmi visā ekosistēmā.

Špikerlapa “Kā tas darbojas”

Lai apkopotu Šai-Huluda dzīves ciklu, šeit ir mīnusscistā galveno darbību sadalījums:

  • Pakete ar pēc instalēšanas ir uzstādīts, un bundle.js izpilda.
  • Kravnesība izgāž vides mainīgos, skenē failus un git vēsturi, palaiž TruffleHogun veic vaicājumus mākoņa metadatu pakalpojumos. Līdz ar to jebkurš atrastais noslēpums kļūst nekavējoties noderīgs.
  • Eksfiltrācija notiek divos veidos: pirmkārt, izveidojot publisku repozitoriju ar nosaukumu Šajs Huluds ar dubultu base64 kodējumu data.json; otrkārt, ievietojot GitHub Actions darbplūsmu, kas publicē ${{ toJSON(secrets) }} uz tīmekļa āķi.
  • Izmantojot jebkuru nozagtu npm tokenu, tārps atkārtoti publicē visas pārējās paketes, kas pieder apdraudētajam uzturētājam, ar to pašu ļaunprātīgo āķi. Tādā veidā infekcija strauji vairojas.
  • Visbeidzot, uzbrucējam ir vairāk noslēpumu, vairāk pakotņu, ko izplatīt, un neatlaidība GitHub kontos un repozitorijos.

Kā praktiski izvairīties no šāda veida uzbrukumiem

Shai-Hulud ir modinātājzvans. Tārps, kas zog žetonus un atkārtoti publicē sevi, nav nākotnes risks, tas ir tiešraidē. npm pakotņu ekosistēma šodien. Lai novērstu šāda veida piegādes ķēdes uzbrukumskomandām ir nepieciešamas kontroles, kas ir programmējamas, automatizētas un tieši ieviešamas CI/CD pipelines. Šie ir tie paši aizsardzības mehānismi, ko jūs jau varat ieviest ar Ksigēni.

Apturiet sliktos artefaktus pie vārtiem

Pirms npm pakotnes un tarball faili nonāk izstrādātājos vai CI darbos, tie ir jānoskenē. bundle.js faili, aizdomīgi pēc instalēšanas hooks, un slēpšanas marķieri kalpo kā agrīni brīdinājuma signāli. Turklāt, ieviešot nogaidīšanas periodus un piespraustas versijas pipelines novērš svaigu, nepārbaudītu izlaidumu automātisku patērēšanu.

Pasargāt CI/CD pēc noklusējuma

Guardrails in CI/CD ir būtiski. Tie noraida apvienošanu vai instalēšanu, kas ievieš jaunus skriptus vai bināros failus. Vienlaikus tie bloķē darbplūsmas, kas serializē noslēpumus vai mēģina veikt ārējus ierakstus. Komandām vajadzētu arī pieprasīt instalācijas, kurās tiek izmantots tikai bloķēšanas fails (npm ci) visās pipelinetāpēc atkarību kopas paliek reproducējamas un drošas.

Samaziniet žetona sprādziena rādiusu

Noslēpumi nedrīkst kļūt par vienīgajiem kļūmes punktiem. Nepārtraukti skenējiet kodu, konfigurācijas un pipeline izvade priekš atklātas akreditācijas datiTokeniem jābūt šauri ierobežotiem, tiem jāpiešķir īss darbības laiks, un tie jāmaina automātiski, kad tiek konstatēta iedarbība. Parasti jebkurš tokens, kas tiek izmantots resursdatorā, kurš veica aizdomīgu pēcinstalēšanu, jāuzskata par kompromitētu.

Skatiet tārpu uzvedību agri

Anomāliju noteikšana ir galvenais. Piemēram, pēkšņi npm publicēšanas notikumu pieaugumi, jaunas darbplūsmas, kas parādās bez iemesla, vai jauni publiski repozitoriji, kas piepildīti ar dīvainiem kodētiem failiem, var liecināt par tārpu aktivitāti. Tāpēc komandām ir ātri jāizveido brīdinājumi un jāizolē visi uzturētāji vai izpildītāji, kas parāda šīs brīdinājuma zīmes.

Ātri labojiet, nesabojājot konstrukcijas

Ātrumam un drošībai jāiet roku rokā. Automatizēts pull requests var aizstāt kompromitētas npm pakotnes ar pārbaudītām versijām. Turklāt sasniedzamība un izmantojamība Analīze nodrošina minimālus un stabilus jauninājumus. Visbeidzot, pēc inficēšanās apstiprināšanas atjaunojiet skartos CI runnerus no tīriem attēliem, tādējādi novēršot uzbrukuma tālāku izplatīšanos.

Kompromisa rādītāji (IoC)

Analizējot Šai-Huludu, komandām jāpievērš uzmanība abiem aspektiem. statiskie IoC failos un uzvedības IoC in pipelines. Kopā šie signāli palīdz laikus atklāt infekcijas un reaģēt, pirms tārps izplatās tālāk.

Statiskie IoC

Novērota šāda SHA-256 kopsavilkumu atbilstība bundle.js paraugi:

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

Turklāt pievērsiet uzmanību šiem atkārtotajiem modeļiem:

  • A bundle.js pakotnes saknē.
  • "postinstall": "node bundle.js" iekšā package.json.
  • Nosauktie repozitoriji Šajs Huluds.
  • GitHub darbplūsmas, kas satur ${{ toJSON(secrets) }}.

Uzvedības IoC

Papildus failu parakstiem tārpu aktivitāte izpaužas arī to uzvedībā. Piemēram:

  • Pēkšņi npm publicēšanas notikumi no viena uzturētāja.
  • Jaunas darbplūsmas, kas nosūta datus uz ārējiem galapunktiem.
  • Izejošie POST pieprasījumi, ko aktivizē CI runners.
  • Nesen izveidotas publiskas krātuves ar kodētiem blobiem.

Ātrās medības

Secinājums: mācības no Šai-Huluda

The Šai-Huludas piegādes ķēdes uzbrukums npm pakotnēs redzamais parāda, cik trausla ir kļuvusi mūsdienu programmatūras piegādes ķēde. Šis tārps paveica vairāk nekā tikai pievienoja ļaunprātīgu kodu. Tas nozaga žetonus, nosūtīja datus un pēc tam automātiski atkārtoti publicēja sevi. Tā rezultātā uzbrukums izplatījās dažu stundu, nevis nedēļu laikā.

Izstrādātājiem un DevOps komandām mācība ir skaidra:

  • Katrā instalācijā tiek palaists kods. Pat parasta npm pakotne var paslēpt pēcinstalēšanas tārpu.
  • Katram žetonam ir augsta vērtība. Pēc nozagšanas to var izmantot ļaunprogrammatūras tālākai izplatīšanai.
  • Ik pipeline vajadzību pārbaudes. Bez guardrails attiecībā uz atkarībām, darbplūsmām un noslēpumiem viens kompromiss var ātri ietekmēt ražošanu.

Tāpēc tādu uzbrukumu kā Shai-Hulud apturēšanai ir nepieciešamas automātiskas un viegli īstenojamas kontroles. Komandām pirms instalēšanas ir jāpārbauda npm pakotnes, jāizmanto bloķēšanas failu versijas, jānosaka dīvainas publicēšanas darbības un jāsaglabā tokeni īslaicīgi. Šīs darbības vairs nav izvēles. Tā vietā tās ir mūsdienu noturības pamats. pipelines.

Uzņēmumā Xygeni mēs Shai-Hulud piegādes ķēdes uzbrukumu uzskatām par brīdinājumu visai atvērtā pirmkoda ekosistēmai. Ilgtspējīgs ceļš uz priekšu ir ieviest piegādes ķēdes drošību tieši izstrādes procesā, brīdī, kad tiek izstrādāts kods, npm pakotnes un... pipelines savienot.

Zemāk ir pilns npm pakotņu un versiju saraksts, par kurām ziņots kā apdraudētām Shai-Hulud. Izmantojiet to, lai pārbaudītu savus bloķēšanas failus, reģistrus un CI. pipelines iedarbībai.

Apdraudēto pakotņu saraksts

📦 Apdraudētu npm pakotņu priekšskatījums

Pakete Vārds versija Publicēšanas datums
json-rules-engine-simplified0.2.12025-09-14T17:58:51.203Z
gaisa pilots0.8.82025-09-14T18:35:07.600Z
mcp-knowledge-graph1.2.12025-09-14T18:35:09.494Z
gaisa komandieris0.3.12025-09-14T18:35:09.521Z
lēciena vārti0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/callback-window1.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/validācija0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
➡️ Skatīt pilnu apdraudēto pakotņu sarakstu
Pakete Vārds versija Publicēšanas datums
json-rules-engine-simplified0.2.12025-09-14T17:58:51.203Z
gaisa pilots0.8.82025-09-14T18:35:07.600Z
mcp-knowledge-graph1.2.12025-09-14T18:35:09.494Z
gaisa komandieris0.3.12025-09-14T18:35:09.521Z
lēciena vārti0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/callback-window1.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/validācija0.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/skalārs0.1.72025-09-14T20:45:56.386Z
ng2-faila augšupielāde7.0.32025-09-15T02:44:29.555Z
kondensatora paziņojumu apstrādātājs0.0.22025-09-15T04:54:48.431Z
kondensatora spraudņa vonage1.0.22025-09-15T04:54:48.501Z
kondensatora spraudņa veselības lietotne0.0.22025-09-15T04:54:48.704Z
kondensatora Android atļaujas0.0.42025-09-15T04:54:48.753Z
VoIP zvanu komplekts1.0.22025-09-15T04:54:49.223Z
kondensatora spraudnis-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-analysis-tools
Prioritizējiet, novērsiet un aizsargājiet savus programmatūras riskus
Iegūstiet savu bezmaksas kontu.
Nepieciešama kredītkarte.

Nodrošiniet programmatūras izstrādi un piegādi

ar Xygeni produktu komplektu