+− THE DAILY DIFFdev & AI news
SHIP IT

ایک ڈیپنڈابوٹ نے ایک ورم شائع کیا۔ 22 پیکیجز۔

ایک بوٹ ایک پل کی درخواست کھولتا ہے۔

ایک بوٹ ایک پل کی درخواست کھولتا ہے۔ ایک انسان اسے 24 منٹ بعد ضم کرتا ہے۔ اس کے 95 منٹ بعد، ایک ورم نے اس کے 22 npm پیکیجز کے 110 نقصان دہ ورژن، اس کے نام سے، ایک ٹوکن کے ساتھ جو اسے اس کے CI میں ملا، شائع کر دیے ہیں۔

تحریری ایڈیشن پڑھیں (انگریزی) ↗

اس ویڈیو میں کیا شامل ہے

  • ایک بوٹ، ایک انسان، ایک ورم
  • یہ کیسے ہوا، npm نے اسے کیوں اجازت دی، کس پر الزام آتا ہے
  • ٹائم لائن: زہریلا کیشے
  • 21:48 — ڈیپنڈابوٹ بَمپ
  • یہ کیوں کام کرتا ہے

ترجمہ شدہ ٹرانسکرپٹ

اصل انگریزی بیان سے ترجمہ کیا گیا۔ دستیاب آڈیو اور کیپشنز یوٹیوب کے زیر انتظام ہیں۔

ایک بوٹ، ایک انسان، ایک ورم

0:00 ایک بوٹ ایک پل درخواست کھولتا ہے؛ ایک انسان اسے چوبیس منٹ بعد ضم کرتا ہے۔ پچانوے منٹ بعد، ایک ورم نے شائع کیا ہے اس کے ایک سو دس ورژن پیکیجز، اس کے طور پر۔ TanStack کا پوسٹمارٹم اپ اسٹریم ٹائم سٹیمپس رکھتا ہے، ڈاؤن اسٹریم مینٹینر کا باقی رکھتا ہے، اور ہیکر نیوز اسے گیارہ سو پوائنٹس اور ایک نام دیتا ہے: Mini Shai-Hulud۔ یہ کیسے ہوتا ہے، npm اسے کیوں اجازت دیتا ہے، کس پر الزام آتا ہے۔

یہ کیسے ہوا، npm نے اسے کیوں اجازت دی، کس پر الزام آتا ہے

0:21 یہ The Daily Diff ہے، پوسٹمارٹم۔ 11 مئی، صبح۔ ایک نامی فورک TanStack Router کے خلاف ایک پل درخواست کھولتا ہے۔ یہ ایک گھنٹے کے اندر بند ہو جاتا ہے، لیکن ایک بینچ مارک ورک فلو نے پہلے ہی اپنا کوڈ چلا لیا ہے اور

ٹائم لائن: زہریلا کیشے

0:33 ایک زہریلا کیشے اس کلید کے تحت محفوظ کیا ہے جسے ریلیز ورک فلو استعمال کرے گا۔ انیس بیس۔ ایک جائز انضمام ریلیز کو چلاتا ہے۔ کیشے واپس آتا ہے، ایک بائنری رنر کی میموری پڑھتا ہے، پبلش ٹوکن اٹھاتا ہے، اور بیالیس پیکیجز میں چوراسی ورژن بھیجتا ہے، معتبر ماخذ کے ساتھ۔ ٹیسٹ ناکام ہو جاتے ہیں۔ یہ پھر بھی شائع کرتا ہے۔ انیس چھالیس، ایک StepSecurity محقق مسئلہ درج کرتا ہے؛ نو UTC تک سب کچھ منسوخ کر دیا جاتا ہے اور ایڈوائزری جاری کی جاتی ہے۔

0:55 منسوخ ہونا غائب ہونا نہیں ہے: npm انحصار رکھنے والی کسی بھی چیز کو غیر شائع کرنے سے انکار کرتا ہے، لہذا یہ گھنٹوں تک قابل تنصیب رہتا ہے۔ اکیس اڑتالیس۔ ایک نو ستارہ ایوی ایشن ڈیٹا پروجیکٹ میں، Dependabot اپنی معمول کی پل درخواست کھولتا ہے: 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 Dependabot، پانچ: اتنا قابل بھروسہ ہے کہ ورم اس کی وردی پہنتا ہے۔

git blame

2:20 دھماکے کا دائرہ: بیالیس TanStack پیکیجز۔ ایک پروجیکٹ سے بائیس ڈاؤن اسٹریم، جس میں نو ستارے ہیں۔ ایک سو ساٹھ سے زیادہ ماحولیاتی سطح پر جب ورم Mistral تک پہنچتا ہے۔ ہر اپ اسٹریم ورژن ایک درست دستخط رکھتا تھا: آفیشل کے ذریعے بنایا گیا تھا پائپ لائن۔ سچ۔ فیصلہ، پوسٹمارٹم: SHIP IT۔ دونوں مینٹینرز ایک دن کے اندر ٹائم سٹیمپڈ پوسٹمارٹمز پوسٹ کرتے ہیں؛ تین کے اندر، ڈاؤن اسٹریم پائپ لائن ignore-scripts کے ساتھ انسٹال کرتی ہے، بلڈ کو پبلش سے الگ کرتی ہے، اور طویل عرصے سے رہنے والے ٹوکن کو ہٹاتی ہے۔

دھماکے کا دائرہ

2:47 npm کے ڈیفالٹس نہیں ہلے ہیں۔ پیر: انسٹال پر ignore-scripts، اور پبلش ٹوکن اس جاب سے باہر جو اسے چلاتی ہے۔ مجھے وہ واقعہ بھیجیں جس کے بارے میں آپ کو ابھی تک بات کرنے کی اجازت نہیں ہے، تبصروں میں، یا thedailydiff.dev پر۔ اور آج کے لیے بس اتنا ہی ہے۔

فیصلہ

3:00 میں Axrisi سے نیکو ہوں۔ ذمہ داری سے ضم کریں۔

ذرائع

  1. TanStack postmortem (Tanner Linsley, May 11, refined May 15)tanstack.com
  2. TanStack "Hardening TanStack After the npm Compromise" (May 12)tanstack.com
  3. TanStack/router#7383 — the StepSecurity detection issuegithub.com
  4. Downstream incident post, @squawk/* (May 12)github.com
  5. Downstream hardening post (May 14)github.com
  6. The Dependabot PR #246 (opened 21:48 UTC, merged 22:12)github.com
  7. @tan_stack advisory post, 21:19 UTCx.com
  8. StepSecurity — worm internals, bypass_2fa search, Dependabot-style branch nameswww.stepsecurity.io
  9. Socketsocket.dev
  10. Aikido — "over 160 packages, including Mistral"www.aikido.dev
  11. Hacker News (1,097 points)news.ycombinator.com

متعلقہ ویڈیوز

postmortem · ur · 25 ستمبر، 2026

ایک ملی سیکنڈ کے بگ نے برطانیہ کی فضائی ٹریفک کو روک دیا۔ چھ گھنٹے۔

منگل 8 ستمبر کو صبح 10:00 بجے، NATS کے نیشنل ایئر اسپیس سسٹم (NAS) کے اندر ایک معمول کی سکواک کوڈ کی درخواست کو ایک اعلی ترجیحی پیغام نے روک دیا جبکہ یہ ایک قدر کو اپ ڈیٹ کرنے کے آدھے راستے میں تھا۔ ن

3:06 ↗
postmortem · ur · 22 ستمبر، 2026

ایک ریبوٹ نے ٹیل اسٹرا کو 2006 میں بھیج دیا: 90 لاکھ فون متاثر ہوئے۔

میلبورن میں ایک انجینئر نے صبح 2:50 پر ایک ٹائمنگ چیسس کو دوبارہ آن کیا، اور ناشتے تک آسٹریلیا کا سب سے بڑا موبائل نیٹ ورک اس بات پر متفق ہو گیا کہ یہ نومبر 2006 ہے۔ 8 جولائی 2026: ٹیل اسٹرا کے NTP چی

3:15 ↗