اگر آپ کی کمپنی کی ایپ، ویب سائٹ، آن لائن اسٹور یا API کو Node.js سے بنایا گیا ہے، جس میں Next.js والی ویب سائٹیں اور Express یا NestJS پر بنے بیک اینڈ بھی شامل ہیں، تو آج ہی اپنے ڈویلپر سے کہیں کہ Node.js کو ورژن 22.23.4، 24.22.1 یا 26.12.1 پر اپ ڈیٹ کرے اور پھر سرور کو دوبارہ بلڈ کر کے ری اسٹارٹ کرے۔ Node.js پروجیکٹ نے یہ ورژن 21 اکتوبر 2026 کو Node2Shell نامی کمزوری (CVE-2026-111497) بند کرنے کے لیے جاری کیے۔ اسے 10 میں سے 9.2 درجہ دیا گیا ہے، اور یہ کسی بھی پاس ورڈ کے بغیر حملہ آور کو خاص طور پر تیار کیا گیا کمپریسڈ ڈیٹا بھیج کر آپ کے سرور پر کوڈ چلانے دیتی ہے۔ سعودی عرب کی نیشنل سائبر سیکیورٹی اتھارٹی (NCA) نے «بہت زیادہ» سطح کا انتباہ جاری کیا ہے، اور 27 اکتوبر کو امریکی سائبر سیکیورٹی ایجنسی CISA نے تصدیق کی کہ اس کمزوری سے حقیقی حملوں میں فائدہ اٹھایا جا رہا ہے۔

اصل میں کیا ہوا؟

کمزوری Brotli میں ہے۔ Brotli ایک کمپریشن فارمیٹ ہے جس سے ویب سرور اور براؤزر آپس میں بھیجے جانے والے ڈیٹا کو چھوٹا کرتے ہیں، اور Node.js اپنے ساتھ Google کے Brotli ڈی کوڈر کی اپنی کاپی رکھتا ہے۔ Node.js کی سیکیورٹی اطلاع کے مطابق غلط طریقے سے بنا کمپریسڈ ڈیٹا ڈی کوڈر کو ایک اندرونی بفر کی حد سے آگے لکھنے پر مجبور کرتا ہے، جس سے ایپ کریش ہو سکتی ہے، اس کی میموری کا مواد لیک ہو سکتا ہے، یا حملہ آور کوڈ چلا سکتا ہے۔ اطلاع میں اس کمزوری کی رپورٹ کا سہرا OpenAI کی Codex Security ٹیم کو دیا گیا ہے، اور اسی ریلیز میں مجموعی طور پر 10 کمزوریاں درست کی گئیں، جن میں سے 4 زیادہ سنگین درجے کی تھیں۔

اس کے بعد سب کچھ تیزی سے ہوا۔ 22 اکتوبر کو، یعنی اصلاح کے ایک دن بعد، Imperva کی ریڈ ٹیم نے سرکاری Node.js 24.22.0 امیج پر دو روزمرہ راستوں سے کوڈ چلا کر دکھایا: بلٹ اِن fetch() فنکشن اور Express 5 کے ذریعے پروسیس ہونے والی ریکویسٹ باڈیز۔ 26 اکتوبر کو ELLIO نے عوامی حملہ کوڈ والا حقیقی ایکسپلائٹ ٹریفک ریکارڈ کیا۔ 27 اکتوبر کو CISA نے اس کمزوری کو فعال طور پر استعمال ہونے والی کمزوریوں کی اپنی فہرست میں شامل کر دیا۔

یہ خامی بذاتِ خود پرانی ہے۔ CVE ریکارڈ کے مطابق یہ Brotli کے 1.0.3 سے 1.2.0 تک کے ورژنز کو متاثر کرتی ہے، اور OpenAI کا کہنا ہے کہ اس کی بنیادی وجہ فروری 2026 میں ہی Brotli کے سورس کوڈ میں درست کر دی گئی تھی، لیکن کسی کو معلوم نہیں تھا کہ یہ سیکیورٹی خامی ہے اور کوئی نیا ورژن بھی جاری نہیں ہوا، یہاں تک کہ 21 اکتوبر کو Brotli 1.2.1 آیا۔ اگر یہ جانا پہچانا لگتا ہے تو اس کی وجہ ہے: پچھلے ہفتے ہم نے PHP2Shell کے بارے میں لکھا تھا، وہ کمزوری جس نے PHP اور WordPress سرور کھول دیے۔ Node2Shell، JavaScript سے بنی ایپس کے لیے اسی نوعیت کا خطرہ ہے۔

کیا میری ایپ متاثر ہے؟

Node.js جدید ویب سائٹوں، موبائل ایپ کے بیک اینڈ، ڈیش بورڈز اور API کے ایک بڑے حصے کا سرور والا کام چلاتا ہے۔ اگر آپ کا سسٹم پچھلے چند برسوں میں کسی ایجنسی یا فری لانس ڈویلپر نے بنایا ہے تو کافی امکان ہے کہ وہ آپ کے علم کے بغیر Node.js پر چل رہا ہو۔ متاثرہ لائنیں درست شدہ ورژنز سے پہلے کی 22.x، 24.x اور 26.x ہیں، اور ساتھ ہی وہ 20.x، 23.x اور 25.x لائنیں بھی جن کی سپورٹ ختم ہو چکی ہے؛ Node.js پروجیکٹ کے مطابق یہ ہمیشہ متاثر رہتی ہیں اور انہیں کوئی اصلاح نہیں ملے گی۔

صرف Node.js چلانے سے آپ خطرے میں نہیں آ جاتے: کسی چیز کو حملہ آور کا ڈیٹا ڈی کوڈر تک پہنچانا ہوتا ہے۔ محققین تین عام راستے بتاتے ہیں:

  • آنے والی کمپریسڈ ریکویسٹس۔ Express 5، body-parser 2 اور Koa کے باڈی پارسر Brotli میں کمپریس کی گئی ریکویسٹ باڈیز کو خود بخود کھول دیتے ہیں، آپ کا اپنا کوڈ چلنے سے بھی پہلے۔
  • وہ مواد جو آپ کا سرور باہر سے لاتا ہے۔ اگر آپ کی ایپ بیرونی لنکس کھولتی ہے، جیسے لنک پری ویو، ویب ہُکس، کرالرز یا ویب صفحات پڑھنے والے AI ایجنٹس، تو کوئی دشمن سائٹ زہریلے کمپریسڈ ڈیٹا کے ساتھ جواب دے سکتی ہے۔ Node کا بلٹ اِن fetch() فنکشن، axios اور Next.js جیسے فریم ورکس میں سرور سائیڈ ریکویسٹس اسے خود بخود کھول دیتی ہیں۔
  • صارفین کی اپ لوڈ کی گئی فائلیں۔ کوئی بھی کوڈ جو کسی گاہک یا وزیٹر کے بھیجے گئے Brotli ڈیٹا کو کھولتا ہے۔

خطرہ Node.js تک محدود نہیں ہے۔ NCA کے انتباہ میں Python، Bun اور Envoy کا نام بھی ہے، اور Microsoft نے 25 اکتوبر کو .NET 8، 9، 10 اور 11، Visual Studio 2019، 2022 اور 2026، اور PowerShell 7.4 سے 7.6 کے لیے اصلاحات جاری کیں، اور اس کمزوری کو .NET کے لیے سنگین قرار دیتے ہوئے «Exploitation More Likely» کا اندازہ دیا۔ Microsoft بتاتا ہے کہ .NET میں Brotli ڈی کمپریشن بطورِ طے شدہ فعال نہیں ہوتا، اس لیے صرف وہ ایپس خطرے میں ہیں جنہوں نے اسے فعال کیا ہے۔

اگر آپ کی سائٹ Vercel پر ہوسٹ ہے تو کمپنی اپنی سیکیورٹی اطلاع میں کہتی ہے کہ جس دن Node.js نے اصلاح جاری کی، اسی دن اس نے تمام پروجیکٹس کے لیے آنے والے حملے کے راستے کو روکنے والے فائر وال قواعد نافذ کر دیے، اور 28 اکتوبر سے تمام نئی ڈیپلائمنٹس درست شدہ Node.js استعمال کرتی ہیں۔ موجودہ پروجیکٹس کو دوبارہ ڈیپلائے کرنا ہوگا، اور جو پروجیکٹس اب بھی Node.js 20 پر ہیں انہیں 22 یا 24 پر منتقل ہونا ہوگا۔

آج کیا کریں: پانچ اقدامات

  1. ایک تحریری سوال پوچھیں۔ ہمارے سرورز پر اور ہماری Docker امیجز کے اندر Node.js کا کون سا ورژن چل رہا ہے؟ اپنے ڈویلپر سے کہیں کہ node -v کمانڈ سے Node.js کا ورژن نمبر چیک کرے۔ Brotli کے ورژن نمبر پر بھروسہ نہ کریں: ELLIO نے پایا کہ یہ درست شدہ اور غیر درست شدہ دونوں طرح کے بلڈز میں 1.2.0 ہی دکھاتا ہے۔
  2. درست شدہ ورژن پر اپ ڈیٹ کریں۔ 22.23.4، 24.22.1 یا 26.12.1۔ اگر آپ 20.x، 23.x یا 25.x پر ہیں تو 22 یا 24 جیسی سپورٹ والی لائن پر منتقل ہوں، اور لائیو کرنے سے پہلے ٹیسٹ کریں۔
  3. دوبارہ بلڈ کریں اور ری اسٹارٹ کریں۔ چلتا ہوا پروسیس پرانا کوڈ ہی رکھتا ہے۔ کنٹینر امیجز کو درست شدہ بیس امیج پر دوبارہ بلڈ کریں، کیونکہ 24.22.0 پر مقرر کیا گیا Dockerfile تب تک کمزور بلڈ بھیجتا رہے گا جب تک کوئی اس لائن کو تبدیل نہ کرے۔ اسٹیجنگ سرورز، بلڈ پائپ لائنز اور سرور لیس فنکشنز بھی چیک کریں۔
  4. باقی کاپیاں بھی اپ ڈیٹ کریں۔ Python کے Brotli اور brotlicffi پیکجز (ورژن 1.2.1 اور 1.2.1.0)، Bun، Envoy، آپ کی Linux ڈسٹری بیوشن کی Brotli لائبریری، اور Microsoft کی 25 اکتوبر کی اپ ڈیٹ کے ذریعے .NET۔
  5. لاگز اور کریش فائلیں چیک کریں۔ غیر معمولی طور پر بڑی، Brotli میں کمپریس کی گئی ریکویسٹس اور پروسیسز کے بار بار کریش ہونے پر نظر رکھیں۔ ELLIO خبردار کرتا ہے کہ زیادہ تر ناکام حملے پروسیس کو کریش کر دیتے ہیں، اور کریش فائل میں وزیٹرز کی سیشن کوکیز اور کیز رہ سکتی ہیں، اس لیے محدود کریں کہ کریش فائلیں (core dumps) کون پڑھ سکتا ہے اور آپ انہیں کتنی دیر رکھتے ہیں۔

اگر آج اپ ڈیٹ نہیں کر سکتے

عارضی اقدام کے طور پر، اگر آپ کی ایپ کو ان کی ضرورت نہیں تو اپنے فرنٹ سرور یا فائر وال پر Content-Encoding: br ہیڈر والی آنے والی ریکویسٹس روک دیں۔ Vercel اور Imperva نے اس کمزوری کے لیے فائر وال قواعد شامل کیے ہیں، لیکن Vercel خود زور دیتا ہے کہ فائر وال ان جوابات کا احاطہ نہیں کرتی جو آپ کا سرور دوسری سائٹوں سے لاتا ہے: یہ راستہ صرف Node.js کی اپ ڈیٹ ہی بند کرتی ہے۔ تحفظ کی ہر تہہ کو اپ ڈیٹ کا متبادل نہیں بلکہ اضافی وقت سمجھیں۔

Origami کی رائے

ایک ہی مہینے میں ویب کی بنیاد میں دو سنگین کمزوریاں، پہلے PHP2Shell اور پھر Node2Shell، ایک صاف کہانی سناتی ہیں: آپ کی ٹیم کا لکھا ہوا کوڈ درست ہو سکتا ہے جبکہ اس کے نیچے کا رن ٹائم کھلا ہو۔ Node2Shell کی اصلاح Brotli کے سورس کوڈ میں تقریباً آٹھ مہینے پڑی رہی، اس سے پہلے کہ کسی کو سمجھ آتا کہ یہ سیکیورٹی کا مسئلہ ہے، اور جیسے ہی تفصیلات عام ہوئیں، محققین کو سرکاری بلڈ پر کوڈ چلانے میں ایک دن لگا۔ ہم بہت سی کمپنیوں میں دیکھتے ہیں کہ برسوں پہلے حوالے کی گئی ایک ایپ ہے، جس کی اپ ڈیٹس کی ذمہ داری کسی کے پاس نہیں، اور کوئی فہرست نہیں کہ Node.js اصل میں کہاں کہاں چل رہا ہے۔ اگر آپ کی صورتحال یہی ہے تو آج ہی وہ فہرست بنانا شروع کریں۔ Origami میں ہم ویب ایپس اور سسٹمز بناتے ہیں، جن میں سے بہت سے Node.js اور Next.js پر چلتے ہیں، اور پہلے دن سے ان کے رن ٹائم کی اپ ڈیٹس پر نظر رکھتے ہیں۔ اگر آپ اپنی ایپ کی جانچ یا بغیر رکاوٹ Node.js اپ گریڈ کروانا چاہتے ہیں تو ہم سے رابطہ کریں۔

ذرائع