ડિપેન્ડબોટના બમ્પે એક વોર્મ પ્રકાશિત કર્યો. 22 પેકેજો.
એક બોટ પુલ રિક્વેસ્ટ ખોલે છે.
એક બોટ પુલ રિક્વેસ્ટ ખોલે છે. એક માનવી તેને 24 મિનિટ પછી મર્જ કરે છે. તે પછી 95 મિનિટમાં, એક વોર્મે તેના CI માંથી મળેલા ટોકન વડે, તેના નામ હેઠળ, તેના 22 npm પેકેજોના 110 દૂષિત વર્ઝન પ્રકાશિત કર્યા છે.
લખેલી આવૃત્તિ વાંચો (અંગ્રેજી) ↗
આ વીડિયોમાં શું આવરી લેવામાં આવ્યું છે
- એક બોટ, એક માનવી, એક વોર્મ
- તે કેવી રીતે થયું, npm એ તેને શા માટે મંજૂરી આપી, કોને દોષ મળે છે
- સમયરેખા: ઝેરી કેશ
- 21:48 — ડિપેન્ડબોટ બમ્પ
- તે શા માટે કામ કરે છે
અનુવાદિત ટ્રાન્સક્રિપ્ટ
મૂળ અંગ્રેજી કથામાંથી અનુવાદિત. ઉપલબ્ધ ઑડિઓ અને કૅપ્શન્સ YouTube દ્વારા નિયંત્રિત થાય છે.
એક બોટ, એક માનવી, એક વોર્મ
0:00 એક બોટ પુલ રિક્વેસ્ટ ખોલે છે; એક માનવી તેને ચોવીસ મિનિટ પછી મર્જ કરે છે. પંચાણું મિનિટ પછી, એક વોર્મે પ્રકાશિત કર્યું છે તેના એકસો દસ વર્ઝન પેકેજો, તેના તરીકે. ટેનસ્ટેકની પોસ્ટમોર્ટમમાં અપસ્ટ્રીમ ટાઇમસ્ટેમ્પ્સ છે, ડાઉનસ્ટ્રીમ મેઇન્ટેઇનરના બાકીના છે, અને હેકર ન્યૂઝ તેને અગિયારસો પોઇન્ટ અને એક નામ આપે છે: મિની શાઈ-હુલુડ. તે કેવી રીતે થાય છે, npm તેને શા માટે મંજૂરી આપે છે, કોને દોષ મળે છે.
તે કેવી રીતે થયું, npm એ તેને શા માટે મંજૂરી આપી, કોને દોષ મળે છે
0:21 આ ધ ડેઇલી ડિફ છે, પોસ્ટમોર્ટમ. 11 મે, સવાર. ટેનસ્ટેક રાઉટર સામે એક નામ બદલેલી ફોર્ક પુલ રિક્વેસ્ટ ખોલે છે. તે કલાકમાં બંધ થઈ જાય છે, પરંતુ એક બેન્ચમાર્ક વર્કફ્લોએ તેનો કોડ પહેલાથી જ ચલાવ્યો છે અને
સમયરેખા: ઝેરી કેશ
0:33 રિલીઝ વર્કફ્લો ઉપયોગ કરશે તેવી કી હેઠળ એક ઝેરી કેશ સાચવી છે. ઓગણીસ-વીસ. એક કાયદેસર મર્જ રિલીઝ ચલાવે છે. કેશ પાછો આવે છે, એક બાઈનરી રનરની મેમરી વાંચે છે, પબ્લિશ ટોકન ઉપાડે છે, અને બેતાળીસ પર ચોર્યાસી વર્ઝન મોકલે છે પેકેજો, માન્ય પ્રોવનન્સ સાથે. પરીક્ષણો નિષ્ફળ જાય છે. તે છતાં પણ પ્રકાશિત કરે છે. ઓગણીસ છતાલીસ, એક સ્ટેપસિક્યોરિટી સંશોધક મુદ્દો દાખલ કરે છે; નવ યુટીસી સુધીમાં બધું જ અપ્રચલિત છે અને સલાહ બહાર છે.
0:55 અપ્રચલિત એટલે ગયું નથી: npm નિર્ભરતા ધરાવતી કોઈપણ વસ્તુને અપ્રકાશિત કરવાનો ઇનકાર કરે છે, તેથી તે કલાકો સુધી ઇન્સ્ટોલ કરી શકાય તેવું રહે છે. એકવીસ અડતાલીસ. નવ-સ્ટાર ઉડ્ડયન-ડેટા પ્રોજેક્ટમાં, ડિપેન્ડબોટ તેની નિયમિત પુલ રિક્વેસ્ટ ખોલે છે: dev-dependencies જૂથને બમ્પ કરો, તેર અપડેટ્સ. બે ઝેરી ટેનસ્ટેક વર્ઝન છે. બાવીસ-બાર: મર્જ થયું. પબ્લિશ વર્કફ્લો સ્કોપમાં ટોકન સાથે npm C-I ચલાવે છે;
21:48 — ડિપેન્ડબોટ બમ્પ
1:15 એક પ્રિપેર સ્ક્રિપ્ટ તેને વાંચે છે, અને બાવીસ-સત્તર વાગ્યે વોર્મ પ્રકાશિત કરે છે તેના તરીકે. ટોકન જ્યાં પહોંચે છે તે દરેક પેકેજના પાંચ વર્ઝન, એક જૂનો સાઇડ પ્રોજેક્ટ પણ: દરેક વસ્તુ માટે એક ક્લાસિક ટોકન. પંચાણું મિનિટમાં એકસો દસ વર્ઝન. તેને મધ્યરાત્રિ પછી ઇમેઇલ દ્વારા ખબર પડે છે. તે શા માટે કામ કરે છે. એક: npm ઇન્સ્ટોલ ડિફૉલ્ટ રૂપે અજાણ્યાઓના લાઇફસાઇકલ સ્ક્રિપ્ટ્સ ચલાવે છે, અને ગીટ ડિપેન્ડન્સીની પ્રિપેર સ્ક્રિપ્ટ ગણાય છે.
1:39 બે: વોર્મને એક જ વસ્તુ જોઈએ છે: એક ટોકન જે બીજા પરિબળ વિના પ્રકાશિત થાય છે. પછી તે રજિસ્ટ્રીને પૂછે છે કે તે મેઇન્ટેઇનર પાસે બીજું શું છે, અને તેની અંદર પોતાની જાતને સાથે ફરીથી પ્રકાશિત કરે છે. ત્રણ: ચેઇનમાં કંઈ પણ વ્યક્તિ નથી.
તે શા માટે કામ કરે છે
1:51 એક બોટ પ્રપોઝ કરે છે, એક પાઇપલાઇન ઇન્સ્ટોલ કરે છે, અને વોર્મ તેની તરફેણ પરત કરે છે: તેની ડેડ-ડ્રોપ શાખાઓનું નામ ડિપેન્ડબોટ સ્લેશ ગીટહબ-એક્શન્સ સ્લેશ ફ્રેમેન છે. ગીટ બ્લેમ. npm નું ઇન્સ્ટોલ મોડેલ, પંચાવન ટકા: ઇન્સ્ટોલ પર સ્ક્રિપ્ટ્સ ચાલે છે, અપ્રચલિત ઇન્સ્ટોલ કરી શકાય તેવું રહે છે, ટુ-ફેક્ટર-બાયપાસ ટોકન અસ્તિત્વમાં છે. ટેનસ્ટેકનું CI, પચ્ચીસ: એક અનઓડિટેડ પુલ રિક્વેસ્ટ ટાર્ગેટ વર્કફ્લો ચાલે છે કેશમાં રાઇટ એક્સેસ સાથે ફોર્ક કોડ. બમ્પ આદત, પંદર: ચોવીસ મિનિટમાં તેર અપડેટ્સ મર્જ થયા, રૂમમાં ટોકન.
2:17 ડિપેન્ડબોટ, પાંચ: એટલો વિશ્વાસપાત્ર કે વોર્મ તેનો યુનિફોર્મ પહેરે છે.
ગીટ બ્લેમ
2:20 બ્લાસ્ટ રેડિયસ: બેતાળીસ ટેનસ્ટેક પેકેજો. ડાઉનસ્ટ્રીમ બાવીસ, નવ સ્ટારવાળા પ્રોજેક્ટમાંથી. વોર્મ મિસ્ટ્રલ સુધી પહોંચે પછી ઇકોસિસ્ટમ-વ્યાપી એકસો સાઠથી વધુ. દરેક અપસ્ટ્રીમ વર્ઝનમાં માન્ય સહી હતી: સત્તાવાર દ્વારા બનાવવામાં આવી હતી પાઇપલાઇન. સાચું. ચુકાદો, પોસ્ટમોર્ટમ: SHIP IT. બંને મેઇન્ટેઇનરો એક દિવસની અંદર ટાઇમસ્ટેમ્પ્ડ પોસ્ટમોર્ટમ પોસ્ટ કરે છે; ત્રણ દિવસની અંદર, ડાઉનસ્ટ્રીમ પાઇપલાઇન ignore-scripts સાથે ઇન્સ્ટોલ થાય છે, બિલ્ડને પબ્લિશથી અલગ કરે છે, અને લાંબા સમય સુધી ચાલતા ટોકનને છોડી દે છે.
બ્લાસ્ટ રેડિયસ
2:47 npm ના ડિફૉલ્ટ ખસ્યા નથી. સોમવાર: ઇન્સ્ટોલ પર ignore-scripts, અને તે ચલાવતી જોબમાંથી પબ્લિશ ટોકન બહાર. તમે હજુ પણ જેના વિશે વાત કરવાની મંજૂરી નથી તે ઘટના મને મોકલો, ટિપ્પણીઓમાં, અથવા thedailydiff.dev પર. અને આજ માટે આટલો ડિફ.
ચુકાદો
3:00 હું એક્સરીસીથી નિકો છું. જવાબદારીપૂર્વક મર્જ કરો.
સ્ત્રોતો
- TanStack postmortem (Tanner Linsley, May 11, refined May 15)tanstack.com
- TanStack "Hardening TanStack After the npm Compromise" (May 12)tanstack.com
- TanStack/router#7383 — the StepSecurity detection issuegithub.com
- Downstream incident post, @squawk/* (May 12)github.com
- Downstream hardening post (May 14)github.com
- The Dependabot PR #246 (opened 21:48 UTC, merged 22:12)github.com
- @tan_stack advisory post, 21:19 UTCx.com
- StepSecurity — worm internals, bypass_2fa search, Dependabot-style branch nameswww.stepsecurity.io
- Socketsocket.dev
- Aikido — "over 160 packages, including Mistral"www.aikido.dev
- Hacker News (1,097 points)news.ycombinator.com



