0 دن کا لینکس IPv6 اسٹیک کمزوری ریموٹ کرنل کریش کی اجازت دیتا ہے۔

لینکس کرنل میں ایک غیر درست شدہ (0-دن) خطرے (CVE-2023-2156) کے بارے میں معلومات کا انکشاف کیا گیا ہے، جو خصوصی طور پر ڈیزائن کردہ IPv6 پیکٹ (پیکٹ آف ڈیتھ) بھیج کر سسٹم کو روکنے کی اجازت دیتا ہے۔ مسئلہ صرف اس وقت ظاہر ہوتا ہے جب RPL (Routing Protocol for Low-Power and Lossy Networks) پروٹوکول کے لیے سپورٹ کو فعال کیا جاتا ہے، جو کہ ڈسٹری بیوشنز میں بطور ڈیفالٹ غیر فعال ہوتا ہے اور بنیادی طور پر ان ایمبیڈڈ ڈیوائسز پر استعمال ہوتا ہے جو وائرلیس نیٹ ورکس میں کام کرنے والے زیادہ پیکٹ کے نقصان کے ساتھ ہوتے ہیں۔

یہ خطرہ RPL پروٹوکول پارسنگ کوڈ میں بیرونی ڈیٹا کی غلط پروسیسنگ کی وجہ سے ہوتا ہے، جس کی وجہ سے اسسٹ کی ناکامی ہوتی ہے اور دانا گھبراہٹ کی حالت میں چلا جاتا ہے۔ IPv6 RPL پیکٹ ہیڈر کو پارس کرنے سے حاصل کردہ ڈیٹا کو k_buff (ساکٹ بفر) ڈھانچے میں رکھتے وقت، اگر CmprI فیلڈ کو 15 پر، Segleft فیلڈ کو 1 پر، اور CmprE کو 0 پر سیٹ کیا جاتا ہے، تو پتوں کے ساتھ 48 بائٹ ویکٹر کو ڈیکمپریس کیا جاتا ہے۔ 528 بائٹس تک اور ایسی صورت حال ظاہر ہوتی ہے جہاں بفر کے لیے مختص میموری کافی نہیں ہے۔ اس صورت میں، skb_push فنکشن، ڈیٹا کو ڈھانچے میں دھکیلنے کے لیے استعمال کیا جاتا ہے، ڈیٹا کے سائز اور بفر کے درمیان عدم مطابقت کی جانچ کرتا ہے، بفر باؤنڈری سے آگے لکھنے کو روکنے کے لیے گھبراہٹ کی کیفیت پیدا کرتا ہے۔

مثال کا استحصال: # ہم scapy.all import * import socket # اپنے LAN انٹرفیس سے IPv6 استعمال کریں DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # ہم پیکٹ بھیجنے کے لیے ساکٹ استعمال کریں گے sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # پیکٹ کو تیار کریں # Type = 3 اسے RPL پیکٹ بناتا ہے # ایڈریسز میں 3 ایڈریس ہوتے ہیں، لیکن چونکہ CmprI 15 ہے، # پہلے دو پتوں میں سے ہر ایک آکٹیٹ ہے کمپریسڈ ایڈریس کے طور پر سمجھا جاتا ہے # Segleft = 1 کو متحرک کرنے کے لیے # lastentry = 0xf0 CmprI کو 15 پر اور CmprE کو 0 p = IPv6 (src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting (type:"a=3) پر سیٹ کرتا ہے۔ :", "a8::", "a7::"], segleft=6, lastentry=1xf0) # اس بری پیکٹ کو بھیجیں sockfd.sendto(bytes(p), (DST_ADDR, 0))

قابل ذکر ہے کہ کرنل ڈویلپرز کو جنوری 2022 میں کمزوری کے بارے میں مطلع کیا گیا تھا اور پچھلے 15 مہینوں کے دوران انہوں نے تین بار مسئلہ کو حل کرنے کی کوشش کی، ستمبر 2022، اکتوبر 2022 اور اپریل 2023 میں پیچ جاری کیے، لیکن ہر بار درست کیا گیا۔ کافی نہیں ہے اور کمزوری کو دوبارہ پیدا نہیں کیا جا سکتا ہے۔ بالآخر، ZDI پروجیکٹ نے، جس نے خطرے کو دور کرنے کے لیے کام کو مربوط کیا، نے فیصلہ کیا کہ دانا میں کام کرنے والے درستگی کے دستیاب ہونے کا انتظار کیے بغیر خطرے کے بارے میں تفصیلی معلومات جاری کی جائیں۔

اس طرح، کمزوری اب بھی غیر طے شدہ ہے۔ خاص طور پر، 6.4-rc2 کرنل میں شامل پیچ غیر موثر ہے۔ صارفین کو مشورہ دیا جاتا ہے کہ وہ چیک کریں کہ RPL پروٹوکول ان کے سسٹمز پر استعمال نہیں ہوا ہے، جو sysctl -a | کمانڈ کے ذریعے کیا جا سکتا ہے۔ grep -i rpl_seg_enabled

ماخذ: opennet.ru

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