متى وكيفية استخدام دول مجلس التعاون الخليجي كومة حماية الميزة ؟

StackOverflow https://stackoverflow.com/questions/1629685

  •  06-07-2019
  •  | 
  •  

سؤال

لقد مكن -Wstack-protector تحذير عند تجميع مشروع أعمل عليه (تجاري متعدد منصة C++ محرك اللعبة, تجميع على نظام التشغيل Mac OS X 10.6 مع دول مجلس التعاون الخليجي 4.2).هذا العلم يحذر من الوظائف التي لن تكون محمية ضد تحطم المكدس على الرغم من -fstack-protector يتم تمكين.دول مجلس التعاون الخليجي تنبعث بعض التحذيرات عند بناء المشروع:

لا حماية وظيفة:لا العازلة على الأقل 8 بايت
لا حماية المتغيرات المحلية:متغير طول المخزن المؤقت

على الإنذار الأول ، وجدت أنه من الممكن لضبط الحد الأدنى من حجم المخزن المؤقت يجب أن يكون عند استخدامها في دالة لهذه الوظيفة أن تكون محمية ضد تحطم المكدس: --param ssp-buffer-size=X يمكن استخدامها ، حيث X هو 8 بشكل افتراضي ويمكن أن تكون منخفضة تصل إلى 1.

على الإنذار الثاني ، لا أستطيع وقمع به الحوادث إلا إذا توقفت عن استخدامه -Wstack-protector.

  1. متى يجب أن -fstack-protector استخدامها ؟ (كما هو الحال ، على سبيل المثال ، في كل وقت أثناء ديف ، أو فقط عندما تتبع الأخطاء أسفل؟)
  2. متى يجب أن -fstack-protector-all استخدامها ؟
  3. ما هو -Wstack-protector تقول لي ؟ هل تقترح أن يقلل العازلة الحد الأدنى الحجم ؟
  4. إذا كان الأمر كذلك ، هل هناك أي سلبيات وضع الحجم إلى 1 ؟
  5. يبدو أن -Wstack-protector ليس من نوع العلم تريد تمكينها في جميع الأوقات إذا كنت تريد تحذير خالية من البناء.هل هذا صحيح ؟
هل كانت مفيدة؟

المحلول

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

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

من أجل التصحيح الحلول ، والنظر في الأمور مثل mudflap.

كما أن لديك أسئلة محددة:

  1. استخدام كومة حامي إذا كان يمكنك الحصول على البيانات من مصادر غير المنضبط.الجواب على هذا هو على الأرجح نعم.واستخدام ذلك.حتى إذا لم يكن لديك البيانات من مصادر غير المنضبط, كنت على الأرجح في نهاية المطاف أو القيام بالفعل و لا يدركون ذلك.
  2. كومة الحماية لجميع مخازن يمكن استخدامها إذا كنت تريد حماية إضافية مقابل بعض الأداء ضرب.من gcc4.4.2 دليل:

    -fstack-حامي

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

    -fstack-حامي-جميع

    مثل fstack-حامي إلا أن جميع وظائف الحماية.

  3. تحذيرات اقول لكم ما مخازن كومة الحماية لا تستطيع حماية.

  4. هو لا يشير بالضرورة تخفيض الحد الأدنى حجم المخزن المؤقت في حجم 0/1 ، فإنه هو نفسه كما المكدس-حامي-جميع.هو فقط يشير بها لك بحيث يمكنك ، إذا قررت إعادة تصميم البرمجية بحيث عازلة محمية.
  5. لا, هذه التحذيرات لا تمثل القضايا ، فإنها أشير فقط إلى المعلومات لك.لا تستخدم بشكل منتظم.

نصائح أخرى

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top