OpenBSD IPv6 اسٹیک میں دور دراز کی کمزوری۔

بیک گراؤنڈ پروسیس slaacd میں، جو OpenBSD میں IPv6 ایڈریس آٹو کنفیگریشن (IPv6 اسٹیٹ لیس ایڈریس آٹو کنفیگریشن، RFC 4862) کے لیے ذمہ دار ہے، ایک ایسے خطرے کی نشاندہی کی گئی ہے جو خاص طور پر ڈیزائن کردہ IPv6 راؤٹر اشتہار (RA، Router Advertisement) وصول کرنے پر بفر اوور فلو کا باعث بنتی ہے۔ .

ابتدائی طور پر، IPv6 ایڈریس آٹو کنفیگریشن فعالیت کو کرنل کی سطح پر لاگو کیا گیا تھا، لیکن OpenBSD 6.2 کے ساتھ شروع کرتے ہوئے اسے ایک علیحدہ غیر مراعات یافتہ slaacd عمل میں منتقل کر دیا گیا تھا۔ یہ عمل RS (Router Solicitation) پیغامات بھیجنے اور RA (Router Advertisement) کے جوابات کو روٹر اور نیٹ ورک کنکشن پیرامیٹرز کے بارے میں معلومات کے ساتھ پارس کرنے کے لیے ذمہ دار ہے۔

فروری میں، slacd نے ایک بگ کو ٹھیک کیا جس کی وجہ سے یہ کریش ہو جاتا ہے اگر RDNSS (Recursive DNS سرورز) کی فہرست میں 7 سرورز کی وضاحت کی گئی ہو۔ اس نگرانی نے آزاد محققین کی توجہ مبذول کرائی جنہوں نے RA پیغامات میں فیلڈز کو پارس کرنے کے دوران ہونے والی دیگر غلطیوں کے لیے سلیکڈ کوڈ کی جانچ کرنے کی کوشش کی۔ تجزیہ سے پتہ چلتا ہے کہ کوڈ میں ایک اور مسئلہ ہے، جو DNSSL (DNS سرچ لسٹ) فیلڈ پر کارروائی کرتے وقت خود کو ظاہر کرتا ہے، جس میں DNS کے لیے ڈومین ناموں اور میزبان ٹیمپلیٹس کی فہرستیں شامل ہیں۔

DNSSL فہرست میں ہر نام کو null delimiter اور interventing one-byte tags کا استعمال کرتے ہوئے انکوڈ کیا جاتا ہے جو کہ مندرجہ ذیل ڈیٹا کے سائز کا تعین کرتے ہیں۔ کمزوری اس حقیقت کی وجہ سے ہوتی ہے کہ لسٹ پارسنگ کوڈ میں، ایک سائز والی فیلڈ کو دستخط شدہ عددی قسم ("len = data[pos]") کے ساتھ متغیر میں کاپی کیا جاتا ہے۔ اس کے مطابق، اگر کسی قدر کو فیلڈ میں انتہائی اہم بٹ سیٹ کے ساتھ متعین کیا جاتا ہے، تو اس قدر کو مشروط آپریٹر میں ایک منفی نمبر کے طور پر سمجھا جائے گا اور زیادہ سے زیادہ قابل اجازت سائز (“if (len > 63 || len + pos + 1 > datalen) {“) کام نہیں کرے گا، جو ایک ایسے پیرامیٹر کے ساتھ memcpy پر کال کرے گا جس کے کاپی شدہ ڈیٹا کا سائز بفر سائز سے زیادہ ہے۔

OpenBSD IPv6 اسٹیک میں دور دراز کی کمزوری۔
OpenBSD IPv6 اسٹیک میں دور دراز کی کمزوری۔


ماخذ: opennet.ru

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