Се маротиба дар ҳашт моҳ, ҳамон як дастури бозии кирми npm кор кард. Ҳамлагарони гуногун, бастаҳои гуногун, ҳамон механика ва ҳамон як равзанаи вақт байни нашр ва ошкоркунӣ, ки ҳар яки онҳоро имконпазир кард. Агар шумо пурсед, ки кирми npm дар асл чист ва чаро ин намуна ба ҷои ислоҳ шудан такрор мешавад, ин ҷавоби ростқавлона аст, ҳодисаҳо, механика ва ягона фосилае, ки ҳатто як чаҳорчӯбаи мустаҳками дифоӣ ҳанӯз ҳам кушода мегузорад.
Кирми npm чист?
Кирми npm як қисми рамзи зараровар аст, ки дар феҳристи npm нашр мешавад ва пас аз кор кардан ба таври худкор ба дигар бастаҳо паҳн мешавад, одатан бо дуздидани эътимодномаҳои нашри як нигоҳдоранда ва истифодаи онҳо барои ворид кардани ҳамон як бори муфид ба ҳар як бастае, ки нигоҳдоранда назорат мекунад. Ин дар маънои классикӣ "кирм" аст: он интизор намешавад, ки касе онро қасдан насб кунад, он мустақилона, аз як баста ба як баста, аз як ҳисоб ба як ҳисоб, бо суръати мошин паҳн мешавад.
Ин худпаҳншавӣ он чизест, ки ҳодисаи кирми npm-ро аз бастаи оддии зараровар ҷудо мекунад. Як бастаи бад як сӯзан дар ғӯзаи алаф аст. Кирми npm ҳар як нигоҳдорандаи осебдидаро ба нуқтаи нави тақсимот табдил медиҳад ва ғӯзаи алаф сӯзанҳои худро тавлид мекунад.
Бузургтарин ҳодисаҳои кирми npm то ҳол
Соли гузашта ба намунаи кирми npm се озмоиши воқеӣ дода шуд, ки ҳар кадоме аз қаблӣ самараноктар буд:
- Шай-Ҳулуд (сентябри 2025). Аввалин кирми худпаҳншавандаи npm. Он эътимодномаҳои нигаҳдорандаро зери хатар гузошт, сипас онҳоро барои нашри версияҳои зараровари ҳар як бастаи таҳти назорати нигаҳдоранда истифода бурд ва худи таҳиягаронро ба механизми интиқол барои марҳилаи ояндаи кирм табдил дод.
- аксиос (марти 2026). Нармафзори зараровари давлатӣ, ки дар дохили бастае пинҳон шудааст ва тақрибан 100 миллион маротиба дар як ҳафта бозпас гирифта мешавад. Ин кирм дар маънои қатъии паҳншавӣ нест, балки далели он аст, ки ҳамон модели эътимоди экосистемаи npm, ки Шай-Ҳулуд истифода кардааст, метавонад бори воқеан бузургро интиқол диҳад.
- SAP npm (апрели 2026). Дар он вақт ҳамчун як Шай-Ҳулуд хурд тавсиф шуда буд: ҳамон намунаи кирм, ки дар миқёси васеъ такрор мешуд, камтар аз як сол пас аз ҳодисаи аввал. Механизм тағйир наёфта буд. Дифоъҳо низ асосан тағйир наёфта буданд.
Се ҳодисаи кирми npm, як намунаи такроршаванда: ношири боэътимодро зери суол бурдан, аз эътимодномаҳои онҳо барои паҳн кардани худкор истифода бурдан ва барои анҷом додани боқимонда ба фосилаи байни нашрия ва ошкоркунии ҷомеа такя кардан.
Намунае, ки такрор мешавад
Агар ҷузъиёти мушаххасро аз байн баред, ҳар як ҳодисаи кирми npm ҳамон чор зарбаро пайгирӣ мекунад:
- Созиши ҳисоб. Токени нашри нигоҳдоранда, npm login, ё эътимодномаи CI дуздида мешавад, одатан тавассути фишинг, сирри фошшуда ё вобастагии зери хатар, ки минбаъд дар занҷири худи онҳо ҷойгир аст.
- Инъексияи хомӯш. Ҳамлагар версияи нави бастаи қонунӣ ва боэътимодро бо рамзи зараровар илова мекунад, ки аксар вақт дар дохили скрипти postinstall ё дигар скрипти давраи ҳаёт, ки ҳангоми насб кардани он ба таври худкор кор мекунад, ворид мешавад.
- Паҳншавии автоматӣ. Агар нигоҳдорандаи осебдида бастаҳои дигарро идора кунад ё худи скрипти зараровар эътимодномаҳои бештарро ҷамъ кунад, кирм бе амали минбаъдаи ҳамлагар ба бастаи навбатӣ ва нигоҳдорандаи навбатӣ паҳн мешавад.
- Таъхир дар ошкоркунӣ. Ин баста дар феҳристи системаҳо ҷойгир аст ва онро ҳар кас метавонад насб кунад, то он даме ки касе онро пай барад, хабар диҳад ва он барқарор карда шавад. Ин таъхир, соатҳо барои баъзе ҳодисаҳо, рӯзҳо барои дигарон, тамоми тирезаест, ки кирм ба он ниёз дорад.
Дарк кардани он, ки зарбаи чорум воқеан барои мудофиа муҳим аст. Ҳар як стратегияи коҳиш додани ҳодисаи кирми npm, дар асл, кӯшиши кам кардан ё аз байн бурдани ин таъхири ошкоркунӣ мебошад.
Чаҳорчӯбае, ки сазовори истинод аст: Ҷавоби SIP ба мушкилоти сардшавии вақт
На ҳар як посух ба ин намуна аз ҷониби фурӯшанда меояд. Яке аз равшантаринҳо ин аст SIP, Нақшаи фаврии амниятии Муҳаммад-Алӣ Арабӣ, чаҳорчӯбаи фавқулоддаи панҷназоратӣ барои хатари занҷираи таъминоти нармафзор, ки аз як саволи хеле амалӣ, ки дар охири ҷаласаи SafeDev дода шуда буд, бармеояд: "Агар мо танҳо чанд корро карда тавонем, аввал бояд чӣ кор кунем?"
Идоракунии дуюми SIP комилан ба мушкили кирми npm нигаронида шудааст: вобастагиҳои санҷиданашударо бо давраи панҷрӯзаи хунуккунӣ ях кунед ва скриптҳои давраи ҳаётро ғайрифаъол кунед, то ки пас аз насби зараровар ба таври худкор ҳангоми насб иҷро нашавад. Дар амал, ин аст min-release-age=5 ва ignore-scripts=true дар як лоиҳа .npmrc, дар CI татбиқ карда шудааст, то файли қулфшуда наметавонад бастаи дирӯз нашршударо оромона ҳал кунад. Ин як назорати воқеан боэътимод ва камсамар аст ва он мустақиман ба ҳамон таъхири ошкоркунӣ, ки ҳар як ҳодисаи кирми npm аз он вобаста аст, нигаронида шудааст. Ба ин ҷо ғӯтавар шавед:
Дар куҷо равзанаи хунуккунӣ то ҳол фосила мегузорад
Давраи хунуккунӣ як шартгузорӣ аст: ҷомеа пеш аз ба охир расидани мӯҳлати интизорӣ бастаи зарароварро пай мебарад ва дар бораи он хабар медиҳад. Аксари вақт, ин шартгузорӣ самараи худро медиҳад. Қисми назарраси бастаҳои осебдида дар чанд рӯзи аввали нашр қайд карда мешаванд, ки маҳз аз ҳамин сабаб равзанаи панҷрӯза як пешфарзии оқилона аст.
Аммо кирми npm мисли бастаи маъмулии зараровар рафтор намекунад ва ин он чизеро, ки як давраи хунуккунии муқаррарӣ барои шумо карда метавонад ва наметавонад, тағйир медиҳад.
Пеш аз буданcisдар бораи суръат: Кирми зуд паҳншаванда дар асл худи хунуккуниро мағлуб намекунад. Агар шумо синну соли қатъии ҳадди ақали озодкуниро риоя кунед, бастаҳое, ки дар давоми он мавҷи аввалия нашр шудаанд, ҳанӯз ҳам барои ворид шудан ба сохтмон хеле нав ҳастанд, новобаста аз он ки кирм дар ин муддат чанд бастаро вайрон мекунад. Суръат муҳим аст, аммо он барои ҳамаи онҳое, ки хунуккуниро иҷро намекунанд, муҳим аст, на барои мағлуб кардани он чизе, ки аллакай маҷбур шудааст.
Маҳдудияти воқеӣ сабр аст. Бори эҳтиёткортар метавонад пас аз давраи хунуккунӣ хомӯш бошад ва танҳо пас аз гузаштани рӯзҳо ва пир шудани баста ба минтақаи "боэътимод" фаъол шавад.cisзеро он медонад, ки як сардшавии муқарраршуда интизор аст. Ин сенарияест, ки дар он танҳо як сардшавии муқарраршуда кофӣ нест ва маҳз дар он ҷо чизе ба монанди ошкоркунии далелҳои MEW бояд дар паҳлӯи он бошад, на ба ҷои он.
Ҳарду ҳолати нокомӣ камбудие дар тафаккури SIP нестанд. Вақти хунуккунӣ як шарти ошкоркунии ҷомеа аст ва ошкоркунии ҷомеа сатҳи поёнӣ дорад: он наметавонад он чизеро, ки ҳеҷ кас ҳанӯз гузориш накардааст, сабт кунад. Ин холигии хоси SIP нест, ин маҳдудияти сохтории ҳама гуна дифоъ аст, ки пеш аз амал кардан интизори имзо, тавсия ё гузориши оммавӣ аст.
Чӣ тавр MEW фосилаи байни тирезаҳои хунуккуниро мепӯшонад
Ин пеш азcisЭли фосила Огоҳии барвақтии нармафзори зараровари Xygeni (MEW) барои бастани маълумот сохта шудааст. Ба ҷои интизории гузоришҳои ҷомеа ё имзои нашршуда, MEW пайваста NPM, PyPI ва Maven-ро ҳангоми нашри бастаҳо ва версияҳои нав скан мекунад ва рафторро таҳлил мекунад, на бо таҳдидҳои маълум. Вақте ки чизе зараровар ба назар мерасад, он карантин мешавад ва ин бозёфт аз ҷониби муҳаққиқони амниятӣ пеш аз ошкор кардани он, на баъд аз он тасдиқ карда мешавад.
Ин фарқият барои ҳарду ҳолати нокомии кирми npm, ки дар боло зикр шудаанд, муҳим аст. Дар муқобили кирми зуд паҳншаванда, муайянкунии пеш аз имзо ба панҷ рӯзи хунуккунӣ ниёз надорад, ки онро дорад. Дар муқобили бори бемор ва хобида, таҳлили рафтории MEW ба синну сол ё обрӯ ниёз надорад, балки ба он чизе, ки рамз дар асл мекунад, менигарад, аз ин рӯ, интизор шудани тирезаи хунуккунӣ ба ҳамлагар чизе намедиҳад.
Девори оташи вобастагии MEW инро то худи насбкунӣ васеъ мекунад ва бастаи зарароварро дар вақти воқеӣ масдуд мекунад, ҳатто агар он аз санҷишҳои қаблӣ гузашта бошад ва ҳамон қабати ошкоркунӣ онро фаро мегирад. CI/CD тарафи ҳодисаи кирми npm: намунаи кушодани шоха, ворид кардан, аз нав қулф кардан, ки ба ҳамлагар имкон медиҳад, ки зарароварро тела диҳад commit ва оҳиста-оҳиста пайҳои онҳоро пӯшонанд, агар ин ба ҳар ҳол рӯй диҳад, бо пайгирии пурраи аудит.
SIP ва MEW ба як савол дар сатҳҳои гуногун ҷавоб медиҳанд
Ҳеҷ яке аз инҳо назорати хунуккунии SIP-ро нодуруст намегардонад ва бояд ошкоро гуфт: хунуккунии панҷрӯза бо ғайрифаъол кардани скриптҳои давраи ҳаёт то ҳол яке аз зудтарин ва арзонтарин дифоъҳоест, ки як даста метавонад бар зидди як ҳодисаи оддии кирми npm татбиқ кунад ва он ба ҳама гуна нақшаи ҷиддии сахтгирии занҷираи таъминот дохил мешавад. Он чизе, ки он наметавонад анҷом диҳад, аз рӯи тарҳ, ин аст, ки он чизеро, ки ҷомеа ҳанӯз пайдо накардааст, дастгир кунад. Ин кор барои ошкоркунии пайваста ва бар асоси рафтор дар зери хунуккунӣ аст, на ба ҷои он.
Ин ду равиш якҷоя карда шуда, ҳарду тарафи як мушкилотро фаро мегиранд: SIP сохтмонро сахттар мекунад pipeline, яхбандии вобастагӣ ва тасвири контейнер дар атрофи манзараи таҳдиди маълум ва ошкоршуда, дар ҳоле ки ошкоркунии пеш аз имзои MEW ҳодисаҳои кирми npm-ро фаро мегирад, ки ҳанӯз ошкор нашудаанд, онҳоеро, ки дар равзанаи хунуккунӣ, аз рӯи мантиқи худ, пешбинӣ карда наметавонанд.
Саволҳои зиёд такрормешуда
Кирми npm чист, дар як ҷумла?
Коди зарароваре, ки дар npm нашр мешавад ва ба таври худкор ба дигар бастаҳо паҳн мешавад, одатан тавассути дуздидани эътимодномаи нигоҳдоранда ва истифодаи онҳо барои ворид кардани ҳамон бор ба ҷои дигар, бидуни амали минбаъдаи ҳамлагар.
Оё ҳар як бастаи зараровари npm як кирми npm аст?
Не. Бастаи зарароваре, ки худ аз худ паҳн намешавад, ҳамлаи занҷираи таъминот аст, аммо кирм нест. Он чизе, ки ҳодисаи кирми npm-ро махсусан муайян мекунад, марҳилаи паҳншавии худ аст: як созиш ба таври худкор ба созиши дигар мебарад.
Оё давраи хунукшавии вобастагӣ кирми npm-ро бозмедорад?
Ин хатарро ба таври назаррас коҳиш медиҳад, зеро аксари бастаҳои зараровар дар давоми чанд рӯзи аввали нашр гузориш дода мешаванд. Аммо як давраи хунуккунӣ шартгузорӣ ба суръати ошкоркунии ҷомеа аст ва кирми зуд паҳншаванда ё қасдан хобидаи npm-ро метавон махсус барои бартараф кардани ин оина сохта кард.
Чӣ воқеан кирми npm-ро пеш аз давраи хунуккунӣ мегирад?
Сканкунии пайваста ва бар асоси рафтор, ки аз имзо ё гузориши оммавии мавҷуда вобаста нест. Ин абзорҳои мушаххаси муайянкунии пеш аз имзо ба монанди MEW-и Xygeni мебошанд, ки барои пӯшидани онҳо сохта шудаанд.







