مایکروسافټ CHERIoT پرانیزي، د C کوډ امنیت ښه کولو لپاره د هارډویر حل

مایکروسافټ د CHERIoT (د شیانو د انټرنیټ لپاره RISC-V ته د وړتیا هارډویر توسیع) پروژې پورې اړوند پرمختګونه موندلي ، چې هدف یې په C او C++ کې په موجوده کوډ کې د امنیتي ستونزو مخه نیول دي. CHERioT یو حل وړاندې کوي چې تاسو ته اجازه درکوي د موجوده C/C++ کوډبیسونو ساتنه وکړئ پرته لدې چې دوی بیا کار کولو اړتیا ولرئ. محافظت د تعدیل شوي کمپیلر کارولو له لارې پلي کیږي چې د پروسیسر لارښوونو ځانګړي پراخه سیټ کاروي (ISA) ، د پروسیسر لخوا چمتو شوي او د هارډویر په کچه د حافظې لاسرسي نظارت کوي ، د پوائنټرونو سره د کار سموالي معاینه کوي او د کوډ بلاکونو جلا کول ډاډمن کوي.

پروژه د دې حقیقت په پام کې نیولو سره رامینځته شوې چې د C ژبې ټیټ کچې طبیعت د حافظې سره کار کولو پرمهال د غلطیو سرچینه کیږي ، کوم چې ستونزې رامینځته کوي لکه د بفر اوور فلو ، دمخه خلاص شوي حافظې ته لاسرسی ، د پوائنټر ډیریفرنسونه ، یا دوه ځله وړیا. . تمرین ښیي چې حتی لوی شرکتونه لکه ګوګل او مایکروسافټ، چې د بیاکتنې سخت بدلون پالیسي لري او د عصري پراختیا میتودونه او جامد تحلیلي وسیلې کاروي، نشي کولی د حافظې سره کار کولو په وخت کې د غلطیو نشتوالی تضمین کړي (د مثال په توګه، په مایکروسافټ کې شاوخوا 70٪ زیانونه او ګوګل د غیر خوندي حافظې اداره کولو له امله رامینځته کیږي).

ستونزه د پروګرامینګ ژبو په کارولو سره حل کیدی شي چې د حافظې سره خوندي عملیات تضمینوي، یا د اضافي چکونو سره پابندۍ، د بیلګې په توګه، د عادي اشارو لکه MiraclePtr (raw_ptr) په ځای کارولو سره، کوم چې د حافظې وړیا ساحو ته د لاسرسي لپاره اضافي چکونه ترسره کوي. مګر دا ډول میتودونه د نوي کوډ لپاره خورا مناسب دي، او د موجوده C/C++ پروژو بیا کار کول خورا ستونزمن دي، په ځانګړې توګه که دوی د سرچینو محدود چاپیریال کې د چلولو لپاره ډیزاین شوي وي، لکه د سرایت شوي سیسټمونه او د شیانو انټرنیټونه.

د CHERIoT هارډویر اجزا د RISC-V جوړښت پراساس د مایکرو کنټرولر په توګه ډیزاین شوي ، د محافظت شوي CHERI (د ظرفیت هارډویر توسیع RISC-V ته) پروسیسر جوړښت پلي کوي ، کوم چې د "وړتیا" پراساس د کنټرول شوي حافظې لاسرسي ماډل چمتو کوي (هر یو لوستل او لیکل. حافظې ته عملیات اجازه لري). په CHERIoT کې چمتو شوي لارښوونې ترتیب شوي جوړښت (ISA) پراساس ، د سافټویر ماډل رامینځته شوی چې د انفرادي شیانو په کچه د حافظې سره کار کولو خوندیتوب تضمینوي ، دمخه خلاص شوي حافظې ته د لاسرسي پروړاندې محافظت چمتو کوي ، او د سپک وزن حافظې لاسرسي جلا کولو سیسټم پلي کوي. . د ځانګړي سافټویر محافظت ماډل په مستقیم ډول د C/C++ ژبې ماډل کې منعکس کیږي، کوم چې دا اجازه ورکوي چې د موجوده غوښتنلیکونو د ساتنې لپاره وکارول شي (یوازې بیا تنظیم کول او په تجهیزاتو چلول چې د ISA CHERIOT مالتړ ته اړتیا لري).

وړاندیز شوی حل تاسو ته اجازه درکوي هغه غلطۍ بندې کړئ چې یو شی د حافظې له حدودو څخه بهر ته ځي، د پوائنټر بدیل ته اجازه نه ورکوي (ټول پوائنټرونه باید د موجوده پوائنټرونو څخه رامینځته شي) ، او د خلاصیدو وروسته د حافظې لاسرسي نظارت کوي (د غلط کارولو سره حافظې ته هر ډول لاسرسی پوائنټر یا یو پوائنټر چې د آزاد شوي څیز حواله کوي د استثناء د غورځولو پایله لري). د مثال په توګه، د CHERIoT کارول تاسو ته اجازه درکوي د اتوماتیک حدود چک کول، د حافظې د ژوند وخت تعقیب، او د پوائنټر بشپړتیا پلي کول په اجزاوو کې چې د کوډ بدلونونو ته اړتیا پرته بې باوره ډاټا اداره کوي.

په دې پروژه کې د CHRIoT د غزول شوي لارښوونې سیټ جوړښت مشخصات شامل دي، د 32-bit RISC-V CPU حواله پلي کول چې د CHERIOT ISA مالتړ کوي، او یو ترمیم شوی LLVM Toolkit. په ویریلوګ کې د CPU پروټوټایپ ډیاګرامونه او د هارډویر بلاک توضیحات د اپاچي 2.0 جواز لاندې ویشل شوي. د ټیټ RISC پروژې څخه د Ibex کور د CPU لپاره د اساس په توګه کارول کیده. د CHERIoT ISA کوډ ماډل په سیل ژبه کې تعریف شوی او د BSD جواز لاندې جواز لري.

سربیره پردې، د CHERIOT RTOS ریښتیني وخت عملیاتي سیسټم یو پروټوټایپ وړاندیز شوی ، کوم چې حتی د 256 MB رام سره په سرایت شوي سیسټمونو کې د برخو جلا کولو وړتیا چمتو کوي. د CHERIOT RTOS کوډ په C++ کې لیکل شوی او د MIT جواز لاندې ویشل شوی. د OS بنسټیزې برخې لکه بوټلوډر، شیډولر او د حافظې توزیع سیسټم، د برخو په بڼه ډیزاین شوي.

په CHERIoT RTOS کې یوه کڅوړه د کوډ او نړیوال متغیرونو یو جلا ترکیب دی چې د ګډ کتابتون سره ورته دی، مګر د وروستي برعکس، دا کولی شي خپل حالت (متغیر) بدل کړي او په جلا امنیتي شرایطو کې پرمخ بوځي. له بهر څخه هیڅ کوډ نشي کولی کنټرول په یوه کمپارټمنټ کې کوډ ته انتقال کړي او شیانو ته لاسرسی ومومي، پرته له دې چې ځانګړي تعریف شوي د ننوتلو نقطو ته لاسرسی ومومي او هغه شیانو ته د پوائنټرونو په کارولو سره چې په ښکاره ډول تیریږي کله چې بلې برخې ته زنګ ووهي. بشپړتیا او محرمیت په یوه کڅوړه کې د کوډ او نړیوالو شیانو لپاره تضمین شوي.

سرچینه: opennet.ru

Add a comment