OpenBSD IPv6 اسٽيڪ ۾ ريموٽ ڪمزور

پس منظر جي عمل ۾ slaacd، جيڪو IPv6 ايڊريس آٽو ڪنفيگريشن (IPv6 Stateless Address Autoconfiguration, RFC 4862) لاءِ ذميوار آهي OpenBSD ۾، هڪ خطري جي نشاندهي ڪئي وئي آهي جيڪا بفر اوور فلو جي طرف وٺي ٿي جڏهن هڪ خاص طور تي ٺهيل IPv6 روٽر اشتهار (RA، Router Advertisement) حاصل ڪري ٿي. .

شروعات ۾، IPv6 ايڊريس آٽو ڪنفيگريشن فنڪشنلٽي کي ڪرنل ليول تي لاڳو ڪيو ويو، پر OpenBSD 6.2 سان شروع ڪندي ان کي هڪ الڳ غير مراعات يافته slaacd پروسيس ۾ منتقل ڪيو ويو. اهو عمل RS (Router Solicitation) پيغام موڪلڻ ۽ RA (Router Advertisement) جوابن کي روٽر ۽ نيٽ ورڪ ڪنيڪشن پيرا ميٽرز بابت معلومات سان گڏ پارس ڪرڻ جو ذميوار آهي.

فيبروري ۾، slaacd هڪ بگ مقرر ڪيو جنهن جي ڪري اهو حادثو ٿي ويو جيڪڏهن 7 سرورز RDNSS (Recursive DNS سرورز) لسٽ ۾ بيان ڪيا ويا. هي نگراني آزاد محققن جي ڌيان کي راغب ڪيو جن ٻين غلطين لاء سليڪڊ ڪوڊ کي جانچڻ جي ڪوشش ڪئي جيڪا RA پيغامن ۾ فيلڊ کي پارس ڪندي ٿيندي آهي. تجزيي ڏيکاري ٿي ته ڪوڊ ۾ هڪ ٻيو مسئلو آهي، جيڪو پاڻ کي ظاهر ڪري ٿو جڏهن DNSSL (DNS سرچ لسٽ) فيلڊ کي پروسيس ڪندي، جنهن ۾ ڊومين نالن جي فهرست ۽ ڊي اين ايس لاء ميزبان ٽيمپليٽ شامل آهن.

DNSSL لسٽ ۾ هر نالو انڪوڊ ڪيو ويو آهي هڪ نال ڊيليميٽر استعمال ڪندي ۽ مداخلت ڪندڙ هڪ بائيٽ ٽيگ جيڪي هيٺ ڏنل ڊيٽا جي سائيز کي طئي ڪن ٿا. نقصان ان حقيقت جي ڪري پيدا ٿئي ٿو ته لسٽ پارس ڪرڻ واري ڪوڊ ۾، هڪ سائيز واري فيلڊ کي هڪ سائن ٿيل انٽيجر قسم (“len = data[pos]”) سان متغير ۾ نقل ڪيو ويو آهي. ان مطابق، جيڪڏھن ھڪڙي قدر بيان ڪئي وئي آھي فيلڊ ۾ سڀ کان وڌيڪ اھم بٽ سيٽ سان، ھي قدر شرطي آپريٽر ۾ ھڪڙي منفي نمبر جي طور تي سمجھي ويندي ۽ وڌ ۾ وڌ قابل اجازت سائيز جي چڪاس (“ if (len > 63 || len + pos + 1 > datalen) {“) ڪم نه ڪندو، جيڪو memcpy ڏانهن ڪال ڪندو جنهن جي پيٽرول سان ڪاپي ٿيل ڊيٽا جي سائيز بفر جي سائيز کان وڌي ويندي.

OpenBSD IPv6 اسٽيڪ ۾ ريموٽ ڪمزور
OpenBSD IPv6 اسٽيڪ ۾ ريموٽ ڪمزور


جو ذريعو: opennet.ru

تبصرو شامل ڪريو