لينڪس 5.12 ڪرنل KFence سبسسٽم کي اختيار ڪيو آهي غلطين کي ڳولڻ لاءِ جڏهن ميموري سان ڪم ڪندي

لينڪس ڪنيل 5.12، جيڪو ترقي ۾ آهي، شامل آهي KFence (Kernel Electric Fence) ميڪانيزم جو نفاذ، جيڪو چيڪ ڪري ٿو ميموري هينڊلنگ، ڪيچنگ بفر اووررن، ميموري جي رسائي آزاد ٿيڻ کان پوءِ، ۽ ساڳي طبقي جون ٻيون غلطيون.

ساڳي ڪارڪردگي اڳ ۾ ئي KASAN بلڊ آپشن جي صورت ۾ ڪرنل ۾ موجود هئي (ڪرنل ايڊريس صاف ڪرڻ وارو، جديد gcc ۽ ڪلانگ ۾ ايڊريس سينٽيزر استعمال ڪري ٿو) - جڏهن ته، اهو خاص طور تي ڊيبگنگ استعمال لاءِ رکيل هو. KFence سبسسٽم KASAN کان ان جي اعلي آپريٽنگ اسپيڊ ۾ مختلف آهي، جيڪا هن خصوصيت کي ڪم ڪرڻ واري نظام ۾ ڪور تي پڻ استعمال ڪرڻ ممڪن بڻائي ٿي.

پيداوار واري نظام تي ايپليڪيشن ميموري جي غلطين کي پڪڙڻ ممڪن بڻائي ٿي جيڪي ٽيسٽ رن ۾ ظاهر نه ٿيون ٿين ۽ صرف ڪم لوڊ دوران يا ڊگهي مدت جي آپريشن دوران ظاهر ٿين ٿيون (وڏي اپ ٽائم سان). ان کان سواء، پيداوار سسٽم تي KFence جي استعمال کي ممڪن بڻائي سگهندي ته مشينن جي تعداد کي خاص طور تي وڌائي سگھي ٿو جيڪو ميموري سان ڪنيل جي آپريشن کي جانچڻ ۾ شامل آهي.

KFence گھٽ ۾ گھٽ لوڊ-آزاد اوور هيڊ حاصل ڪري ٿو گارڊ پيجز کي ھيپ ۾ مقرر وقفن تي داخل ڪري. ايندڙ تحفظ جو وقفو ختم ٿيڻ کان پوءِ، KFence، معياري ميموري مختص ڪرڻ واري نظام (SLAB يا SLUB مختص ڪندڙ) ذريعي، KFence آبجیکٹ پول مان ايندڙ تحفظ واري صفحي کي شامل ڪري ٿو، ۽ نئين وقت جي انسداد جي رپورٽ شروع ڪري ٿو. هر KFence اعتراض هڪ الڳ ياداشت واري صفحي ۾ واقع آهي، ۽ کاٻي ۽ ساڄي سرحدن سان گڏ ميموري صفحا گارڊ صفحا ٺاهيندا آهن، جن جي سائيز بي ترتيب سان چونڊيو ويندو آهي.

اهڙيء طرح، شيون سان صفحا هڪ ٻئي کان حفاظتي صفحا طرفان الڳ ڪيا ويا آهن، جيڪي ڪنهن به رسائي تي "صفحو غلطي" پيدا ڪرڻ لاء ترتيب ڏنل آهن. اعتراض جي صفحن جي اندر لکت کان ٻاهر جي حد کان ٻاهر ڳولڻ لاء، نمونن جي بنياد تي "ريڊ زونز" اضافي طور تي استعمال ڪيا ويا آهن، جيڪي ميموري تي قبضو ڪن ٿا جيڪي شيون استعمال نه ٿيون ڪن، باقي جڏهن ميموري صفحن جي سائيز کي ترتيب ڏني وئي آهي. —+————+————+————+————+———+— | xxxxxxxx | اي: | xxxxxxxx | : اي | xxxxxxxx | | xxxxxxxx | ب: | xxxxxxxx | :ب | xxxxxxxx | | x گارڊ x | جي: ريڊ- | x گارڊ x | ريڊ- : جي | x گارڊ x | | xxxxxxxx | اي: زون | xxxxxxxx | زون: اي | xxxxxxxx | | xxxxxxxx | ج: | xxxxxxxx | : سي | xxxxxxxx | | xxxxxxxx | ت: | xxxxxxxx | : تي | xxxxxxxx | —+————+———+————+————+———+

جيڪڏهن بفر جي حدن کان ٻاهر ڪنهن علائقي تائين رسائي جي ڪوشش ڪئي وئي آهي، آپريشن تحفظ واري صفحي کي متاثر ڪري ٿو، جيڪو "صفحي جي غلطي" جي نسل ڏانهن وٺي ٿو، جيڪو KFence کي روڪي ٿو ۽ معلوم ٿيل مسئلي بابت معلومات کي لاگ ان ڪري ٿو. ڊفالٽ طور، KFence ڪنهن غلطي کي بلاڪ نٿو ڪري ۽ صرف لاگ ۾ هڪ ڊيڄاريندڙ ڏيکاري ٿو، پر اتي هڪ "panic_on_warn" سيٽنگ آهي جيڪا توهان کي اجازت ڏئي ٿي ته ڪني کي هڪ خوفناڪ حالت ۾ رکڻ جي صورت ۾ جيڪڏهن ڪو غلطي معلوم ٿئي ٿي.

جو ذريعو: opennet.ru

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