يقترح مطورو LLVM معالجة آمنة للمخزن المؤقت في C ++

شعار LLVM

LLVM هو إطار عمل لتطوير المجمعات بالإضافة إلى المساعدة في بناء لغات برمجة جديدة وتحسين اللغات الحالية.

الكثير اقترح مطورو مشروع LLVM عددًا من التغييرات التي تهدف إلى تعزيز الأمن من proyects C + + مهمة حرجة وتوفر وسيلة للقضاء على الأخطاء التي تسببها تجاوزات المخزن المؤقت.

على هذا النحو ، يركز الاقتراح الذي أصدروه على العمل في مجالين على وجه الخصوص: توفير نموذج تطوير يسمح بالعمل بأمان مع المخازن المؤقتة والعمل على تعزيز أمان مكتبة الوظائف القياسية libc ++.

يذكر أن نموذج البرمجة الآمنة المقترح لـ C ++ «هو استخدام الفئات التي توفرها المكتبة القياسية عند العمل مع المخازن المؤقتة بدلاً من معالجة المؤشرات الأولية ». على سبيل المثال ، يُقترح استخدام فئات std :: array و std :: vector و std :: span ، والتي ستتم إضافتها مع فحص وقت التشغيل للذاكرة المخصصة خارج الحدود.

هدفنا هو تحسين أمان قواعد أكواد C ++ الهامة. لهذا نخطط للعمل على فكرتين.

مكتبة قياسية C ++ مقواة
نموذج برمجة المخزن الآمن C ++ وأدوات التبني
يهدف Hardened libc ++ إلى جعل واجهات مكتبة C ++ القياسية أكثر أمانًا بشكل عام.

يوفر نموذج برمجة المخزن المؤقت الآمن لـ C ++ جنبًا إلى جنب مع libc ++ المقوى التخفيف من وقت التشغيل للوصول إلى الذاكرة خارج الحدود. ستعمل أدوات الاعتماد على أتمتة ترحيل الكود إلى نموذج البرمجة الجديد هذا.

بالإضافة إلى ذلك ، يذكر ذلك أيضًا لمكافحة ممارسات البرمجة "الخطيرة" في رعشة ، إذا يقترح إصدار تحذيرات المترجم لجميع العمليات الحسابية للمؤشر، على غرار تحذيرات clang-tidy linter عند استخدام علامة "cppcoreguidelines-pro-bounds-pointer-arithmetic" ، والتي سيظهر الدعم لها في LLVM 16. لتمكين مثل هذه التحذيرات ، ستتم إضافة علامة منفصلة إلى الرنة ، غير نشطة افتراضيًا .

من المخطط تنفيذ وضع حماية اختياري في libc ++ ، والتي ، عند تمكينها ، ستكتشف بعض المواقف التي تؤدي إلى سلوك غير محدد في وقت التشغيل. على سبيل المثال ، في الفصول الدراسية الأمراض المنقولة جنسيا :: تمتد والأمراض المنقولة جنسيا :: متجه، ستتم مراقبة الوصول خارج الحدود ، وفي هذه الحالة سيفشل البرنامج.

سيتم تجميع فحوصات وقت التشغيل الإضافية هذه في عدة فئات يمكن التحكم فيها بشكل منفصل. الهدف هو أن البائع الذي يقوم بشحن libc ++ على نظامه الأساسي يمكنه تحديد عمليات التحقق التي سيتم تمكينها في مكتبة الشحن (إن وجدت) ، اعتمادًا على مستوى الأمان المطلوب.

يعتقد المطورون أن إضافة مثل هذه التغييرات ستبقي libc ++ متوافقًا مع معايير C ++ ، نظرًا لأن اختيار كيفية التعامل مع حالات السلوك غير المحدد يقع على عاتق مطوري المكتبة ، الذين يمكنهم ، من بين أمور أخرى ، التعامل مع السلوك غير المحدد كقفل يتطلب من البرنامج خروج.

ال من المخطط تقسيم عمليات تحقق وقت التشغيل في libc ++ إلى فئات يمكن تضمينها بشكل فردي. تم بالفعل تنفيذ بعض عمليات التحقق المقترحة التي لا تؤدي إلى عمليات أكثر تعقيدًا أو تغييرات ABI في الوضع الآمن لـ libc ++ (الوضع الآمن).

وللتأكيد ، فإن الهدف النهائي للمكتبة المشحونة هو تمكين هذه الفحوصات في الإنتاج ؛ هذه ليست ميزة "تصحيح الأخطاء فقط" ، على الرغم من أنها ستحل في النهاية محل "وضع التصحيح" المعطل منذ فترة طويلة.

وبالإضافة إلى ذلك، من المخطط إعداد مجموعة من أدوات تصحيح التعليمات البرمجية والذي سيسمح باستبدال المتغيرات بمؤشرات أولية في الحاويات وتطبيق معالجات بديلة في المواقف التي لا تستطيع فيها الحاوية استبدال المؤشر مباشرةً (على سبيل المثال ، يمكن تحويل بنية "if (array_pointer)" إلى "if (span.data ( ) ») يمكن تطبيق الإعدادات ليس فقط على المتغيرات المحلية ، ولكن أيضًا على كتابة المعلمات باستخدام المؤشرات.

هو مذكور أيضا أن تفكر في "مدقق محلل ثابت للرنجة" مسار حساس يحذر إذا الأمراض المنقولة جنسيا :: سبان يتم إنشاؤه من حاوية أصغر من الحجم المحدد في منشئ الامتداد. المدقق المذكور قائم بذاته ومفيد من تلقاء نفسه ، إذا سارت الأمور على ما يرام ، فسيتم تمكينه افتراضيًا لجميع المستخدمين

أخيرا إذا كنت مهتمًا بمعرفة المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.