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

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

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

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

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

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

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

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

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

ماخذ: opennet.ru

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