TL. DR
2025 թվականի սեպտեմբերի 14-ին հետազոտողները պարզեցին, որ Շայ-Հուլուդ, ներսում թաքնված ինքնաբազմացող որդ npm փաթեթներ, դարձնելով կախվածության պարբերական թարմացումը լիարժեք մատակարարման շղթայի հարձակումըԱռաջին անգամ նկատվել է @ctrl/tinycolor Դանիել դոս Սանտոս Պերեյրայի կողմից ստեղծված փաթեթում Shai-Hulud-ը հավաքում է գաղտնիքներ, դուրս է հանում դրանք GitHub պահոցներից և աշխատանքային հոսքերից և վերահրապարակում է իրեն գրանցամատյանում՝ օգտագործելով գողացված մուտքային տվյալները: Մի քանի օրվա ընթացքում վարակված փաթեթների թիվը տասնյակներից հասավ հարյուրների, հաստատելով, որ Շայհուլուդ սա պարզապես ևս մեկ տրոյական չէ, այլ որդ, որը նախատեսված է npm էկոհամակարգում ավտոմատ կերպով տարածվելու համար։
Ազդեցություն: Ցանկացած մշակող կամ CI վազող, որը տեղադրում է հանրային npm փաթեթներ, ռիսկի տակ է։
Անմիջական գործողություններ. արգելափակել հայտնի տարբերակները, անցնել միայն ֆայլերի կողպման տեղադրմանը, փոխարինել npm և GitHub տոկենները, աուդիտի ենթարկել աշխատանքային հոսքերը և վերահսկել խախտման ցուցիչների (IoCs) առկայությունը։
Ի՞նչ է պատահել։
Շայ-Հուլուդի մատակարարման շղթայի հարձակումը npm փաթեթների վրա վերջին ժամանակների ամենաաղետալի միջադեպերից մեկն է։ Ի տարբերություն մեկուսացված տրոյականների, այս որդը խառնվում է վկայականի գողություն, ավտոմատացված արտահոսք և ինքնակրկնօրինակումՀետևաբար, վարակի ժամանակացույցը շաբաթներից կրճատվեց մինչև ընդամենը ժամերի։
DevOps թիմերի համար դասը հստակ է. եթե յուրաքանչյուր տեղադրում կարող է կոդ կատարել, ապա կախվածության յուրաքանչյուր թարմացում կարող է խախտման հավանական կետ լինել։
Հնարավոր սկզբնական վեկտոր և թիրախային հավատարմագրեր
Վաղ վերլուծություն ցույց է տալիս, որ հարձակումը, հավանաբար, սկսվել է գողացված հավատարմագրերըՕրինակ՝ npm-ը կեղծող ֆիշինգային արշավները login կամ MFA հրահանգները կարող էին գրավել մշակողի տոկենները։ Երբ հարձակվողները առաջին անգամ հայտնվեցին, որդը տարածվեց՝ ներկառուցվելով npm փաթեթների մեջ և գողանալով ավելի շատ գաղտնիքներ հետևյալներից՝
- npm կարգավորման ֆայլեր նման
.npmrc, որը հաճախ պարունակում է հրապարակման տոկեններ։ - Միջավայրի փոփոխականներ և կարգավորում GitHub PAT-ներով և CI/CD գաղտնիքները
- Ամպային մետատվյալների վերջնակետեր (AWS, GCP, Azure), ինչը կարճատև լիազորություններ է տալիս կողմնային շարժման համար։
Հետևաբար, տվյալների գողությունը դարձավ մեկնարկային հարթակ։ Գործող npm տոկենների և GitHub գաղտնիքների շնորհիվ Shai-Hulud-ը կարող էր ինքնաբերաբար վերարտադրվել բազմաթիվ փաթեթների և պահոցների միջև՝ առանց լրացուցիչ մարդկային ջանքերի։
Շայ-Հուլուդի մատակարարման շղթայի վրա հարձակման գործադիր ազդեցությունը
Շայ-Հուլուդը մինչ օրս ակտիվ է։ Այս որդը արագացնում է ազդեցության ժամանակացույցը։ Այն, ինչ մի ժամանակ տրոյականի դեպքում շաբաթներ էր տևում, այժմ տեղի է ունենում ժամերի ընթացքում։ Արդյունքում՝ տարածումն ավելի արագ է և ավելի դժվար է զսպել։ Այն առաջ է շարժվում հետևյալ կերպ.
- npm հրապարակային տոկենների և GitHub գաղտնիքների գողություն։
- Վերահրապարակվում է այլ npm փաթեթներում։
- Ավելացվում են վնասակար GitHub Actions աշխատանքային հոսքեր՝ կայունության համար։
Ո՞վ է տուժում.
Հանրային npm փաթեթներ տեղադրող ցանկացած թիմ խոցելի է։ Ավելին, քեշավորված npm կամ GitHub տոկեններ ունեցող մշակողները բախվում են բարձր ռիսկի։ Լայն շրջանակի գաղտնիքներ օգտագործող CI վազողները նույնպես խոցելի են։
Բիզնես ռիսկ
Գործարարության վրա ազդեցությունը արագ աճում է։ Գողացված տոկենները կարող են հանգեցնել հաշվի զավթման, փաթեթների առևանգման և նույնիսկ ամպային չարաշահման։ Բացի այդ, GitHub-ի աշխատանքային հոսքերում պահպանվող մնալը դժվարացնում է դրա մաքրումը։ Հետևաբար, թիմերը պետք է Շայ-Հուլուդին վերաբերվեն որպես շարունակական միջադեպ, այլ ոչ թե ավարտված։
Ինչպես է Shai-Hulud մատակարարման շղթայի հարձակումը գործում npm փաթեթներում
Հարձակվողի նպատակներն ու դրդապատճառները
Արշավը օպտիմալացնում է երեք բան.
- Առաջին նպատակն է՝ գողանալ մուտքային տվյալները մեծ մասշտաբով մշակողների նոութբուքերից և CI գործարկիչներից: Սա ներառում է npm հրապարակման տոկեններ, GitHub տոկեններ և ամպային հավատարմագրեր: Փաստորեն, բազմաթիվ վերլուծություններ հաստատում են համակարգված գաղտնի հավաքագրումը, ինչպիսիք են TruffleHog-ի գործարկումը և ամպային մետատվյալների վերջնակետերի հարցումները:
- Երկրորդ նպատակն է՝ տարածել ավտոմատ կերպով չարաշահելով վարակված պահպանողների հրապարակման իրավունքները: Արդյունքում, մեկ հենարանը արագորեն ընդլայնվում է և վերածվում շատերի, քանի որ այլ փաթեթների նոր վարակված տարբերակները հայտնվում են առանց լրացուցիչ մարդկային ջանքերի:
- Երրորդ նպատակն է՝ պահպանվում և հուսալիորեն արտահոսում GitHub ենթակառուցվածքի միջոցով։ Հարձակվողները ստեղծում են «Շայ-Հուլուդ» անունով հանրային պահոց՝ կրկնակի բազայով64 տվյալներ.json, և բացի այդ, նրանք տեղադրում են աշխատանքային հոսք, որը սերիականացվում է ${{ toJSON(գաղտնիքներ) }} և տեղադրում է այն ստատիկ վեբհուքում։
Հավանական շահույթը ներառում է գրանցամատյաններին և սկզբնական կոդին երկարատև հասանելիություն, ամպային հաշիվներ արագ կողային տեղափոխում և մատակարարման շղթան հետագա զենքի վերածելու հնարավորություն: Հանրային հաշվետվությունները ցույց են տալիս, որ մասնավոր պահոցները հանրությանը հանձնվել են՝ «-միգրացիա» վերջածանց, որը մեծացնում է տվյալների հասանելիությունը և իմպուլսը
Շայ-Հուլուդի բեռնատարի ներսում. փաթեթ.js npm փաթեթներում
Շայ-Հուլուդը նավ է ուղարկում որպես մեծ, վեբ փաթեթով փաթեթավորված և խիստ մանրացված JavaScript ֆայլ (փաթեթ.js, մոտ 3–3.7 ՄԲ) որը կատարվում է a-ից հետինստալյացիա կպչել package.jsonՀետևաբար, Յուրաքանչյուր տեղադրում ավտոմատ կերպով ակտիվացնում է օգտակար բեռը: Այս դիզայնը թաքցնում է նույնականացուցիչները, սեղմում կառավարման հոսքը և ամբողջ տրամաբանությունը տեղափոխում է մեկ արտեֆակտի մեջ, որը կատարվում է տեղադրման ընթացքում: Վերլուծաբանները մշտապես հաստատում են Webpack-ի խմբավորումը, անսովոր ֆայլի չափը և տեղադրման ժամանակ կատարումը:
Մշուշոտման և հակավերլուծության հատկանիշներ, որոնք դուք կտեսնեք նմուշներում.
- Մինիֆիկացված մոդուլի գրաֆիկ թվային մոդուլի ID-ներով, նոսր մեկնաբանություններով և հարթեցված կառավարման հոսքով։ Ավելին,, Այս կառուցվածքը ձեռքով վերանայումը չափազանց դժվարացնում է։
- Տողի թաքցում base64 շերտերի և կառուցման օգնականների միջոցով։ Օրինակ՝, Կրկնվող base64 կոդավորումը և վերծանումը սովորաբար հանդիպում են էքֆիլտրացիայի ռեժիմների շուրջ։
- Դինամիկ առաքում միջոցով գնահատել-ոճի նախշեր և գեներացված ֆունկցիաների մարմիններ, այդպիսով թույլ տալով կոդին փոխել վարքագիծը կատարման ժամանակ։
- Օպերացիոն համակարգի զտում նախընտրել Linux-ի և macOS-ի աշխատանքը, մասնավորապես CI օպերացիոն համակարգերի և մշակողների նոութբուքերի վրա։
Ֆունկցիոնալ տեսանկյունից, փաթեթը մոդուլային է։ Գրառումները նկարագրում են OS-ի հայտնաբերման, ֆայլային համակարգի և git գաղտնի սկանավորման, ամպային SDK-ին մուտք գործելու, GitHub API գործողությունների և տարածման շարժիչի մոդուլներ, որը խմբագրում է պահպանողի սեփականության տակ գտնվող այլ փաթեթները: Փաստորեն, StepSecurity-ն ու ReversingLabs-ը երկուսն էլ ընդգծում են մի գործառույթ, որը ավտոմատ կերպով թարմացնում է փաթեթները վնասակար որսով:
Շայ-Հուլուդում տեղադրման ժամանակի կատարում. Ինչպես են npm փաթեթները ակտիվացնում որդը
Հարձակումը սկսվում է, երբ հետինստալյացիան գործարկում է հանգույցը փաթեթ.js. Այս պահին սկրիպտը նախնականացվում և բացում է աշխատանքային վիճակը հիշողության մեջ՝ նախապատրաստելով որդերի լիարժեք գործունեության համար։
Հայտնաբերում և բերքահավաք
- Բեռնվածությունը dumps է անում process.env ֆայլը և սկանավորում է տեղային ֆայլերը՝ բարձր էնտրոպիա պարունակող գաղտնիքների և տոկենների նախածանցների համար։ Բացի այդ, այն ընդլայնում է ծածկույթը՝ գործարկելով TruffleHog-ը։
- Այն հարցումներ է ուղարկում ամպային մետատվյալների վերջնակետերին՝ կարճաժամկետ մուտքային տվյալներ հավաքելու համար։ Օրինակ, զանգեր դեպի
169.254.169.254AWS-ում կամmetadata.google.internalGCP-ի վրա վարակված տերերի մոտ հաճախ են հանդիպում։ - Հետեւաբար, Հայտնաբերված ցանկացած հավատարմագիր անմիջապես կարող է օգտագործվել նոր npm փաթեթներ հրապարակելու կամ GitHub աշխատանքային հոսքերը խթանելու համար։
Էքզֆիլտրացիա
- Որդը ստեղծում է նոր GitHub պահոց՝ անվանված Շայ-Հուլուդ և գրում է կրկնակի base64-կոդավորված
data.jsonհարթակի մանրամասներով, միջավայրի տվյալների աղբարկղերով և գաղտնիքներով։ Ինչպես երևում է, այս աղմկոտ վարքագիծը հեշտ է նկատել, եթե պաշտպանները գիտեն, թե որտեղ փնտրել։ - Այն նաև տեղադրում է GitHub Actions աշխատանքային հոսք, որը հաճախ գտնվում է անունով ճյուղի վրա։ շայ-հուլուդ, որը սերիականացնում է
${{ toJSON(secrets) }}և տվյալները տեղադրում է ստատիկ վեբհուքի մեջ։ Ավելին, այս աշխատանքային հոսքը շարունակվում է մինչև ինչ-որ մեկը ակտիվորեն հեռացնի այն։
Բազմացում
- Հայտնաբերված ցանկացած npm տոկենի դեպքում payload-ը թվարկում է վարակված պահպանողի բոլոր փաթեթները։ Այնուհետև այն վերցնում է յուրաքանչյուր tarball ֆայլը, ներարկում է bundle.js ֆայլը և հետինստալյացիոն գրառումը, և վերահրապարակում է փաթեթը։
- Արդյունքում, տասնյակ վարակված փաթեթներ կարող են հայտնվել մի քանի ժամվա ընթացքում՝ բազմապատկելով պայթյունի շառավիղը ամբողջ էկոհամակարգում։
Համառություն և բացահայտում
Որդը պահպանում է վնասակար աշխատանքային հոսքերը և, մի քանի դեպքերում, մասնավոր պահոցները վերածում է հանրայինի՝ օգտագործելով… «-միգրացիա» վերջածանց: Ընդհանուր առմամբ, սա ապահովում է, որ հարձակվողը պահպանի իր դիրքը և մեծացնի տվյալների արտահոսքը:
Հիմնական հայտնաբերման նշում
Այս անսովոր օգտագործումը ${{ toJSON(secrets) }} Գործողությունների աշխատանքային հոսքերում հազվադեպ է լինում։ Այնպես որ, թիմերը պետք է այն դիտարկեն որպես բարձր ազդանշանի ցուցիչ որսորդության ժամանակ։
Մաքրված աշխատանքային հոսքի ձևանմուշ, որը պետք է որոնեք
Այս անսովոր օգտագործումը դեպի JSON (գաղտնիքներ) Գործողություններում այս միջադեպում բարձր ազդանշանի ցուցիչ է։
Բարձր մակարդակի տարածման կեղծ կոդ (անվտանգ, նկարագրական)
Վերլուծաբանները դիտարկել են այս ցիկլը մասշտաբային առումով, ինչը բացատրում է վարակված փաթեթների արագ թռիչքը՝ տասնյակներից մինչև հարյուրավորներ։
Ինչու է սա որդ փաթեթային էկոհամակարգում
Որդը վնասակար ծրագիր է, որը տարածվում է ինքնուրույն՝ առանց յուրաքանչյուր փուլում օպերատորի ձեռքով քայլերի անհրաժեշտության։ Օպերացիոն համակարգերում որդերը սովորաբար օգտագործում են ցանցային խոցելիությունները՝ մեկ մեքենայից մյուսը տեղափոխվելու համար։ Ի տարբերություն դրա, Shai-Hulud-ը գործում է npm գրանցամատյանի ներսում։ Դրա արդյունավետ ուղին... վկայականի վերօգտագործում.
Որդը օգտվում է գողացված npm հրապարակման տոկեններից։ Հենց որ այն ստանում է վավերական մուտքագրումներ, այն վերահրապարակում է վարակված տարբերակները նույն պահպանողին պատկանող այլ փաթեթների ներքո։ Հետագայում այդ փաթեթները տեղադրվում են անտեղյակ մշակողների կամ CI գործարկողների կողմից, և ցիկլը կրկնվում է։
Այս պատճառով, անվտանգության վերլուծաբանները, այդ թվում՝ Մութ ընթերցանություն, Շայ-Հուլուդը դասակարգեք որպես ինքնաբազմացող որդ այլ ոչ թե պարզապես տրոյացի կամ տպագրական սխալի դեպք։ Տարբերությունը կարևոր է. տրոյացը սովորաբար վնասում է մեկ տիրոջ, բայց որդը ավտոմատ կերպով ուժեղացնում է իր ազդեցությունը էկոհամակարգի վրա։
«Ինչպես է այն աշխատում» խաբեբա թերթիկ
Շայ-Հուլուդի կյանքի ցիկլը ամփոփելու համար ահա մի թերություն.cisԴրա հիմնական քայլերի վերլուծությունը.
- Փաթեթ՝ հետինստալյացիա տեղադրված է, և
bundle.jsկատարում է։ - Բեռնվածությունը արտածում է միջավայրի փոփոխականները, սկանավորում է ֆայլերը և git պատմությունը, գործարկում է։ Տրյուֆել Հոգև հարցումներ է ուղարկում ամպային մետատվյալների ծառայություններին։ Հետևաբար, գտնված ցանկացած գաղտնիք անմիջապես օգտակար է դառնում։
- Արտահոսքը տեղի է ունենում երկու եղանակով՝ առաջինը՝ ստեղծելով հանրային պահոց՝ անունով Շայ-Հուլուդ կրկնակի base64 կոդավորմամբ
data.json; երկրորդ՝ GitHub Actions աշխատանքային հոսքի ներդրմամբ, որը հրապարակումներ է անում${{ toJSON(secrets) }}դեպի վեբհուք։ - Օգտագործելով ցանկացած գողացված npm տոկեն, որդը վերահրապարակում է վարակված պահպանողի կողմից պատկանող մյուս բոլոր փաթեթները նույն վնասակար որկով։ Այս կերպ վարակը արագորեն բազմանում է։
- Վերջապես, հարձակվողը ավելի շատ գաղտնիքներ ունի, ավելի շատ փաթեթներ տարածելու համար, և համառություն GitHub հաշիվների և պահոցների ներսում։
Ինչպես խուսափել այս տեսակի հարձակումից, գործնականում
Շայ-Հուլուդը արթնացման կոչ է։ Տոկեններ գողացող և վերահրապարակող որդը ապագայի ռիսկ չէ, այն ապրում է... npm փաթեթների էկոհամակարգ այսօր։ Այս տեսակի կանխարգելումը կանխելու համար մատակարարման շղթայի հարձակումըթիմերին անհրաժեշտ են ծրագրավորվող, ավտոմատացված և անմիջապես կիրառվող կառավարման միջոցներ CI/CD pipelineՍրանք նույն պաշտպանություններն են, որոնք դուք արդեն կարող եք իրականացնել Քսիգենի.
Կանգնեցրեք վատ արտեֆակտները դարպասի մոտ
Դուք պետք է սկանավորեք npm փաթեթները և tarball-երը, նախքան դրանք հասնեն մշակողներին կամ CI աշխատանքներին։ Չափազանց մեծ։ bundle.js ֆայլեր, կասկածելի հետինստալյացիա hooks, և խճճման նշիչները բոլորը ծառայում են որպես վաղ կարմիր դրոշներ: Ավելին, սառեցման ժամանակահատվածների և ամրացված տարբերակների կիրառումը pipelines-ը կանխում է թարմ, չստուգված թողարկումների ավտոմատ սպառումը։
Կոշտ CI/CD ըստ նախնականի
Guardrails in CI/CD էական են։ Դրանք մերժում են միաձուլումները կամ տեղադրումները, որոնք ներմուծում են նոր սկրիպտներ կամ երկուական ֆայլեր։ Միաժամանակ, նրանք արգելափակում են աշխատանքային հոսքերը, որոնք սերիականացնում են գաղտնիքները կամ փորձում են արտաքին գրառումներ անել։ Թիմերը պետք է նաև պահանջեն միայն կողպված ֆայլերով տեղադրումներ (npm ci) բոլորի վրա pipelines-ի շնորհիվ կախվածությունների հավաքածուները մնում են վերարտադրելի և անվտանգ։
Նվազեցրեք տոկենների պայթյունի շառավիղը
Գաղտնիքները չպետք է դառնան ձախողման միակ կետեր։ Անընդհատ սկանավորեք կոդը, կարգավորումները և pipeline արտադրանքի համար բացահայտված մուտքային տվյալներՏոկենները պետք է սահմանափակվեն, ունենան կարճ կյանքի տևողություն և ավտոմատ կերպով փոխվեն, երբ հայտնաբերվի ազդեցություն։ Որպես կանոն, կասկածելի հետինստալյացիա կատարած հոսթի վրա օգտագործված ցանկացած տոկեն համարեք խախտված։
Տեսեք որդերի վարքագիծը վաղ փուլում
Անոմալիայի հայտնաբերում գլխավորն է: Օրինակ՝ npm հրապարակումների իրադարձությունների հանկարծակի աճը, անհիմն նոր աշխատանքային հոսքերը կամ տարօրինակ կոդավորված ֆայլերով լցված նոր հանրային պահոցները կարող են վկայել որդերի ակտիվության մասին: Հետևաբար, թիմերը պետք է արագ ահազանգեր հնչեցնեն և մեկուսացնեն ցանկացած սպասարկողի կամ գործարկողի, որը ցույց է տալիս այս նախազգուշացնող նշանները:
Արագ վերանորոգեք՝ առանց կառուցվածքը խափանելու
Արագությունն ու անվտանգությունը պետք է համակցված լինեն։ Ավտոմատացված է։ pull requests կարող է փոխարինել խախտված npm փաթեթները ստուգված տարբերակներով։ Բացի այդ, հասանելիություն և շահագործելիություն Վերլուծությունը ապահովում է, որ թարմացումները մնան նվազագույն և կայուն։ Վերջապես, վերակառուցեք տուժած CI վազորդները մաքուր պատկերներից, երբ ազդեցությունը հաստատվի, կանխելով հարձակման հետագա տարածումը։
Փոխզիջման ցուցիչներ (IoCs)
Շայ-Հուլուդը վերլուծելիս թիմերը պետք է ուշադրություն դարձնեն երկուսին էլ ստատիկ IoC-ներ ֆայլերում և վարքային IoC-ներ in pipelineՄիասին, այս ազդանշանները օգնում են վաղ հայտնաբերել վարակները և արձագանքել մինչև որդերի հետագա տարածումը։
Ստատիկ IoC-ներ
Հետևյալ SHA-256-ի համընկնումները դիտարկվել են bundle.js նմուշներ՝
- 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
- 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
- dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c
Բացի այդ, ուշադրություն դարձրեք այս կրկնվող օրինաչափություններին.
- A
bundle.jsփաթեթի արմատում։ "postinstall": "node bundle.js"ներսումpackage.json.- Անվանված պահոցներ Շայ-Հուլուդ.
- GitHub-ի աշխատանքային հոսքեր, որոնք պարունակում են
${{ toJSON(secrets) }}.
Վարքային IoC-ներ
Ֆայլերի ստորագրություններից զատ, որդերի ակտիվությունը դրսևորվում է նաև վարքագծով։ Օրինակ՝
- Մեկ պահպանողի կողմից npm հրապարակումների հանկարծակի պոռթկումներ։
- Նոր աշխատանքային հոսքեր, որոնք տվյալները փոխանցում են արտաքին վերջնակետեր։
- CI վազորդներից ակտիվացված են POST արտագնա հարցումներ։
- Վերջերս ստեղծված հանրային պահոցներ՝ կոդավորված բլոբներով։
Արագ որսեր
Եզրակացություն. Շայ-Հուլուդից քաղած դասեր
Շայ-Հուլուդի մատակարարման շղթայի վրա հարձակումը npm փաթեթներում տեղեկատվությունը ցույց է տալիս, թե որքան փխրուն է դարձել այսօրվա ծրագրային ապահովման մատակարարման շղթան։ Այս որդը ոչ միայն վնասակար կոդ ավելացնելուց էր, այլև գողացել էր տոկեններ, ուղարկել տվյալներ, ապա ավտոմատ կերպով վերահրապարակել իրեն։ Դրա պատճառով հարձակումը տարածվել է ժամերի ընթացքում՝ շաբաթների փոխարեն։
Մշակողների և DevOps թիմերի համար դասերը հստակ են.
- Յուրաքանչյուր տեղադրում կատարում է կոդ։ Նույնիսկ սովորական npm փաթեթը կարող է թաքցնել հետինստալացիոն որդը։
- Յուրաքանչյուր թոքեն ունի բարձր արժեք։ Գողանալուց հետո այն կարող է օգտագործվել վնասակար ծրագիրը հետագայում տարածելու համար։
- յուրաքանչյուր pipeline ստուգումների կարիք ունի։ Воин жена е во живо во џунглата. се подготвени неа да ја заштити луѓето во wild.steering: - оган na - скок na - движење na .... guardrails կախվածությունների, աշխատանքային հոսքերի և գաղտնիքների վերաբերյալ մեկ զիջումը կարող է արագորեն հարվածել արտադրությանը։
Հետևաբար, Shai-Hulud-ի նման հարձակումները կանխելու համար անհրաժեշտ են ավտոմատ և հեշտ կիրառելի կառավարման միջոցներ: Թիմերը պետք է սկանավորեն npm փաթեթները տեղադրումներից առաջ, օգտագործեն lockfile build-ներ, հայտնաբերեն տարօրինակ հրապարակման գործունեություն և կարճատև պահեն տոկենները: Այս քայլերը այլևս ընտրովի չեն: Դրա փոխարեն, դրանք ժամանակակից աշխարհում կայունության հիմքն են: pipelines.
Xygeni-ում մենք Shai-Hulud մատակարարման շղթայի հարձակումը դիտարկում ենք որպես նախազգուշացում ամբողջ բաց կոդով էկոհամակարգի համար: Կայուն առաջխաղացման ուղին մատակարարման շղթայի անվտանգությունը անմիջապես մշակման գործընթացում ներառելն է, այն կետում, որտեղ կոդը, npm փաթեթները և pipelineմիացնել
Ստորև բերված է Shai-Hulud-ում որպես խախտված հայտարարված npm փաթեթների և տարբերակների ամբողջական ցանկը: Օգտագործեք այն ձեր կողպված ֆայլերը, գրանցամատյանները և CI-ն ստուգելու համար: pipelines ազդեցության համար։
Կոտրված փաթեթների ցանկ
📦 Վնասված npm փաթեթների նախադիտում
| Փաթեթի անունը | տարբերակ | Հրապարակման ամսաթիվը |
|---|---|---|
| json-կանոնների-շարժիչի-պարզեցված | 0.2.1 | 2025-09-14T17:58:51.203Z |
| օդաչու | 0.8.8 | 2025-09-14T18:35:07.600Z |
| mcp-գիտելիքների-գրաֆ | 1.2.1 | 2025-09-14T18:35:09.494Z |
| օդային հրամանատար | 0.3.1 | 2025-09-14T18:35:09.521Z |
| անցումային դարպաս | 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/react-table | 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/config-manager | 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/վավերացում | 0.1.6 | 2025-09-14T20:45:55.595Z |
| @hestjs/core | 0.2.1 | 2025-09-14T20:45:55.888Z |
➡️ Դիտել վնասված փաթեթների ամբողջական ցանկը
| Փաթեթի անունը | տարբերակ | Հրապարակման ամսաթիվը |
|---|---|---|
| json-կանոնների-շարժիչի-պարզեցված | 0.2.1 | 2025-09-14T17:58:51.203Z |
| օդաչու | 0.8.8 | 2025-09-14T18:35:07.600Z |
| mcp-գիտելիքների-գրաֆ | 1.2.1 | 2025-09-14T18:35:09.494Z |
| օդային հրամանատար | 0.3.1 | 2025-09-14T18:35:09.521Z |
| անցումային դարպաս | 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/react-table | 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/config-manager | 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/վավերացում | 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 |
| ng2-ֆայլի-բեռնում | 7.0.3 | 2025-09-15T02:44:29.555Z |
| կոնդենսատորի ծանուցումների մշակիչ | 0.0.2 | 2025-09-15T04:54:48.431Z |
| կոնդենսատոր-միացվող-vonage | 1.0.2 | 2025-09-15T04:54:48.501Z |
| capacitor-plugin-healthapp | 0.0.2 | 2025-09-15T04:54:48.704Z |
| կոնդենսատորandroid թույլտվություններ | 0.0.4 | 2025-09-15T04:54:48.753Z |
| VoIP-callkit | 1.0.2 | 2025-09-15T04:54:49.223Z |
| 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-սերվեր | 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 |




