TL; DR
Di 14ê Îlona 2025an de, lêkolîneran destnîşan kirin Shai Hulud, kurmek xwe-zêde dibe ku di hundir de veşartî ye pakêtên npm, veguherandina nûvekirinek girêdayîbûna rûtîn bo nûvekirinek tevahî êrîşa zincîra dabînkirinêCara yekem li @ctrl/rengê piçûk pakêta ji hêla Daniel dos Santos Pereira ve hatî çêkirin, Shai-Hulud razên berhev dike, wan bi rêya depo û karûbarên GitHub derdixe, û xwe li seranserê qeydê bi karanîna bawernameyên dizî ji nû ve diweşîne. Di nav çend rojan de, hejmara pakêtên vegirtî ji dehan ber bi sedan ve çû, ku piştrast dike ku Şayhulud ne tenê trojanek din e, lê kurmek e ku ji bo belavkirina otomatîkî li seranserê ekosîstema npm hatî çêkirin.
Tesîr: Her pêşdebir an rêvebirê CI ku pakêtên npm yên giştî saz dike di xetereyê de ye.
Çalakiyên lezgîn: guhertoyên naskirî asteng bike, biguhere sazkirinên tenê-pelê kilît bike, tokenên npm û GitHub bizivirîne, herikên kar kontrol bike, û ji bo Nîşaneyên Lihevhatinê (IoC) çavdêrî bike.
Badana nava?
Ew Êrîşa zincîra dabînkirinê ya Shai-Hulud di pakêtên npm de yek ji bûyerên herî têkder ên di bîra dawî de ye. Berevajî trojanên îzolekirî, ev kurm tevlihev dibe dizîna bawernameyan, derxistina otomatîkî, û xwe-kopîkirinDi encamê de, dema enfeksiyonê ji hefteyan bo çend saetan kêm bû.
Ji bo tîmên DevOps, ders zelal e: heke her sazkirinek dikare kodê bicîh bîne, wê hingê her nûvekirina girêdayîbûnê xalek potansiyel a binpêkirinê ye.
Vektorên Destpêkê yên Gengaz û Bawernameyên Armanckirî
Analîza zû nîşan dide ku êrîş bi muhtemel dest pê kiriye pêbaweriyên dizînMînakî, kampanyayên phishingê yên ku npm-ê dixapînin. login yan jî fermanên MFA dibe ku tokenên pêşdebiran girtibin. Gava ku êrîşkaran ew lingê yekem bi dest xistin, kurm bi bicihkirina xwe di pakêtên npm de û dizîna bêtir razên ji: belav bû.
- pelên mîhengê npm çawa
.npmrc, ku pir caran nîşanên weşanê dihewîne. - Guherbarên jîngehê û mîhengkirin bi GitHub PATs û CI/CD razên.
- Xalên dawî yên metadataya ewr (AWS, GCP, Azure) ku ji bo tevgera lateral pêbaweriyên demkurt dide.
Ji ber vê yekê, dizîna bawernameyan bû cihê destpêkirinê. Bi nîşanên npm yên derbasdar û razên GitHub, Shai-Hulud dikaribû bêyî hewldana mirovî ya zêde li ser gelek pakêt û depoyan xwe dubare bike.
Bandora Rêveberiyê ya Êrîşa Zincîra Dabînkirinê ya Şay-Hulud
Shai-Hulud îro jî çalak e. Ev kurm dema bandorê leztir dike. Tiştê ku berê bi trojanekê re bi hefteyan digirt, niha di çend saetan de diqewime. Di encamê de, belavbûn zûtir û kontrolkirina wê dijwartir e. Ew bi rêya van rêbazan pêşve diçe:
- Dizîna tokenên weşana npm û razên GitHub.
- Xwe di pakêtên npm yên din de ji nû ve diweşîne.
- Ji bo domdariyê, herikînên kar ên GitHub Actions ên zirardar lê zêde dike.
Kî bandor dibe:
Her tîmek ku pakêtên npm yên giştî saz dike, rastî xetereyê tê. Wekî din, pêşdebirên ku xwediyê tokenên npm an GitHub ên cached in, bi xetereyek mezin re rû bi rû ne. Gerînendeyên CI yên ku razên berfireh bikar tînin jî xeternak in.
Rîska karsaziyê
Bandora karsaziyê bi lez mezin dibe. Tokenên dizî dikarin bibin sedema desteserkirina hesabê, revandina pakêtan, û heta bikaranîna xelet a ewr. Wekî din, mayîndebûna di karûbarên GitHub de paqijkirina wê dijwartir dike. Ji ber vê yekê, tîm divê Şay-Hulud wek bûyerek berdewam bihesibînin, ne wek bûyerek dawî.
Êrîşa Zincîra Dabînkirinê ya Shai-Hulud çawa di pakêtên npm de dixebite
Armanc û motîvasyona êrîşkar
Kampanya ji bo sê tiştan çêtirîn dike:
- Armanca yekem ew e ku dizîna bawernameyan bi pîvanek mezin ji laptopên pêşdebiran û xebitandinên CI. Ev nîşanên weşana npm, nîşanên GitHub, û bawernameyên ewr vedihewîne. Bi rastî, gelek analîz berhevkirina veşartî ya sîstematîk piştrast dikin, wekî xebitandina TruffleHog û lêpirsîna xalên dawî yên metadata ewr.
- Armanca duyemîn ew e ku bixweber belav bibe bi îstismarkirina mafên weşanê yên parastvanên xeternak. Di encamê de, yek pêgehek zû berfireh dibe û dibe gelek, ji ber ku guhertoyên nû yên vegirtî yên pakêtên din bêyî hewldana mirovî ya zêde derdikevin holê.
- Armanca sêyemîn ew e ku berdewam bike û bi awayekî pêbawer derxe bi rêya binesaziya GitHub. Êrîşkar depoyek giştî bi navê "Shai-Hulud" bi bingehek ducarî çêdikin64 data.json, û ji bilî vê, ew karekî diçînin ku rêzefîlm dike ${{ boJSON(raz) }} û wê li ser webhookek statîk dişîne.
Di nav qezencên muhtemel de gihîştina demdirêj a qeyd û koda çavkaniyê, tevgera bilez a lateral nav hesabên ewr, û vebijarka çekdarkirina zincîra dabînkirinê bêtir hene. Raporên giştî nîşan didin ku depoyên taybet bi ... ji bo raya giştî hatine veguheztin. "-koçberî" paşgir, ku eşkerekirina daneyan û momentûmê zêde dike
Di hundirê Barkêşiya Shai-Hulud de: bundle.js di Pakêtên npm de
Şai-Hulud wekî keştî dişîne mezin, bi pakêta Webpackê ve girêdayî û pir kêmkirî pelê JavaScript (bundle.js, nêzîkî 3–3.7 MB) ku ji a pêk tê piştî sazkirinê têketin pakêt.jsonDi encamê de, her sazkirin barkêşiyê bixweber çalak dike. Ev sêwiran nasnameyan vedişêre, herikîna kontrolê ditepisîne, û hemî mantiqê dixe nav yek berhema ku di dema sazkirinê de tê xebitandin. Analîst bi berdewamî pakkirina Webpack, mezinahiya pelê ya neasayî, û pêkanîna dema sazkirinê piştrast dikin.
Taybetmendiyên tevizandin û dij-analîzê ku hûn ê di nimûneyan de bibînin:
- Grafîka modulê ya biçûkkirî bi nasnameyên modulên hejmarî, şîroveyên kêm, û herikîna kontrolê ya daketî. Ji bilî vê, Ev avahî nirxandina destî pir dijwar dike.
- Veşartina têlan bi rêya qatên base64 û alîkarên avakirinê. Bo nimûne, Kodkirin û dekodkirina dubarekirî ya base64 bi gelemperî li dora rûtînên derxistinê xuya dibin.
- Şandina dînamîk bi saya evalşablonên -style û laşên fonksiyonên çêkirî, ji ber vê yekê dihêle ku kod di dema xebitandinê de tevgerê biguhezîne.
- Fîlterkirina OS-ê tercîhkirina xebitandina Linux û macOS-ê, nemaze li ser bikarhênerên CI û laptopên pêşdebiran.
Ji hêla fonksiyonel ve, panel modular e. Nivîsar modulên ji bo kifşkirina OS, skanên veşartî yên pergala pelan û git, gihîştina SDK-ya ewr, operasyonên GitHub API, û motorek belavbûnê ku pakêtên din ên ku xwediyê wan parastvan e diguherîne, vedibêjin. Bi rastî, StepSecurity û ReversingLabs her du jî fonksiyonek ronî dikin ku pakêtên bi çengela xerabkar bixweber nûve dike.
Bicîhanîna Dema Sazkirinê di Shai-Hulud de: Pakêtên npm çawa kurmê çalak dikin
Êrîş wê demê dest pê dike piştî sazkirinê girêkê dimeşîne bundle.js. Di vê gavê de, skrîpt rewşa xebatê di bîrê de dest pê dike û vedike, û rê li ber xebata tevahî ya kurmê vedike.
Vedîtin û berhevkirin
- Barkêş process.env datîne û pelên herêmî ji bo razên bi entropiya bilind û pêşgirên nîşanekan dişopîne. Wekî din, bi xebitandina TruffleHog berfirehiya mijarê fireh dike.
- Ew ji xalên dawî yên metadataya ewr lêpirsîn dike da ku bawernameyên temenkurt berhev bike. Bo nimûne, bang li
169.254.169.254li ser AWS an jîmetadata.google.internalli ser GCP bi gelemperî di mêvandarên vegirtî de xuya dibin. - Ji ber vê yekê, her bawernameyek ku were dîtin tavilê ji bo weşandina pakêtên npm yên nû an jî pêşvebirina herikên xebatê yên GitHub-ê tê bikar anîn.
Exfiltration
- Kurm depoyek nû ya GitHub-ê bi navê Shai Hulud û kodkirineke ducarî ya bi base64 dinivîse.
data.jsonbi hûrguliyên platformê, daneyên jîngehê û razên veşartî. Wekî ku tê dîtin, ev tevgera bi deng hêsan tê dîtin ger parêzvan bizanin li ku bigerin. - Ew her weha karîgeriyek GitHub Actions diçîne, pir caran li ser şaxek bi navê şay-hulud, ku rêzefîlm dike
${{ toJSON(secrets) }}û daneyan li ser webhookek statîk dişîne. Wekî din, ev herikîna kar berdewam dike heya ku kesek bi awayekî çalak wê jê bibe.
Propagasyon
- Bi her nîşaneya npm ya kifşkirî re, barkêş hemî pakêtên ku xwediyê wan parastvanê tahrîbkirî ne navnîş dike. Dûv re, ew her tarballê tîne, bundle.js û têketinek piştî sazkirinê derzî dike, û pakêtê ji nû ve diweşîne.
- Di encamê de, di nav çend demjimêran de bi dehan pakêtên vegirtî dikarin xuya bibin, û rêjeya teqînê li seranserê ekosîstemê zêde bikin.
Berdewamî û eşkerekirin
Ev kurm herikên kar ên zirardar zindî dihêle û di gelek rewşan de, depoyên taybet bi a veguhezîne giştî. "-koçberî" paşgir. Bi tevahî, ev yek piştrast dike ku êrîşkar lingê xwe diparêze û rijandina daneyan herî zêde dike.
Nîşeya tespîtkirina mifteyê
Ev bikaranîna neasayî ya ${{ toJSON(secrets) }} di herikînên xebatê yên Çalakiyan de kêm e. Ji ber vê yekê, divê tîm di dema nêçîrê de wê wekî nîşaneyek sînyala bilind bihesibînin.
Şêweya karê paqijkirî ku divê hûn lê bigerin
Ev bikaranîna neasayî ya ber JSON (nehênî) di Çalakiyan de di vê bûyerê de nîşaneyek sînyala bilind e.
Koda belavbûna asta bilind a pseudo-kodê (ewle, raveker)
Analîstan ev xeleka bi pîvanek mezin dîtin, ku ev jî zêdebûna bilez ji bi dehan ber bi sedan pakêtên vegirtî rave dike.
Çima ev kurmek di ekosîstema pakêtan de ye
Kurm malwareyek e ku bêyî ku di her qonaxê de gavên destî yên operator hewce bike, bi tena serê xwe belav dibe. Di pergalên xebitandinê de, kurm bi gelemperî ji bo ku ji makîneyekê derbasî makîneyek din bibin, qelsiyên torê bikar tînin. Berevajî vê, Shai-Hulud di hundurê qeyda npm de dixebite. Rêya wê ya bi bandor bi rêya ji nû ve bikaranîna bawernameyê.
Ev kurm ji nîşaneyên weşanê yên npm yên dizî sûd werdigire. Gava ku ew bawernameyên derbasdar werdigire, ew guhertoyên vegirtî di bin pakêtên din ên ku xwediyê wan heman parastvan e de ji nû ve diweşîne. Piştre, ew pakêt ji hêla pêşdebirên bêhemdî an jî rêvebirên CI ve têne sazkirin, û çerx dubare dibe.
Ji ber vê sedemê, analîstên ewlehiyê, di nav de Xwendina Tarî, Şay-Hulud wekî kurmê xwe-zêde dibe ne trojanek sade an bûyerek typosquatting. Cûdahî girîng e: trojanek bi gelemperî yek mêvandarê dixe xeterê, lê kurmek bandora xwe bixweber li seranserê ekosîstemê zêde dike.
Pelê hîlekar "Ew çawa dixebite"
Ji bo kurteberkirina çerxa jiyana Shai-Hulud, li vir dezawantajek heye:cisDabeşkirina gavên wê yên sereke:
- Pakêtek bi piştî sazkirinê hatiye sazkirin, û
bundle.jspêk tîne. - Barkêş guherbarên jîngehê datîne, pelan û dîroka git dişopîne, dimeşe TruffleHog, û xizmetên metadata yên ewr lêpirsîn dike. Di encamê de, her razek ku tê dîtin tavilê bikêrhatî dibe.
- Derxistin bi du awayan pêk tê: ya yekem, bi çêkirina depoyek giştî ya bi navê Shai Hulud bi kodkirina ducarî ya bingeh-64
data.json; duyemîn, bi çandina karîgeriya GitHub Actions ku diweşîne${{ toJSON(secrets) }}bo webhookekê. - Bi karanîna her nîşaneya npm ya dizî, kurm hemû pakêtên din ên ku xwediyê wan parastvanê tahrîbkirî ne, bi heman çengela xerabkar ji nû ve diweşîne. Bi vî awayî, enfeksiyon bi lez zêde dibe.
- Di dawiyê de, êrîşkar bêtir raz, bêtir pakêt ji bo belavkirinê digire, û li sersekinî di nav hesab û depoyên GitHub de.
Meriv çawa dikare ji vê celebê êrîşê dûr bikeve, bi pratîkî
Şaî-Hulud bangek hişyarkirinê ye. Kurmek ku nîşanekan didize û xwe ji nû ve diweşîne ne xeterek pêşerojê ye, ew di hundurê de zindî ye. ekosîstema pakêtên npm îro. Ji bo pêşîgirtina li vî rengî êrîşa zincîra dabînkirinê, tîm hewceyê kontrolên ku bernamekirî, otomatîk û rasterast di hundurê de têne sepandin in CI/CD pipelines. Ev heman parastinên ku hûn dikarin pê re bicîh bînin in. Xygeni.
Berhemên xerab li derî rawestînin
Divê hûn pakêtên npm û tarballan berî ku bigihîjin pêşdebiran an karên CI-yê bişopînin. Mezinahiya wan zêde ye. bundle.js pelan, postinstall-a gumanbar hooks, û nîşankerên tarîbûnê hemî wekî nîşanên sor ên zû kar dikin. Wekî din, sepandina demên aramkirinê û guhertoyên pinkirî di pipelines rê li ber vexwarina otomatîk a berdanên teze û nepejirandî digire.
Hişkkirin CI/CD bi default
Guardrails in CI/CD girîng in. Ew yekkirin an sazkirinên ku skrîpt an jî pelên dualî yên nû datînin red dikin. Di heman demê de, ew herikên kar ên ku razên rêzimanî dikin an jî hewl didin ku postên derveyî çêbikin asteng dikin. Tîm divê sazkirinên tenê yên kilîtkirina pelan jî hewce bikin (npm ci) li seranserê hemî pipelineji ber vê yekê setên girêdayîbûnê dubarekirî û ewle dimînin.
Radyoya teqîna nîşanan kêm bike
Nabê sirr bibin xalên yekane yên têkçûnê. Kod, mîheng û ... bi berdewamî bişopînin. pipeline derketin ji bo bawernameyên eşkerekirîDivê nîşanekan bi awayekî teng werin destnîşankirin, temenê wan kurt be, û dema ku xetere were tespîtkirin bixweber werin zivirandin. Wekî qaîdeyek, her nîşanek ku li ser mêvandarek ku sazkirinek gumanbar pêk aniye tê bikar anîn wekî xeternak were hesibandin.
Zû reftara kurmikan bibînin
Determkirina anomalî girîng e. Bo nimûne, zêdebûna ji nişka ve di bûyerên weşana npm de, herikînên xebatê yên nû yên ku bê sedem xuya dibin, an depoyên giştî yên nû yên ku bi pelên kodkirî yên xerîb dagirtî ne, hemî dikarin çalakiya kurmikan nîşan bidin. Ji ber vê yekê, tîm divê zû hişyariyan bidin û her parastvan an rêvebirên ku van nîşanên hişyariyê nîşan didin îzole bikin.
Zû bêyî şikestina avahiyan rast bikin
Lez û ewlehî divê bi hev re bin. Otomatîk pull requests dikare pakêtên npm yên tahliyekirî bi guhertoyên piştrastkirî biguhezîne. Wekî din, gihîştin û îstîsmarkirin analîz piştrast dike ku nûvekirin kêmtirîn û sabît dimînin. Di dawiyê de, piştî ku eşkerebûn hate piştrast kirin, CI-yên bandordar ji wêneyên paqij ji nû ve ava bikin, da ku êrîş ji belavbûna bêtir dûr bisekinin.
Nîşaneyên Lihevkirinê (IoC)
Dema ku Shai-Hulud tê analîzkirin, tîm divê li herduyan jî temaşe bikin IoC-yên statîk di dosyayan de û IoC-yên reftarî in pipelines. Bi hev re, ev sînyalan dibin alîkar ku enfeksiyon zû werin tespîtkirin û berî ku kurm bêtir belav bibe, bersiv bidin.
IoC-yên statîk
Li gorî hevberdana digestên SHA-256 yên jêrîn hatine dîtin bundle.js nimûne:
- 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
- 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
- dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c
Wekî din, ji bo van şêwazên dubare temaşe bikin:
- A
bundle.jsli koka pakêtê. "postinstall": "node bundle.js"navpackage.json.- Depoyên bi nav Shai Hulud.
- Herikên xebatê yên GitHubê yên ku dihewînin
${{ toJSON(secrets) }}.
IoC-yên Behremendî
Ji îmzeyên pelan wêdetir, çalakiya kurmikan xwe bi tevgerê dide xuyakirin. Bo nimûne:
- Teqînên ji nişka ve yên npm bûyeran ji yek parastvan diweşînin.
- Herikînên kar ên nû ku daneyan ber bi xalên dawî yên derveyî ve dişînin.
- Daxwazên POST-ê yên derveyî ji hêla bazderên CI ve têne çalak kirin.
- Depoyên giştî yên ku vê dawiyê bi blobên kodkirî hatine afirandin.
Nêçîrên bilez
Encam: Dersên ji Şai-Hulud
Ew Êrîşa zincîra dabînkirinê ya Şay-Hulud di pakêtên npm de nîşan dide ka zincîra dabînkirina nermalavê ya îroyîn çiqas nazik bûye. Vê kurmê ji zêdekirina koda zirardar bêtir tişt kir. Wê token dizî, daneyan şand, û dûv re xwe bixweber ji nû ve weşand. Ji ber vê yekê, êrîş di nav çend saetan de belav bû ne di nav çend hefteyan de.
Ji bo pêşdebiran û tîmên DevOps, ders zelal in:
- Her sazkirinek kodê dimeşîne. Tew pakêtek npm ya hevpar jî dikare kurmek piştî sazkirinê veşêre.
- Her nîşanek xwedî nirxek bilind e. Dema ku were dizîn, ew dikare ji bo belavkirina bêtir malware were bikar anîn.
- Herkes pipeline kontrolan hewce dike. Bê guardrails li ser girêdayîbûn, herikînên kar û sirên, yek lihevkirin dikare bi lez bandorê li hilberînê bike.
Ji ber vê yekê, rawestandina êrîşên mîna Shai-Hulud hewceyê kontrolên otomatîk û hêsan e ku werin bicîhanîn e. Tîm divê pakêtên npm berî sazkirinê bişopînin, avahiyên pelên kilîtkirî bikar bînin, çalakiyên weşanê yên xerîb tespît bikin, û nîşanekan kurt-temen bihêlin. Ev gav êdî vebijarkî nînin. Di şûna wê de, ew bingeha berxwedanê di cîhana nûjen de ne. pipelines.
Li Xygeni, em êrîşa zincîra dabînkirinê ya Shai-Hulud wekî hişyariyek ji bo tevahiya ekosîstema çavkaniya vekirî dibînin. Rêya domdar a pêşveçûnê ew e ku ewlehiya zincîra dabînkirinê rasterast bikeve nav pêvajoya pêşveçûnê, li cihê ku kod, pakêtên npm, û pipelinegirêdana s.
Li jêr navnîşa tevahî ya pakêtên npm û guhertoyên ku di Shai-Hulud de wekî tawanbar hatine ragihandin heye. Wê bikar bînin da ku pelên xwe yên kilîtkirî, qeyd û CI-yê kontrol bikin. pipelines ji bo eşkerekirinê.
Lîsteya pakêtên têkçûyî
📦 Pêşdîtina Pakêtên npm yên Têkçûyî
| Navê pakêtê | Awa | Dîroka çapkirinê |
|---|---|---|
| motora-json-qaîdeyên-motorê-hêsankirî | 0.2.1 | 2025-09-14T17:58:51.203Z |
| pîlotê hewayî | 0.8.8 | 2025-09-14T18:35:07.600Z |
| grafîka-zanîna-mcp | 1.2.1 | 2025-09-14T18:35:09.494Z |
| serfermandarê hewayî | 0.3.1 | 2025-09-14T18:35:09.521Z |
| deriyê bazdanê | 0.0.2 | 2025-09-14T18:35:09.651Z |
| tvi-cli | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/callback-window | 1.1.4 | 2025-09-14T20:31:38.479Z |
| @tnf-dev/api | 1.0.8 | 2025-09-14T20:31:39.547Z |
| @tnf-dev/js | 1.0.8 | 2025-09-14T20:31:41.251Z |
| @tnf-dev/mui | 1.0.8 | 2025-09-14T20:31:41.259Z |
| @tnf-dev/core | 1.0.8 | 2025-09-14T20:31:42.728Z |
| @teselagen/table-react | 6.10.20 | 2025-09-14T20:37:08.597Z |
| @hestjs/demo | 0.1.2 | 2025-09-14T20:45:52.348Z |
| @nexe/eslint-config | 0.1.1 | 2025-09-14T20:45:53.625Z |
| @hestjs/eslint-config | 0.1.2 | 2025-09-14T20:45:55.044Z |
| @nexe/rêveberê-config | 0.1.1 | 2025-09-14T20:45:55.066Z |
| @nexe/logger | 0.1.3 | 2025-09-14T20:45:55.170Z |
| @hestjs/logger | 0.1.6 | 2025-09-14T20:45:55.197Z |
| @hestjs/pejirandin | 0.1.6 | 2025-09-14T20:45:55.595Z |
| @hestjs/core | 0.2.1 | 2025-09-14T20:45:55.888Z |
➡️ Lîsteya Tevahî ya Pakêtên Têkçûyî Bibînin
| Navê pakêtê | Awa | Dîroka çapkirinê |
|---|---|---|
| motora-json-qaîdeyên-motorê-hêsankirî | 0.2.1 | 2025-09-14T17:58:51.203Z |
| pîlotê hewayî | 0.8.8 | 2025-09-14T18:35:07.600Z |
| grafîka-zanîna-mcp | 1.2.1 | 2025-09-14T18:35:09.494Z |
| serfermandarê hewayî | 0.3.1 | 2025-09-14T18:35:09.521Z |
| deriyê bazdanê | 0.0.2 | 2025-09-14T18:35:09.651Z |
| tvi-cli | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/callback-window | 1.1.4 | 2025-09-14T20:31:38.479Z |
| @tnf-dev/api | 1.0.8 | 2025-09-14T20:31:39.547Z |
| @tnf-dev/js | 1.0.8 | 2025-09-14T20:31:41.251Z |
| @tnf-dev/mui | 1.0.8 | 2025-09-14T20:31:41.259Z |
| @tnf-dev/core | 1.0.8 | 2025-09-14T20:31:42.728Z |
| @teselagen/table-react | 6.10.20 | 2025-09-14T20:37:08.597Z |
| @hestjs/demo | 0.1.2 | 2025-09-14T20:45:52.348Z |
| @nexe/eslint-config | 0.1.1 | 2025-09-14T20:45:53.625Z |
| @hestjs/eslint-config | 0.1.2 | 2025-09-14T20:45:55.044Z |
| @nexe/rêveberê-config | 0.1.1 | 2025-09-14T20:45:55.066Z |
| @nexe/logger | 0.1.3 | 2025-09-14T20:45:55.170Z |
| @hestjs/logger | 0.1.6 | 2025-09-14T20:45:55.197Z |
| @hestjs/pejirandin | 0.1.6 | 2025-09-14T20:45:55.595Z |
| @hestjs/core | 0.2.1 | 2025-09-14T20:45:55.888Z |
| @hestjs/cqrs | 0.1.6 | 2025-09-14T20:45:55.966Z |
| @hestjs/scalar | 0.1.7 | 2025-09-14T20:45:56.386Z |
| barkirina-pelê-ng2 | 7.0.3 | 2025-09-15T02:44:29.555Z |
| destgirê agahdariya-kapasîtorê | 0.0.2 | 2025-09-15T04:54:48.431Z |
| pêveka-kapasîtorê-vonage | 1.0.2 | 2025-09-15T04:54:48.501Z |
| pêveka-kapasîtorê-healthapp | 0.0.2 | 2025-09-15T04:54:48.704Z |
| destûrnameyên kapasîtorandroid | 0.0.4 | 2025-09-15T04:54:48.753Z |
| voip-callkit | 1.0.2 | 2025-09-15T04:54:49.223Z |
| pêveka-kapasîtorê-ihealth | 1.1.8 | 2025-09-15T04:55:08.113Z |
| @art-ws/common | 2.0.22 | 2025-09-15T05:21:15.411Z |
| @art-ws/config-eslint | 2.0.4 | 2025-09-15T05:21:17.199Z |
| ngx-ws | 1.1.5 | 2025-09-15T05:21:17.514Z |
| @art-ws/slf | 2.0.15 | 2025-09-15T05:21:17.524Z |
| @art-ws/http-server | 2.0.21 | 2025-09-15T05:21:17.745Z |
| pm2-gelf-json | 1.0.4 | 2025-09-15T05:21:18.413Z |
| @art-ws/di | 2.0.28 | 2025-09-15T05:21:18.488Z |
| @art-ws/di-node | 2.0.13 | 2025-09-15T05:21:18.849Z |
| @art-ws/config-ts | 2.0.7 | 2025-09-15T05:21:19.408Z |
| @art-ws/db-context | 2.0.21 | 2025-09-15T05:21:19.814Z |
| @art-ws/openapi | 0.1.9 | 2025-09-15T05:21:19.969Z |
| @art-ws/web-app | 1.0.3 | 2025-09-15T05:21:20.383Z |
| @art-ws/ssl-info | 1.0.9 | 2025-09-15T05:21:20.927Z |




