ఒక డిపెండబోట్ బంప్ ఒక వార్మ్ను ప్రచురించింది. 22 ప్యాకేజీలు.
ఒక బాట్ పుల్ రిక్వెస్ట్ను తెరుస్తుంది.
ఒక బాట్ పుల్ రిక్వెస్ట్ను తెరుస్తుంది. ఒక మనిషి 24 నిమిషాల తర్వాత దాన్ని విలీనం చేస్తాడు. ఆ తర్వాత 95 నిమిషాలకు, ఒక వార్మ్ అతని CIలో కనుగొన్న టోకెన్తో, అతని పేరు మీద, అతని 22 npm ప్యాకేజీల 110 హానికరమైన వెర్షన్లను ప్రచురించింది.
వ్రాతపూర్వక సంచికను చదవండి (ఇంగ్లీష్) ↗
ఈ వీడియో ఏమి కవర్ చేస్తుంది
- ఒక బాట్, ఒక మనిషి, ఒక వార్మ్
- అది ఎలా జరిగింది, npm ఎందుకు అనుమతించింది, ఎవరికి నింద
- టైమ్లైన్: విషపూరిత కాష్
- 21:48 — డిపెండబోట్ బంప్
- ఇది ఎందుకు పనిచేస్తుంది
అనువదించబడిన ట్రాన్స్క్రిప్ట్
అసలైన ఆంగ్ల కథనం నుండి అనువదించబడింది. అందుబాటులో ఉన్న ఆడియో మరియు క్యాప్షన్లు YouTube ద్వారా నియంత్రించబడతాయి.
ఒక బాట్, ఒక మనిషి, ఒక వార్మ్
0:00 ఒక బాట్ పుల్ రిక్వెస్ట్ను తెరుస్తుంది; ఒక మనిషి ఇరవై నాలుగు నిమిషాల తర్వాత దాన్ని విలీనం చేస్తాడు. తొంభై ఐదు నిమిషాల తర్వాత, ఒక వార్మ్ ప్రచురించింది అతని నూట పది వెర్షన్లు ప్యాకేజీలు, అతని వలె. TanStack యొక్క పోస్ట్మార్టెంలో అప్స్ట్రీమ్ టైమ్స్టాంప్లు ఉన్నాయి, డౌన్స్ట్రీమ్ మెయింటెయినర్ యొక్క మిగిలినవి ఉన్నాయి, మరియు హ్యాకర్ న్యూస్ దానికి పదకొండు వందల పాయింట్లు మరియు ఒక పేరు ఇస్తుంది: Mini Shai-Hulud. ఇది ఎలా జరుగుతుంది, npm ఎందుకు అనుమతిస్తుంది, ఎవరికి నింద.
అది ఎలా జరిగింది, npm ఎందుకు అనుమతించింది, ఎవరికి నింద
0:21 ఇది The Daily Diff, పోస్ట్మార్టెం. మే 11, ఉదయం. ఒక పేరు మార్చబడిన ఫోర్క్ TanStack Router కు వ్యతిరేకంగా పుల్ రిక్వెస్ట్ను తెరుస్తుంది. ఇది గంటలోపు ముగుస్తుంది, కానీ ఒక బెంచ్మార్క్ వర్క్ఫ్లో ఇప్పటికే దాని కోడ్ను అమలు చేసింది మరియు
టైమ్లైన్: విషపూరిత కాష్
0:33 విడుదల వర్క్ఫ్లో ఉపయోగించే కీ కింద ఒక విషపూరిత కాష్ను సేవ్ చేసింది. పందొమ్మిది-ఇరవై. ఒక చట్టబద్ధమైన విలీనం విడుదలను అమలు చేస్తుంది. కాష్ తిరిగి వస్తుంది, ఒక బైనరీ రన్నర్ యొక్క మెమరీని చదువుతుంది, పబ్లిష్ టోకెన్ను ఎత్తుకుని, నలభై రెండు ప్యాకేజీలలో ఎనభై నాలుగు వెర్షన్లను షిప్ చేస్తుంది, చెల్లుబాటు అయ్యే ప్రొవెనెన్స్తో. పరీక్షలు విఫలమవుతాయి. అది ఎలాగైనా ప్రచురిస్తుంది. పందొమ్మిది నలభై ఆరు, ఒక StepSecurity పరిశోధకుడు సమస్యను నమోదు చేస్తాడు; తొమ్మిది UTC నాటికి అన్నీ డిప్రెకేట్ చేయబడ్డాయి మరియు సలహా అందుబాటులో ఉంది.
0:55 డిప్రెకేట్ చేయబడింది అంటే పోయింది కాదు: npm డిపెండెంట్లు ఉన్న దేన్నీ అన్పబ్లిష్ చేయడానికి నిరాకరిస్తుంది, కాబట్టి ఇది గంటల తరబడి ఇన్స్టాల్ చేయదగినదిగా ఉంటుంది. ఇరవై ఒక్క నలభై ఎనిమిది. తొమ్మిది-స్టార్ ఏవియేషన్-డేటా ప్రాజెక్ట్లో, డిపెండబోట్ తన సాధారణ పుల్ రిక్వెస్ట్ను తెరుస్తుంది: dev-dependencies గ్రూప్ను బంప్ చేయండి, పదమూడు అప్డేట్లు. రెండు విషపూరిత TanStack వెర్షన్లు. ఇరవై రెండు-పన్నెండు: విలీనం చేయబడింది. పబ్లిష్ వర్క్ఫ్లో టోకెన్తో npm C-Iని అమలు చేస్తుంది
21:48 — డిపెండబోట్ బంప్
1:15 పరిధిలో; ఒక ప్రిపేర్ స్క్రిప్ట్ దాన్ని చదువుతుంది, మరియు ఇరవై రెండు-పదిహేడుకు వార్మ్ ప్రచురిస్తుంది అతని వలె. టోకెన్ చేరుకునే ప్రతి ప్యాకేజీ యొక్క ఐదు వెర్షన్లు, పాత సైడ్ ప్రాజెక్ట్ కూడా: ప్రతిదానికీ ఒక క్లాసిక్ టోకెన్. తొంభై ఐదు నిమిషాల్లో నూట పది వెర్షన్లు. అతను అర్ధరాత్రి తర్వాత ఇమెయిల్ ద్వారా కనుగొంటాడు. ఇది ఎందుకు పనిచేస్తుంది. ఒకటి: npm install డిఫాల్ట్గా అపరిచితుల జీవితచక్ర స్క్రిప్ట్లను అమలు చేస్తుంది, మరియు git డిపెండెన్సీ యొక్క ప్రిపేర్ స్క్రిప్ట్ లెక్కించబడుతుంది.
1:39 రెండు: వార్మ్ ఒకే ఒక విషయం కోరుకుంటుంది: రెండవ కారకం లేకుండా ప్రచురించే టోకెన్. అప్పుడు అది ఆ మెయింటెయినర్ ఇంకా ఏమి కలిగి ఉన్నాడో రిజిస్ట్రీని అడుగుతుంది, మరియు దానంతటదే లోపల ఉన్నదానితో అన్నింటినీ తిరిగి ప్రచురిస్తుంది. మూడు: గొలుసులో ఏదీ వ్యక్తి కాదు.
ఇది ఎందుకు పనిచేస్తుంది
1:51 ఒక బాట్ ప్రతిపాదిస్తుంది, ఒక పైప్లైన్ ఇన్స్టాల్ చేస్తుంది, మరియు వార్మ్ సహాయం చేస్తుంది: దాని డెడ్-డ్రాప్ బ్రాంచ్ల పేరు dependabot slash github-actions slash fremen. git blame. npm యొక్క ఇన్స్టాల్ మోడల్, యాభై ఐదు శాతం: ఇన్స్టాల్పై స్క్రిప్ట్లు అమలు అవుతాయి, డిప్రెకేట్ చేయబడినవి ఇన్స్టాల్ చేయదగినవిగా ఉంటాయి, రెండు-కారకాల-బైపాస్ టోకెన్లు ఉన్నాయి. TanStack యొక్క CI, ఇరవై ఐదు: కాష్కి వ్రాయడానికి యాక్సెస్తో ఫోర్క్ కోడ్ను అమలు చేస్తున్న ఆడిట్ చేయబడని పుల్ రిక్వెస్ట్ టార్గెట్ వర్క్ఫ్లో. కాష్కి వ్రాయడానికి యాక్సెస్తో ఫోర్క్ కోడ్ను అమలు చేస్తున్న ఆడిట్ చేయబడని పుల్ రిక్వెస్ట్ టార్గెట్ వర్క్ఫ్లో. బంప్ అలవాటు, పదిహేను: ఇరవై నాలుగు నిమిషాల్లో పదమూడు అప్డేట్లు విలీనం చేయబడ్డాయి, గదిలో టోకెన్.
2:17 డిపెండబోట్, ఐదు: వార్మ్ దాని యూనిఫాం ధరించేంత నమ్మదగినది.
git blame
2:20 బ్లాస్ట్ రేడియస్: నలభై రెండు TanStack ప్యాకేజీలు. తొమ్మిది స్టార్లు ఉన్న ప్రాజెక్ట్ నుండి ఇరవై రెండు డౌన్స్ట్రీమ్. వార్మ్ మిస్ట్రల్కు చేరుకున్న తర్వాత వంద అరవై కంటే ఎక్కువ ఎకోసిస్టమ్-వ్యాప్తంగా. ప్రతి అప్స్ట్రీమ్ వెర్షన్ చెల్లుబాటు అయ్యే సంతకాన్ని కలిగి ఉంది: అధికారిక పైప్లైన్ ద్వారా నిర్మించబడింది. నిజం. తీర్పు, పోస్ట్మార్టెం: SHIP IT. రెండు మెయింటెయినర్లు ఒక రోజులో టైమ్స్టాంప్ చేసిన పోస్ట్మార్టెమ్లను పోస్ట్ చేస్తారు; మూడు రోజుల్లో, డౌన్స్ట్రీమ్ పైప్లైన్ ignore-scripts తో ఇన్స్టాల్ చేస్తుంది, బిల్డ్ను పబ్లిష్ నుండి వేరు చేస్తుంది, మరియు దీర్ఘకాలిక టోకెన్ను తొలగిస్తుంది.
బ్లాస్ట్ రేడియస్
2:47 npm యొక్క డిఫాల్ట్లు కదల్లేదు. సోమవారం: ఇన్స్టాల్పై ignore-scripts, మరియు దాన్ని అమలు చేసే జాబ్ నుండి పబ్లిష్ టోకెన్ బయట. మీరు ఇంకా మాట్లాడటానికి అనుమతించబడని సంఘటనను నాకు పంపండి, కామెంట్లలో, లేదా at thedailydiff.dev. మరియు ఈ రోజుకి ఇది diff.
తీర్పు
3:00 నేను Axrisi నుండి నికోని. బాధ్యతాయుతంగా విలీనం చేయండి.
మూలాలు
- 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



