مائیکروسافٹ نے C کوڈ سیکیورٹی کو بہتر بنانے کے لیے ایک ہارڈ ویئر حل CHERIoT کھولا۔

مائیکروسافٹ نے CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things) پروجیکٹ سے متعلق پیشرفت دریافت کی ہے، جس کا مقصد C اور C++ میں موجودہ کوڈ میں سیکیورٹی کے مسائل کو روکنا ہے۔ CHERioT ایک ایسا حل پیش کرتا ہے جو آپ کو موجودہ C/C++ کوڈ بیسز کو دوبارہ کام کرنے کی ضرورت کے بغیر تحفظ فراہم کرتا ہے۔ تحفظ کو ایک ترمیم شدہ کمپائلر کے استعمال کے ذریعے لاگو کیا جاتا ہے جو پروسیسر ہدایات (ISA) کے خصوصی توسیعی سیٹ کا استعمال کرتا ہے، جو پروسیسر کے ذریعہ فراہم کیا جاتا ہے اور ہارڈ ویئر کی سطح پر میموری تک رسائی کی نگرانی کرتا ہے، پوائنٹرز کے ساتھ کام کی درستگی کی جانچ کرتا ہے اور کوڈ بلاکس کی تنہائی کو یقینی بناتا ہے۔

اس پروجیکٹ کو اس حقیقت کو مدنظر رکھتے ہوئے بنایا گیا تھا کہ میموری کے ساتھ کام کرتے وقت C زبان کی نچلی سطح کی نوعیت غلطیوں کا ذریعہ بن جاتی ہے، جس سے بفر اوور فلو، پہلے سے آزاد میموری تک رسائی، پوائنٹر ڈیریفرنس، یا ڈبل ​​فریز جیسے مسائل پیدا ہوتے ہیں۔ . پریکٹس سے پتہ چلتا ہے کہ گوگل اور مائیکروسافٹ جیسی بڑی کارپوریشنز، جن کے پاس سخت تبدیلی کی نظرثانی کی پالیسی ہے اور وہ جدید ترقی کے طریقے اور جامد تجزیہ ٹولز استعمال کرتے ہیں، میموری کے ساتھ کام کرتے وقت غلطیوں کی عدم موجودگی کی ضمانت نہیں دے سکتے (مثال کے طور پر، Microsoft میں تقریباً 70% خطرات اور گوگل غیر محفوظ میموری ہینڈلنگ کی وجہ سے ہے)۔

مسئلہ کو پروگرامنگ زبانوں کے استعمال سے حل کیا جا سکتا ہے جو میموری کے ساتھ محفوظ آپریشن کی ضمانت دیتی ہے، یا اضافی چیک کے ساتھ بائنڈنگز، مثال کے طور پر، MiraclePtr (raw_ptr) جیسے عام پوائنٹرز کے بجائے استعمال کر کے، جو میموری کے آزاد علاقوں تک رسائی کے لیے اضافی چیک کرتا ہے۔ لیکن اس طرح کے طریقے نئے کوڈ کے لیے زیادہ موزوں ہیں، اور موجودہ C/C++ پروجیکٹس پر دوبارہ کام کرنا کافی مشکل ہے، خاص طور پر اگر وہ وسائل کے محدود ماحول میں چلانے کے لیے بنائے گئے ہوں، جیسے ایمبیڈڈ سسٹمز اور انٹرنیٹ آف تھنگز ڈیوائسز۔

CHERIoT ہارڈ ویئر کے اجزاء کو RISC-V فن تعمیر کی بنیاد پر ایک مائیکرو کنٹرولر کے طور پر ڈیزائن کیا گیا ہے، جو محفوظ شدہ CHERI (کیپیبلٹی ہارڈ ویئر ایکسٹینشن ٹو RISC-V) پروسیسر آرکیٹیکچر کو لاگو کرتا ہے، جو "قابلیت" (ہر ایک پڑھنے اور لکھنے) کی بنیاد پر کنٹرول شدہ میموری تک رسائی کا ماڈل فراہم کرتا ہے۔ میموری کو آپریشن کی اجازت ہے)۔ CHERIoT میں فراہم کردہ انسٹرکشن سیٹ آرکیٹیکچر (ISA) کی بنیاد پر، ایک سافٹ ویئر ماڈل بنایا گیا ہے جو انفرادی اشیاء کی سطح پر میموری کے ساتھ کام کرنے کی حفاظت کی ضمانت دیتا ہے، پہلے سے آزاد شدہ میموری تک رسائی کے خلاف تحفظ فراہم کرتا ہے، اور ایک ہلکا پھلکا میموری تک رسائی تنہائی کا نظام نافذ کرتا ہے۔ . مخصوص سافٹ ویئر پروٹیکشن ماڈل براہ راست C/C++ لینگویج ماڈل میں جھلکتا ہے، جو اسے موجودہ ایپلی کیشنز کی حفاظت کے لیے استعمال کرنے کی اجازت دیتا ہے (صرف ISA CHERIOT کو سپورٹ کرنے والے آلات کو دوبارہ مرتب کرنا اور چلانے کی ضرورت ہے)۔

مجوزہ حل آپ کو ان غلطیوں کو روکنے کی اجازت دیتا ہے جو کسی چیز کو میموری کی حدود سے باہر جانے کا سبب بنتی ہے، پوائنٹر کے متبادل کی اجازت نہیں دیتی ہے (تمام پوائنٹرز کو موجودہ پوائنٹرز سے تیار کیا جانا چاہیے)، اور فری کرنے کے بعد میموری تک رسائی کی نگرانی کرتا ہے (غلط استعمال کرتے ہوئے میموری تک کوئی بھی رسائی۔ پوائنٹر یا پوائنٹر جو کسی آزاد چیز کا حوالہ دیتا ہے اس کے نتیجے میں ایک استثناء پھینک دیا جاتا ہے)۔ مثال کے طور پر، CHERIoT کا استعمال آپ کو ان اجزاء میں خودکار باؤنڈز چیکنگ، میموری لائف ٹائم ٹریکنگ، اور پوائنٹر انٹیگریٹی انفورسمنٹ کو لاگو کرنے کی اجازت دیتا ہے جو بغیر کسی کوڈ کی تبدیلی کی ضرورت کے ناقابل اعتماد ڈیٹا کو ہینڈل کرتے ہیں۔

پروجیکٹ میں توسیع شدہ CHERIoT انسٹرکشن سیٹ آرکیٹیکچر کی تفصیلات، CHERIOT ISA کو سپورٹ کرنے والے 32-bit RISC-V CPU کا ایک حوالہ نفاذ، اور ایک ترمیم شدہ LLVM ٹول کٹ شامل ہے۔ ویریلوگ میں سی پی یو پروٹوٹائپ ڈایاگرام اور ہارڈویئر بلاک کی تفصیل اپاچی 2.0 لائسنس کے تحت تقسیم کی جاتی ہے۔ LowRISC پروجیکٹ سے Ibex کور کو CPU کی بنیاد کے طور پر استعمال کیا گیا تھا۔ CHERIoT ISA کوڈ ماڈل کی تعریف سیل زبان میں کی گئی ہے اور یہ BSD لائسنس کے تحت لائسنس یافتہ ہے۔

مزید برآں، CHERIOT RTOS ریئل ٹائم آپریٹنگ سسٹم کا ایک پروٹو ٹائپ تجویز کیا گیا ہے، جو 256 MB RAM والے ایمبیڈڈ سسٹمز پر بھی کمپارٹمنٹس کو الگ تھلگ کرنے کی صلاحیت فراہم کرتا ہے۔ CHERIoT RTOS کوڈ C++ میں لکھا جاتا ہے اور MIT لائسنس کے تحت تقسیم کیا جاتا ہے۔ OS کے بنیادی اجزاء، جیسے بوٹ لوڈر، شیڈیولر اور میموری ڈسٹری بیوشن سسٹم، کو کمپارٹمنٹس کی شکل میں ڈیزائن کیا گیا ہے۔

CHERIoT RTOS میں ایک کمپارٹمنٹ کوڈ اور عالمی متغیرات کا ایک الگ تھلگ مجموعہ ہے جو مشترکہ لائبریری سے ملتا ہے، لیکن مؤخر الذکر کے برعکس، یہ اپنی حالت (میوٹ ایبل) کو تبدیل کر سکتا ہے اور ایک علیحدہ سیکیورٹی تناظر میں چل سکتا ہے۔ باہر سے کوئی بھی کوڈ کسی کمپارٹمنٹ میں کوڈ میں کنٹرول منتقل نہیں کر سکتا اور اشیاء تک رسائی حاصل نہیں کر سکتا، سوائے اس کے کہ خاص طور پر متعین انٹری پوائنٹس تک رسائی حاصل کر کے اور کسی دوسرے کمپارٹمنٹ کو کال کرتے وقت واضح طور پر پاس کی گئی اشیاء کے لیے پوائنٹر استعمال کر سکیں۔ ایک کمپارٹمنٹ میں کوڈ اور عالمی اشیاء کے لیے سالمیت اور رازداری کی ضمانت دی جاتی ہے۔

ماخذ: opennet.ru

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