ʻO Shai hulud - nā pūʻolo npm - hoʻouka kaua kaulahao lako

ʻO Shai-Hulud: Ka wehewehe ʻana i ka ilo pūʻolo npm

Aku; DR

Ma ka lā 14 o Kepakemapa, 2025, ua ʻike nā mea noiʻi Shai Hulud, he ilo e hoʻohua ponoʻī ana i hūnā ʻia i loko nā pūʻolo npm, e hoʻololi ana i kahi hoʻohou hilinaʻi maʻamau i kahi pae piha hoʻouka kauaʻIke mua ʻia ma ka @ctrl/tinycolor pūʻolo na Daniel dos Santos Pereira, hōʻiliʻili ʻo Shai-Hulud i nā mea huna, hoʻopuka iā lākou ma o nā repos GitHub a me nā kahe hana, a hoʻopuka hou iā ia iho ma ke kau inoa me ka hoʻohana ʻana i nā palapala hōʻoia i ʻaihue ʻia. I loko o nā lā, ua lele ka nui o nā pūʻolo i loaʻa i ka maʻi mai nā ʻumi a i nā haneli, e hōʻoia ana i kēlā ʻO Shaihulud ʻaʻole ia he trojan ʻē aʻe akā he ilo i hoʻolālā ʻia e hoʻolaha aunoa ma ka ʻōnaehana npm.

Pākuʻi: aia kekahi mea hoʻomohala a i ʻole CI runner e hoʻokomo ana i nā pūʻolo npm lehulehu i ka pilikia.

Nā hana koke: e ālai i nā mana i ʻike ʻia, e hoʻololi i nā hoʻonohonoho lockfile-wale nō, e hoʻololi i nā hōʻailona npm a me GitHub, e nānā i nā kahe hana, a e nānā no nā Indicators of Compromise (IoCs).

He aha i hana ai?

ka Hoʻouka kaua kaulahao lako Shai-Hulud i nā pūʻolo npm ʻo ia kekahi o nā hanana hoʻopilikia loa i ka hoʻomanaʻo hou. ʻAʻole e like me nā trojans i hoʻokaʻawale ʻia, hui pū kēia ilo ʻaihue palapala hōʻoia, exfiltration hana ponoʻī, a me ke kope ponoʻīNo laila, ua emi ka manawa o ka maʻi mai nā pule a i nā hola wale nō.

No nā hui DevOps, ua maopopo ka haʻawina: inā hiki i kēlā me kēia hoʻonohonoho ke hoʻokō i ke code, a laila ʻo kēlā me kēia hoʻololi hilinaʻi he wahi hiki ke uhaki.

Nā Palapala Hōʻoia Vector Mua a me nā Palapala Hōʻoia i Manaʻo ʻia

Ka loiloi mua hōʻike ʻia ua hoʻomaka paha ka hoʻouka kaua me nā palapala hōʻoia i ʻaihue ʻia. No ka laʻana, nā hoʻolaha phishing e hoʻopunipuni ana i ka npm login a i ʻole ua hopu paha nā ʻōkuhi MFA i nā hōʻailona hoʻomohala. I ka loaʻa ʻana o kēlā wāwae mua i nā mea hoʻouka, ua laha ka ilo ma ke komo ʻana iā ia iho i loko o nā pūʻolo npm a me ka ʻaihue ʻana i nā mea huna hou aʻe mai:

  • nā faila hoʻonohonoho npm like me .npmrc, pinepine i loaʻa nā hōʻailona hoʻolaha.
  • Nā hoʻololi kaiapuni a me nā hoʻonohonoho me nā GitHub PATs a CI/CD mea huna.
  • Nā wahi hopena metadata ao (AWS, GCP, Azure) e hāʻawi ana i nā hōʻoia pōkole no ka neʻe ʻana o ka ʻaoʻao.

No laila, ua lilo ka ʻaihue palapala hōʻoia i mea hoʻomaka. Me nā hōʻailona npm kūpono a me nā mea huna GitHub, hiki iā Shai-Hulud ke hana hou iā ia iho ma nā pūʻolo a me nā waihona he nui me ka ʻole o ka hoʻoikaika kanaka hou.

Ka Hopena Hoʻokō o ka Hoʻouka Kaulahao Lako Shai-Hulud

Ke hana mau nei ʻo Shai-Hulud i kēia lā. Hoʻolalelale kēia ilo i ka manawa hopena. ʻO ka mea i hala i nā pule me kahi trojan i kēia manawa e wehe ʻia i loko o nā hola. ʻO ka hopena, ʻoi aku ka wikiwiki o ka laha ʻana a ʻoi aku ka paʻakikī o ka kāohi ʻana. Ke holomua nei ia ma:

  • Ke ʻaihue nei i nā hōʻailona hoʻopuka npm a me nā mea huna GitHub.
  • Ke hoʻopuka hou nei iā ia iho i loko o nā pūʻolo npm ʻē aʻe.
  • Ke hoʻohui nei i nā kahe hana GitHub Actions ʻino no ka hoʻomau.

ʻO wai ka mea i hoʻopilikia ʻia:

Ua hōʻike ʻia kēlā me kēia hui e hoʻokomo i nā pūʻolo npm lehulehu. Eia kekahi, ke kū nei nā mea hoʻomohala me nā hōʻailona npm cache a i ʻole GitHub i ka pilikia nui. He nāwaliwali nō hoʻi nā mea holo CI e hoʻohana ana i nā mea huna ākea.

Ka pilikia ʻoihana

Piʻi koke ka hopena o ka ʻoihana. Hiki i nā hōʻailona i ʻaihue ʻia ke alakaʻi i ka lawe ʻana i ka moʻokāki, ka hao ʻana i nā pūʻolo, a me ka hoʻohana hewa ʻana i ke ao. Eia kekahi, ʻo ka hoʻomau ʻana i nā kahe hana GitHub e paʻakikī ai ka hoʻomaʻemaʻe. No laila, pono nā kime e mālama iā Shai-Hulud ma ke ʻano he hanana e hoʻomau nei, ʻaʻole ia he mea i pani ʻia.

Pehea e hana ai ka Shai-Hulud Supply Chain Attack i nā pūʻolo npm

Nā pahuhopu a me ke kumu o ka mea hoʻouka

Hoʻomaikaʻi ka hoʻolaha no ʻekolu mau mea:

  • ʻO ka pahuhopu mua ka ʻaihue i nā palapala hōʻoia ma ka nui mai nā kamepiula lawe lima a me nā mea holo CI. Hoʻokomo pū kēia me nā hōʻailona hoʻopuka npm, nā hōʻailona GitHub, a me nā hōʻoia ao. ʻO ka ʻoiaʻiʻo, ua hōʻoia nā loiloi he nui i ka ʻohi huna ʻōnaehana, e like me ka holo ʻana iā TruffleHog a me ka nīnau ʻana i nā hopena metadata ao.
  • ʻO ka lua o ka pahuhopu, ʻo ia ka hoʻolaha aunoa ma ka hoʻomāinoino ʻana i nā kuleana hoʻopuka o nā mea mālama i hoʻopilikia ʻia. ʻO ka hopena, hoʻonui koke kekahi wāwae i nā mea he nui, ʻoiai e ʻike ʻia nā mana hou o nā pūʻolo ʻē aʻe me ka ʻole o ka hoʻoikaika hou ʻana o ke kanaka.
  • ʻO ke kolu o ka pahuhopu, ʻo ia ka hoʻomau a hoʻokuʻu i waho me ka hilinaʻi ma o ke kahua ʻo GitHub. Hoʻokumu nā mea hoʻouka i kahi repo lehulehu i kapa ʻia ʻo "Shai-Hulud" me kahi base64 pālua ʻikepili.json, a eia kekahi, kanu lākou i kahi kahe hana e hoʻopaʻa ana i nā serializes ${{ toJSON(nā mea huna) }} a hoʻouna iā ia i kahi webhook paʻa.

ʻO ka uku kūpono e pili ana i ke komo lōʻihi i nā hoʻopaʻa inoa a me ke code kumu, ka neʻe wikiwiki ʻana i nā moʻokāki ao, a me ke koho e hoʻohana hou aku i ke kaulahao lako. Hōʻike ka hōʻike lehulehu i nā repos pilikino i hoʻohuli ʻia i ka lehulehu me kahi "-neʻe ʻana" pākuʻi hope, kahi e hoʻonui ai i ka hōʻike ʻikepili a me ka momentum

I loko o ka uku ukana ʻo Shai-Hulud: pūʻolo.js i loko o nā pūʻolo npm

Nā moku ʻo Shai-Hulud ma ke ʻano he nui, hoʻopili ʻia me Webpack a hoʻemi nui ʻia Waihona JavaScript (pūʻolo.js, ma kahi o 3–3.7 MB) e hoʻokō ana mai kahi ma hope o ke kau ʻana hoʻopaʻa i loko pakete.jsonNo laila, Hoʻāla koke kēlā me kēia hoʻouka ʻana i ka ukana. Hūnā kēia hoʻolālā i nā mea hōʻike, hoʻopili i ke kahe kaohi, a hoʻokuke i nā logic āpau i loko o hoʻokahi artifact e hoʻokō ʻia i ka wā o ke kau ʻana. Hōʻoia mau nā mea loiloi i ka hoʻopili ʻana o Webpack, ka nui faila ʻokoʻa, a me ka hoʻokō manawa hoʻouka.

Nā ʻano Obfuscation a me anti-analysis āu e ʻike ai i nā laʻana:

  • Kiʻikuhi modula i hoʻemi ʻia me nā ID module helu, nā manaʻo kakaikahi, a me ke kahe hoʻomalu palahalaha. Eia kekahi, ʻO kēia ʻano hana e paʻakikī loa ai ka loiloi lima ʻana.
  • Ka peʻe ʻana o ke kaula ma o nā papa base64 a me nā mea kōkua kūkulu. Eia kekahi laʻana, ʻIke pinepine ʻia ka hoʻopili ʻana a me ka wehewehe ʻana o ka base64 a puni nā hana exfiltration.
  • Hoʻouna ʻana i ka hoʻololi ʻana ma loiloinā ʻano hoʻohālike a me nā kino hana i hana ʻia, no laila e hiki ai i ke code ke hoʻololi i ke ʻano i ka wā holo.
  • Kānana ʻōnaehana hana e makemake i ka hoʻokō ʻana o Linux a me macOS ma nā mea holo CI a me nā kamepiula lawe mea hoʻomohala.

Mai kahi kihi hana, he modular ka pūʻolo. Hōʻike nā kākau i nā modula no ka ʻike ʻana o ka OS, nā faila filesystem a me nā git secret scans, ke komo ʻana o ka cloud SDK, nā hana GitHub API, a me kahi ʻenekini hoʻolaha e hoʻoponopono ana i nā pūʻolo ʻē aʻe a ka mea mālama e nona ana. ʻO ka ʻoiaʻiʻo, hōʻike ʻo StepSecurity lāua ʻo ReversingLabs i kahi hana e hoʻohou hou i nā pūʻolo me ka makau ʻino.

Hoʻokō Manawa Hoʻokomo ma Shai-Hulud: Pehea e hoʻoulu ai nā pūʻolo npm i ka ilo

Hoʻomaka ka hoʻouka kaua i ka wā holo ka node ma hope o ke kau ʻana pūʻolo.js. I kēia manawa, hoʻomaka ka script a wehe i ke kūlana hana ma ka hoʻomanaʻo, e hoʻonohonoho ana i ke kahua no ka hana piha o ka ilo.

Ka ʻike ʻana a me ka ʻohi ʻana

  • Hoʻopau ka payload dumps i ka process.env a nānā i nā faila kūloko no nā mea huna entropy kiʻekiʻe a me nā prefixes hōʻailona. Eia kekahi, hoʻonui ia i ka uhi ʻana ma ka holo ʻana iā TruffleHog.
  • Ke nīnau nei ia i nā kiko metadata ao e hōʻiliʻili i nā hōʻoia pōkole. ʻo kahi laʻana, kāhea aku iā 169.254.169.254 ma AWS a i ʻole metadata.google.internal ʻIke pinepine ʻia ka GCP i nā poʻe i loaʻa i ka maʻi.
  • No laila, hiki ke hoʻohana koke ʻia kekahi hōʻoia i loaʻa e hoʻopuka i nā pūʻolo npm hou a i ʻole e hoʻokuke i nā kahe hana GitHub.

Exfiltration

  • Hoʻokumu ka ilo i kahi repo GitHub hou i kapa ʻia Shai Hulud a kākau i kahi base64-encoded pālua data.json me nā kikoʻī o ka paepae, nā ʻōpala kaiapuni, a me nā mea huna. E like me ka mea i ʻike ʻia, maʻalahi ke ʻike i kēia ʻano walaʻau inā ʻike nā mea pale i kahi e nānā ai.
  • Hoʻomoe pū ia i kahi kahe hana GitHub Actions, pinepine ma kahi lālā i kapa ʻia shai-hulud, e hoʻopaʻa ana i nā moʻolelo ${{ toJSON(secrets) }} a hoʻouna i ka ʻikepili i kahi webhook static. Eia kekahi, hoʻomau kēia kahe hana a hiki i ka wā e wehe ai kekahi.

Hoʻopōla

  • Me kekahi hōʻailona npm i ʻike ʻia, helu ka payload i nā pūʻolo āpau i loaʻa i ka mea mālama i hoʻopilikia ʻia. A laila, kiʻi ia i kēlā me kēia tarball, hoʻokomo i ka bundle.js a me kahi komo postinstall, a hoʻopuka hou i ka pūʻolo.
  • ʻO ka hopena, hiki ke ʻike ʻia nā ʻumi o nā pūʻolo i loaʻa i ka maʻi i loko o kekahi mau hola, e hoʻonui ana i ka radius o ka pahū ma waena o ka ʻōnaehana ola.

Ka hoʻomau a me ka hōʻike ʻana

  • Mālama ka ilo i nā kahe hana ʻino a, i kekahi mau hihia, hoʻohuli i nā repos pilikino i ka lehulehu me kahi "-neʻe ʻana" hope. Ma ke ʻano holoʻokoʻa, hōʻoia kēia i ka mea hoʻouka e mālama i kahi kūlana paʻa a hoʻonui i ka liki ʻikepili.

memo ʻike kī
ʻO kēia hoʻohana kūikawā ʻole ${{ toJSON(secrets) }} he mea kākaʻikahi nā kahe hana ma nā Hana. No laila, pono nā kime e mālama iā ia ma ke ʻano he hōʻailona hōʻailona kiʻekiʻe i ka wā o ka hahai holoholona.

ʻAno hana i hoʻomaʻemaʻe ʻia e pono ai ʻoe e ʻimi

ʻO kēia hoʻohana kūikawā ʻole i JSON(nā mea huna) he hōʻailona hōʻailona kiʻekiʻe ʻo in Actions i kēia hanana.

Pseudo-code hoʻolaha kiʻekiʻe (palekana, wehewehe)

Ua nānā nā mea loiloi i kēia loop ma ka pālākiō, ʻo ia ka mea e wehewehe ai i ka lele wikiwiki mai nā ʻumi a i nā haneli o nā pūʻolo i hoʻopili ʻia.

No ke aha he ilo kēia i loko o kahi ʻōnaehana pūʻolo

He polokalamu ʻino ka ilo e laha ana ma kāna iho me ka ʻole o ka koi ʻana i nā ʻanuʻu hana lima i kēlā me kēia pae. I loko o nā ʻōnaehana hana, hoʻohana pinepine nā ilo i nā nāwaliwali o ka pūnaewele e neʻe mai kekahi mīkini a i kekahi. I ka hoʻohālikelike ʻana, hana ʻo Shai-Hulud i loko o ka papa inoa npm. ʻO kona ala kūpono ma o ka hoʻohana hou ʻana i nā palapala hōʻoia.

Hoʻohana ka ilo i nā hōʻailona hoʻopuka npm i ʻaihue ʻia. Ke loaʻa iā ia nā palapala hōʻoia kūpono, hoʻopuka hou ia i nā mana i hoʻopilikia ʻia ma lalo o nā pūʻolo ʻē aʻe i nona ka mea mālama like. Ma hope iho, hoʻokomo ʻia kēlā mau pūʻolo e nā mea hoʻomohala kānalua ʻole a i ʻole nā ​​mea holo CI, a hana hou ʻia ke kaʻina hana.

No kēia kumu, ʻo nā mea loiloi palekana, me Heluhelu Pouli, e hoʻokaʻawale iā Shai-Hulud ma ke ʻano he ilo hoʻohua ponoʻī ma mua o kahi trojan maʻalahi a i ʻole kahi hanana typosquatting. He mea nui ka ʻokoʻa: hoʻopilikia pinepine kahi trojan i hoʻokahi kikowaena, akā hoʻonui ka ilo i kona hopena ma o kahi kaiaolaola.

Palapala hoʻopunipuni "Pehea e hana ai"

I mea e hōʻuluʻulu ai i ke ola o Shai-Hulud, eia kahi conciska wehewehe ʻana i kāna mau ʻanuʻu nui:

  • He pūʻolo me ma hope o ke kau ʻana ua hoʻokomo ʻia, a bundle.js hoʻokō.
  • Hoʻopau ka payload i nā loli kaiapuni, nānā i nā faila a me ka mōʻaukala git, holo ʻO TruffleHog, a me nā nīnau i nā lawelawe metadata ao. No laila, lilo koke kekahi mea huna i loaʻa i mea pono.
  • Hana ʻia ka exfiltration ma nā ʻano ʻelua: ʻo ka mua, ma ka hoʻokumu ʻana i kahi repo lehulehu i kapa ʻia Shai Hulud me kahi base64 pālua i hoʻopili ʻia data.json; ʻo ka lua, ma ke kanu ʻana i kahi kahe hana GitHub Actions e hoʻouna ana ${{ toJSON(secrets) }} i kahi webhook.
  • Me ka hoʻohana ʻana i kekahi hōʻailona npm i ʻaihue ʻia, hoʻopuka hou ka ilo i nā pūʻolo ʻē aʻe a pau i loaʻa i ka mea mālama i hoʻopilikia ʻia me ka makau ʻino like. Ma kēia ʻano, hoʻonui koke ka maʻi.
  • ʻO ka mea hope loa, paʻa i ka mea hoʻouka nā mea huna hou aʻe, nā pūʻolo hou aʻe e hoʻolaha aku ai, a ka hoʻomau ʻana i loko o nā moʻokāki GitHub a me nā waihona.

Pehea e pale aku ai i kēia ʻano hoʻouka kaua, ma ke ʻano maoli

He kāhea hoʻāla ʻo Shai-Hulud. ʻO kahi ilo e ʻaihue ana i nā hōʻailona a hoʻopuka hou iā ia iho ʻaʻole ia he pilikia i ka wā e hiki mai ana, aia ia i loko o ka kaiaolaola pūʻolo npm i kēia lā. No ka pale ʻana i kēia ʻano o hoʻouka kaua, pono nā hui i nā kaohi e hiki ke hoʻolālā ʻia, hana ʻakomi ʻia, a hoʻokō pololei ʻia i loko CI/CD pipelines. ʻO kēia nā pale like hiki iā ʻoe ke hoʻokō mua me ʻO Xygeni.

E ho'ōki i nā mea hana maikaʻi ʻole ma ka puka pā

Pono ʻoe e scan i nā pūʻolo npm a me nā tarballs ma mua o ko lākou hiki ʻana i nā mea hoʻomohala a i ʻole nā ​​​​hana CI. bundle.js nā faila, postinstall kānalua hooks, a me nā māka obfuscation e lawelawe āpau ma ke ʻano he mau hae ʻulaʻula mua. Eia kekahi, ʻo ka hoʻokō ʻana i nā wā hoʻomaha a me nā mana i hoʻopaʻa ʻia i loko pipelinepale ʻo s i nā hoʻokuʻu hou i nānā ʻole ʻia mai ka hoʻopau ʻia ʻana me ka ʻakomi.

ʻO Harden CI/CD ʻikeʻole

Guardrails in CI/CD he mea nui. Hōʻole lākou i nā hui a i ʻole nā ​​hoʻonohonoho e hoʻolauna i nā palapala hou a i ʻole nā ​​binaries. I ka manawa like, ālai lākou i nā kahe hana e hoʻokaʻawale i nā mea huna a hoʻāʻo paha i nā pou waho. Pono nā hui e koi i nā hoʻonohonoho lockfile-wale nō (npm ci) ma nā wahi āpau pipelinei hiki ke hana hou ʻia a palekana hoʻi nā hoʻonohonoho hilinaʻi.

E ho'ēmi i ka radius o ka pahū hōʻailona

ʻAʻole pono e lilo nā mea huna i mau wahi hoʻokahi o ka hāʻule ʻana. E nānā mau i ke code, nā hoʻonohonoho, a pipeline puka no nā palapala hōʻoia i hōʻike ʻiaPono e hoʻokaʻawale ʻia nā hōʻailona me ka liʻiliʻi, hāʻawi ʻia i nā ola pōkole, a hoʻohuli ʻia aunoa ke ʻike ʻia ka hōʻike ʻana. Ma ke ʻano he kānāwai, e mālama i kekahi hōʻailona i hoʻohana ʻia ma kahi kikowaena i hoʻokō i kahi postinstall kānalua e like me ka mea i hoʻopilikia ʻia.

E ʻike i ke ʻano o ka ilo i ka wā mua

ʻIke anomaly he kī. No ka laʻana, ʻo nā piʻi koke ʻana o nā hanana paʻi npm, nā kahe hana hou e ʻike ʻia me ke kumu ʻole, a i ʻole nā ​​​​repos lehulehu hou i piha i nā faila i hoʻopili ʻia e hiki ke hōʻailona i ka hana ilo. No laila, pono nā hui e hoʻāla koke i nā makaʻala a hoʻokaʻawale i nā mea mālama a i ʻole nā ​​​​mea holo e hōʻike ana i kēia mau hōʻailona hōʻike.

E hoʻoponopono koke me ka ʻole o ka uhaki ʻana i nā kūkulu

Pono e hele pū ka wikiwiki a me ka palekana. Hana ʻakomi pull requests hiki ke pani i nā pūʻolo npm i hoʻopilikia ʻia me nā mana i nānā ʻia. Eia kekahi, hiki ke hiki aku a hiki ke hoʻohana ʻia Hoʻomaopopo ka loiloi i ka liʻiliʻi a me ke kūpaʻa o nā hoʻonui. ʻO ka hope loa, kūkulu hou i nā mea holo CI i hoʻopilikia ʻia mai nā kiʻi maʻemaʻe ke hōʻoia ʻia ka hōʻike ʻana, e pale ana i ka hoʻouka kaua mai ka laha hou aku.

Nā Hōʻailona o ke Kuʻikahi (IoCs)

I ke kālailai ʻana iā Shai-Hulud, pono nā hui e makaʻala i nā mea ʻelua nā IoC kūpaʻa i loko o nā faila a me nā IoC hana in pipelines. I ka hui pū ʻana, kōkua kēia mau hōʻailona i ka ʻike mua ʻana i nā maʻi a pane ma mua o ka laha hou ʻana o ka ilo.

Nā IoC Paʻa

Ua ʻike ʻia nā kūlike o nā digests SHA-256 ma lalo nei bundle.js nā laʻana:

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

Eia kekahi, e makaʻala i kēia mau ʻano hana hou:

  • A bundle.js ma ke kumu o ka pūʻolo.
  • "postinstall": "node bundle.js" loko package.json.
  • Nā waihona i kapa ʻia Shai Hulud.
  • Nā kaʻina hana GitHub e loaʻa ana ${{ toJSON(secrets) }}.

Nā IoC Hana

Ma waho aʻe o nā pūlima faila, hōʻike ʻia ka hana ilo ma o ke ʻano. Eia kekahi laʻana:

  • Nā pahū koke o nā hanana paʻi npm mai kekahi mea mālama.
  • Nā kahe hana hou e hoʻokuke ana i ka ʻikepili i nā wahi hopena o waho.
  • Ua hoʻāla ʻia nā noi POST i waho mai nā mea holo CI.
  • Nā repo lehulehu i hana hou ʻia me nā blobs i hoʻopāʻālua ʻia.

Nā hahai holoholona wikiwiki

Hopena: Nā Haʻawina mai Shai-Hulud

ka Hoʻouka kaua ʻana o ke kaulahao lako ʻo Shai-Hulud ma nā pūʻolo npm e hōʻike ana i ke ʻano palupalu o ke kaulahao lako polokalamu o kēia lā. Ua hana kēia ilo ma mua o ka hoʻohui ʻana i ke code ʻino. Ua ʻaihue ʻo ia i nā hōʻailona, ​​hoʻouna i ka ʻikepili, a laila hoʻopuka hou iā ia iho. Ma muli o kēia, ua pālahalaha ka hoʻouka kaua i nā hola ma kahi o nā pule.

No nā mea hoʻomohala a me nā hui DevOps, ua maopopo nā haʻawina:

  • Hoʻokele kēlā me kēia hoʻouka ʻana i ke code. Hiki i kahi pūʻolo npm maʻamau ke hūnā i kahi ilo postinstall.
  • He waiwai nui ko kēlā me kēia hōʻailona. Ke ʻaihue ʻia, hiki ke hoʻohana ʻia e hoʻolaha hou aku i nā polokalamu ʻino.
  • kela pipeline pono nā hōʻoia. ole guardrails ma nā mea hilinaʻi, nā kahe hana, a me nā mea huna, hiki i hoʻokahi ʻaelike ke hoʻopilikia koke i ka hana ʻana.

No laila, ʻo ka hoʻōki ʻana i nā hoʻouka kaua e like me Shai-Hulud e pono ai nā kaohi e hana aunoa a maʻalahi hoʻi e hoʻokō. Pono nā hui e scan i nā pūʻolo npm ma mua o nā hoʻouka ʻana, e hoʻohana i nā kūkulu lockfile, e ʻike i ka hana hoʻopuka ʻē, a mālama i nā hōʻailona no ka manawa pōkole. ʻAʻole koho hou kēia mau ʻanuʻu. Akā, ʻo lākou ke kumu o ke kūpaʻa i kēia au hou. pipelines.

Ma Xygeni, ʻike mākou i ka hoʻouka kaua ʻana o ke kaulahao lako ʻo Shai-Hulud ma ke ʻano he ʻōlelo aʻo no ka ʻōnaehana holoʻokoʻa open source. ʻO ke ala hoʻomau i mua, ʻo ia ka lawe pololei ʻana i ka palekana o ke kaulahao lako i ke kaʻina hana hoʻomohala, ma kahi e hoʻokomo ai ke code, nā pūʻolo npm, a me pipelinehoʻopili.

Aia ma lalo ka papa inoa piha o nā pūʻolo npm a me nā mana i hōʻike ʻia ua hoʻopilikia ʻia ma Shai-Hulud. E hoʻohana iā ia e nānā i kāu mau faila laka, nā hoʻopaʻa inoa, a me CI pipelines no ka hōʻike ʻana.

Papa inoa o nā pūʻolo i hoʻopilikia ʻia

📦 Nānā mua o nā pūʻolo npm i hoʻopilikia ʻia

ʻAna inoa Peke Version Hōʻike i ka lā
ʻenekini-rula-json i hoʻomaʻalahi ʻia0.2.12025-09-14T17:58:51.203Z
pailota mokulele0.8.82025-09-14T18:35:07.600Z
kiʻi ʻike-mcp1.2.12025-09-14T18:35:09.494Z
aliʻi mokulele0.3.12025-09-14T18:35:09.521Z
puka lele0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/puka-kāhea-hoʻi1.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/papa-pane6.10.202025-09-14T20:37:08.597Z
@hestjs/hōʻike0.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/mea hoʻopaʻa inoa0.1.62025-09-14T20:45:55.197Z
@hestjs/hōʻoia0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
➡️ E nānā i ka papa inoa piha o nā pūʻolo i hoʻopilikia ʻia
ʻAna inoa Peke Version Hōʻike i ka lā
ʻenekini-rula-json i hoʻomaʻalahi ʻia0.2.12025-09-14T17:58:51.203Z
pailota mokulele0.8.82025-09-14T18:35:07.600Z
kiʻi ʻike-mcp1.2.12025-09-14T18:35:09.494Z
aliʻi mokulele0.3.12025-09-14T18:35:09.521Z
puka lele0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/puka-kāhea-hoʻi1.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/papa-pane6.10.202025-09-14T20:37:08.597Z
@hestjs/hōʻike0.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/mea hoʻopaʻa inoa0.1.62025-09-14T20:45:55.197Z
@hestjs/hōʻoia0.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/scalar0.1.72025-09-14T20:45:56.386Z
hoʻouka-faila-ng27.0.32025-09-15T02:44:29.555Z
mea lawelawe hoʻomaopopo-capacitor0.0.22025-09-15T04:54:48.431Z
capacitor-plugin-vonage1.0.22025-09-15T04:54:48.501Z
capacitor-plugin-healthapp0.0.22025-09-15T04:54:48.704Z
nā ʻae ʻana o ka capacitorandroid0.0.42025-09-15T04:54:48.753Z
voip-callkit1.0.22025-09-15T04:54:49.223Z
capacitor-plugin-ihealth1.1.82025-09-15T04:55:08.113Z
@art-ws/maʻamau2.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/polokalamu-pūnaewele1.0.32025-09-15T05:21:20.383Z
@art-ws/ssl-info1.0.92025-09-15T05:21:20.927Z
nā mea hana-sca-tools-software-analysis-composition
E hoʻonohonoho i ka mea nui, hoʻoponopono, a hoʻopaʻa i kāu mau pilikia polokalamu
E kiʻi i kāu moʻokāki manuahi.
ʻAʻole koi ʻia kahi kāleka hōʻaiʻē.

E hoʻopaʻa i kāu Hoʻomohala Polokalamu a me ka Hoʻouna ʻana

me ka Xygeni Product Suite