حماية من تجاوز سعة المخزن المؤقت
حماية تجاوز سعة المخزن المؤقت هي مجموعة من التقنيات المستخدمة أثناء تطوير البرمجيات لتعزيز أمان البرامج التنفيذية من خلال اكتشاف تجاوزات سعة المخزن المؤقت في المتغيرات المُخصصة على المكدس ، ومنعها من التسبب في خلل في البرنامج أو تحولها إلى ثغرات أمنية خطيرة . يحدث تجاوز سعة المخزن المؤقت في المكدس عندما يكتب البرنامج إلى عنوان ذاكرة على مكدس استدعاءات البرنامج خارج نطاق بنية البيانات المقصودة، والتي عادةً ما تكون مخزنًا مؤقتًا ثابت الطول. تحدث أخطاء تجاوز سعة المخزن المؤقت في المكدس عندما يكتب البرنامج بيانات إلى مخزن مؤقت موجود على المكدس أكثر مما هو مُخصص له فعليًا. يؤدي هذا في أغلب الأحيان إلى تلف البيانات المجاورة على المكدس، مما قد يتسبب في تعطل البرنامج أو تشغيله بشكل غير صحيح أو حدوث مشكلات أمنية.
عادةً، تُعدّل حماية تجاوز سعة المخزن المؤقت تنظيم البيانات المُخصصة في المكدس بحيث تتضمن قيمة تحذيرية ، تُشير عند تلفها نتيجةً لتجاوز سعة المخزن المؤقت في المكدس، إلى حدوث تجاوز في سعة المخزن المؤقت الذي يسبقه في الذاكرة. ومن خلال التحقق من هذه القيمة التحذيرية، يُمكن إنهاء تنفيذ البرنامج المُتأثر، مما يمنعه من التصرف بشكل غير صحيح أو السماح للمهاجم بالسيطرة عليه. تشمل تقنيات حماية تجاوز سعة المخزن المؤقت الأخرى فحص الحدود ، الذي يتحقق من عمليات الوصول إلى كل كتلة مُخصصة من الذاكرة بحيث لا تتجاوز المساحة المُخصصة فعليًا، والوسم ، الذي يضمن عدم احتواء الذاكرة المُخصصة لتخزين البيانات على تعليمات برمجية قابلة للتنفيذ.
يُرجّح أن يؤثر امتلاء المخزن المؤقت المُخصّص على المكدس على تنفيذ البرنامج أكثر من امتلاء المخزن المؤقت على الكومة ، لأن المكدس يحتوي على عناوين الإرجاع لجميع استدعاءات الدوال النشطة. ومع ذلك، توجد أيضًا وسائل حماية مماثلة خاصة بالتنفيذ ضد تجاوزات الذاكرة في الكومة.
توجد العديد من تطبيقات الحماية من تجاوز سعة المخزن المؤقت، بما في ذلك تلك الخاصة بمجموعة GNU Compiler Collection و LLVM و Microsoft Visual Studio وغيرها من المترجمات.
ملخص
يحدث تجاوز سعة مخزن المكدس عندما يكتب برنامج ما إلى عنوان ذاكرة في مكدس استدعاءات البرنامج خارج نطاق بنية البيانات المقصودة، والتي عادةً ما تكون مخزنًا مؤقتًا ثابت الطول. وتحدث أخطاء تجاوز سعة مخزن المكدس عندما يكتب البرنامج بيانات إلى مخزن مؤقت موجود في المكدس أكثر مما هو مخصص له فعليًا. ويؤدي هذا في أغلب الأحيان إلى تلف البيانات المجاورة في المكدس، وفي الحالات التي يحدث فيها التجاوز عن طريق الخطأ، غالبًا ما يتسبب في تعطل البرنامج أو عمله بشكل غير صحيح. يُعد تجاوز سعة مخزن المكدس نوعًا من أنواع أعطال البرمجة الأكثر عمومية والمعروفة باسم تجاوز سعة المخزن المؤقت (أو تجاوز سعة المخزن المؤقت). ومن المرجح أن يؤدي ملء مخزن مؤقت في المكدس إلى تعطيل تنفيذ البرنامج أكثر من ملء مخزن مؤقت في الكومة، لأن المكدس يحتوي على عناوين الإرجاع لجميع استدعاءات الدوال النشطة. [ 1 ]
يمكن إحداث ثغرة تجاوز سعة المخزن المؤقت للمكدس عمدًا كجزء من هجوم يُعرف باسم " تحطيم المكدس" . إذا كان البرنامج المتأثر يعمل بصلاحيات خاصة، أو إذا كان يستقبل بيانات من مضيفين شبكيين غير موثوق بهم (مثل خادم ويب عام )، فإن هذه الثغرة تُعدّ ثغرة أمنية محتملة تسمح للمهاجم بحقن تعليمات برمجية قابلة للتنفيذ في البرنامج قيد التشغيل والسيطرة على العملية. تُعدّ هذه إحدى أقدم الطرق وأكثرها موثوقية للمهاجمين للوصول غير المصرح به إلى جهاز كمبيوتر. [ 2 ]
عادةً، تُعدّل حماية تجاوز سعة المخزن المؤقت تنظيم البيانات في إطار مكدس استدعاء الدالة لتضمين قيمة "كناري" تُشير، عند حذفها، إلى حدوث تجاوز في سعة المخزن المؤقت الذي يسبقها في الذاكرة. وهذا يُوفّر ميزة منع فئة كاملة من الهجمات. ووفقًا لبعض الباحثين، [ 3 ] فإن تأثير هذه التقنيات على الأداء ضئيل للغاية.
لا تستطيع الحماية من تجاوز سعة المكدس التصدي لبعض أنواع الهجمات. على سبيل المثال، لا يمكنها الحماية من تجاوز سعة المخزن المؤقت في الذاكرة الديناميكية. لا توجد طريقة منطقية لتغيير بنية البيانات داخل بنية ما ؛ إذ يُفترض أن تكون البنى متطابقة بين الوحدات، خاصةً مع المكتبات المشتركة. من المستحيل حماية أي بيانات في بنية ما بعد المخزن المؤقت باستخدام تقنية "الكناري"؛ لذا، يجب على المبرمجين توخي الحذر الشديد في كيفية تنظيم متغيراتهم واستخدام بنى البيانات.
طيور الكناري
تُعرف قيم الكناري، أو كلمات الكناري، أو ملفات تعريف الارتباط الخاصة بالمكدس، بأنها قيم معروفة تُوضع بين بيانات المخزن المؤقت وبيانات التحكم في المكدس لمراقبة تجاوزات المخزن المؤقت. عند تجاوز سعة المخزن المؤقت، عادةً ما تكون بيانات الكناري هي أول البيانات التي تتلف، وبالتالي فإن فشل التحقق من بيانات الكناري يُنذر بحدوث تجاوز، والذي يمكن معالجته، على سبيل المثال، عن طريق إبطال صلاحية البيانات التالفة. يجب عدم الخلط بين قيمة الكناري وقيمة الحارس .
يشير هذا المصطلح إلى الممارسة التاريخية لاستخدام طيور الكناري في مناجم الفحم ، حيث كانت تتأثر بالغازات السامة قبل عمال المناجم، مما يوفر نظام إنذار بيولوجي. ويُطلق على طيور الكناري أيضاً اسم " كعكات التكديس "، في إشارة إلى صورة "الكعكة المكسورة" عندما تكون قيمتها تالفة.
تُستخدم ثلاثة أنواع من مؤشرات الأمان (Canarys): مؤشر الإنهاء (terminator) ، ومؤشر الأمان العشوائي (random )، ومؤشر الأمان العشوائي XOR . تدعم الإصدارات الحالية من StackGuard الأنواع الثلاثة جميعها، بينما يدعم ProPolice مؤشر الإنهاء ومؤشر الأمان العشوائي .
كناري تيرميناتور
تعتمد هجمات "الكناري المُنهي" على ملاحظة أن معظم هجمات تجاوز سعة المخزن المؤقت تستند إلى عمليات معينة على السلاسل النصية تنتهي عند مُنهيات السلاسل. والرد على هذه الملاحظة هو أن "الكناري" يتكون من مُنهيات فارغة ، CR وLF و FF . ونتيجةً لذلك، يجب على المهاجم كتابة حرف فارغ قبل كتابة عنوان الإرجاع لتجنب تغيير "الكناري". يمنع هذا الهجمات التي تستخدم strcpy()طرقًا أخرى تُرجع قيمة عند نسخ حرف فارغ، بينما النتيجة غير المرغوب فيها هي معرفة قيمة "الكناري". حتى مع وجود هذه الحماية، قد يتمكن المهاجم من الكتابة فوق "الكناري" بقيمته المعروفة ومعلومات التحكم بقيم غير متطابقة، وبالتالي تجاوز رمز فحص "الكناري"، الذي يُنفذ قبل تعليمة الإرجاع من الاستدعاء الخاصة بالمعالج.
كناري عشوائي
يتم توليد قيم الكناري العشوائية بشكل عشوائي، عادةً بواسطة برنامج خفي لجمع البيانات العشوائية ، وذلك لمنع المهاجم من معرفة قيمتها. في العادة، لا يكون من الممكن أو المعقول منطقيًا قراءة قيمة الكناري لاستغلالها؛ فهي قيمة آمنة لا يعرفها إلا من يحتاج إليها - أي رمز الحماية من تجاوز سعة المخزن المؤقت في هذه الحالة.
عادةً، يتم توليد قيمة عشوائية (Canary) عند بدء تشغيل البرنامج، وتُخزّن في متغير عام . يُملأ هذا المتغير عادةً بصفحات غير مُخصصة، بحيث يؤدي أي محاولة لقراءته باستخدام أي حيل تستغل الثغرات لقراءة البيانات من ذاكرة الوصول العشوائي (RAM) إلى حدوث خطأ في تجزئة الذاكرة ، مما يُنهي البرنامج. قد يظل من الممكن قراءة القيمة العشوائية إذا كان المهاجم يعرف مكانها أو استطاع جعل البرنامج يقرأ من مكدس الذاكرة.
كناري XOR عشوائي
تُعدّ مؤشرات XOR العشوائية مؤشرات عشوائية يتم تشفيرها باستخدام عملية XOR مع كل أو جزء من بيانات التحكم. وبهذه الطريقة، بمجرد تغيير قيمة المؤشر أو بيانات التحكم، تصبح قيمة المؤشر خاطئة.
تُعاني خوارزمية XOR العشوائية من نفس نقاط الضعف التي تُعاني منها خوارزمية Canary العشوائية، إلا أن طريقة "القراءة من المكدس" للحصول على قيمة Canary أكثر تعقيدًا بعض الشيء. يجب على المهاجم الحصول على قيمة Canary، والخوارزمية، وبيانات التحكم لإعادة توليد قيمة Canary الأصلية اللازمة لتزييف الحماية.
بالإضافة إلى ذلك، يمكن لتقنية XOR العشوائية (الكناري) الحماية من نوع معين من الهجمات التي تتضمن تجاوز سعة المخزن المؤقت في بنية البيانات إلى مؤشر لتغيير المؤشر ليشير إلى جزء من بيانات التحكم. وبسبب ترميز XOR، ستكون قيمة الكناري خاطئة إذا تم تغيير بيانات التحكم أو القيمة المُعادة. وبفضل المؤشر، يمكن تغيير بيانات التحكم أو القيمة المُعادة دون تجاوز سعة الكناري.
على الرغم من أن هذه المؤشرات تحمي بيانات التحكم من التعديل الناتج عن تغيير المؤشرات، إلا أنها لا تحمي أي بيانات أخرى أو المؤشرات نفسها. وتُعدّ مؤشرات الدوال مشكلةً خاصةً هنا، إذ يُمكن أن تتعرض للاختراق وتُنفّذ شيفرةً خبيثةً عند استدعائها.
التحقق من الحدود
يُعدّ فحص الحدود تقنيةً تعتمد على المُصرّف، حيث تُضيف معلومات حدود وقت التشغيل لكل كتلة مُخصصة من الذاكرة، وتتحقق من جميع المؤشرات مقابل تلك المعلومات في وقت التشغيل. بالنسبة للغتين C و C++، يُمكن إجراء فحص الحدود عند حساب المؤشرات [ 4 ] أو عند فكّ المراجع . [ 5 ] [ 6 ] [ 7 ]
تستخدم تطبيقات هذا النهج إما مستودعًا مركزيًا يصف كل كتلة مخصصة من الذاكرة، [ 4 ] [ 5 ] [ 6 ] أو مؤشرات سميكة ، [ 7 ] والتي تحتوي على كل من المؤشر وبيانات إضافية تصف المنطقة التي تشير إليها.
الوسوم
الوسم [ 8 ] هو أسلوب يعتمد على المُصرّف أو على العتاد (يتطلب بنية مُوسومة ) لوسم نوع البيانات في الذاكرة، ويُستخدم بشكل أساسي للتحقق من النوع. من خلال وسم مناطق معينة من الذاكرة بأنها غير قابلة للتنفيذ، يمنع فعليًا احتواء الذاكرة المُخصصة لتخزين البيانات على تعليمات برمجية قابلة للتنفيذ. كما يمكن وسم مناطق معينة من الذاكرة بأنها غير مُخصصة، مما يمنع حدوث تجاوزات في المخزن المؤقت.
تاريخيًا، استُخدمت تقنية الوسم لتنفيذ لغات البرمجة عالية المستوى؛ [ 9 ] ومع الدعم المناسب من نظام التشغيل ، يمكن أيضًا استخدام الوسم للكشف عن تجاوزات سعة المخزن المؤقت. [ 10 ] ومن الأمثلة على ذلك ميزة NX bit في الأجهزة، والتي تدعمها معالجات Intel و AMD و ARM .
التطبيقات
مجموعة مترجمات جنو (GCC)
طُبقت حماية اختراق المكدس لأول مرة بواسطة StackGuard في عام 1997، ونُشرت في ندوة USENIX الأمنية لعام 1998. [ 11 ] قُدم StackGuard كمجموعة من التصحيحات لواجهة Intel x86 الخلفية لـ GCC 2.7. تم دعم StackGuard لتوزيعة Immunix Linux من عام 1998 إلى عام 2003، وتم توسيعه ليشمل تطبيقات لـ terminator و random و random XOR canaries. اقتُرح تضمين StackGuard في GCC 3.x في وقائع قمة GCC لعام 2003، [ 12 ] ولكن لم يتحقق ذلك.
بين عامي 2001 و2005، طورت شركة IBM تصحيحات لبرنامج GCC لحماية الذاكرة من الاختراق، والمعروفة باسم ProPolice . [ 13 ] وقد حسّنت هذه التصحيحات فكرة StackGuard من خلال وضع مخازن مؤقتة بعد المؤشرات المحلية ومعاملات الدوال في إطار المكدس. ساعد ذلك في تجنب تلف المؤشرات، ومنع الوصول إلى مواقع الذاكرة العشوائية.
مع ذلك، رصد مهندسو ريد هات مشاكل في ProPolice، وفي عام 2005 أعادوا تنفيذ حماية تجاوز سعة المكدس لإدراجها في GCC 4.1. [ 14 ] [ 15 ] وقد أدخل هذا العمل -fstack-protectorعلامةً تحمي بعض الدوال المعرضة للخطر فقط، وعلامةً أخرى -fstack-protector-allتحمي جميع الدوال سواءً احتاجت إلى الحماية أم لا. [ 16 ]
في عام ٢٠١٢، قام مهندسو جوجل-fstack-protector-strong بتطبيق هذه الميزة لتحقيق توازن أفضل بين الأمان والأداء. [ ١٧ ] تحمي هذه الميزة أنواعًا أكثر من الوظائف المعرضة للاختراق مقارنةً -fstack-protectorبـ، ولكن ليس جميع الوظائف، مما يوفر أداءً أفضل -fstack-protector-all. وهي متاحة في GCC منذ الإصدار ٤.٩. [ ١٨ ]
تُجمَّع جميع حزم فيدورا-fstack-protector باستخدام منذ فيدورا كور 5، ومنذ -fstack-protector-strongفيدورا 20. [ 19 ] [ 20 ] تُجمَّع معظم حزم أوبونتو-fstack-protector باستخدام منذ الإصدار 6.10. [ 21 ] تُجمَّع جميع حزم آرتش لينكس-fstack-protector باستخدام منذ عام 2011. [ 22 ] تستخدم جميع حزم آرتش لينكس التي تم إنشاؤها منذ 4 مايو 2014 -fstack-protector-strong. [ 23 ] تُستخدم حماية المكدس فقط لبعض الحزم في ديبيان ، [ 24 ] ولنظام فري بي إس دي الأساسي فقط منذ الإصدار 8.0. [ 25 ] تُعد حماية المكدس قياسية في أنظمة تشغيل معينة، بما في ذلك أوبن بي إس دي ، [ 26 ] وجنتو المحصن [ 27 ] ودراغون فلاي بي إس دي .
لا تستطيع تقنيتا StackGuard و ProPolice الحماية من تجاوزات الذاكرة في البنى المُخصصة تلقائيًا والتي تتجاوز حدود مؤشرات الدوال. على الأقل، تُعيد ProPolice ترتيب عملية التخصيص لتخصيص هذه البنى قبل مؤشرات الدوال. وقد اقتُرحت آلية منفصلة لحماية المؤشرات في PointGuard [ 28 ] وهي متاحة على نظام التشغيل Microsoft Windows . [ 29 ]
مايكروسوفت فيجوال ستوديو
تقوم مجموعة المترجمات من مايكروسوفت بتنفيذ حماية تجاوز سعة المخزن المؤقت منذ الإصدار 2003 من خلال مفتاح سطر الأوامر /GS ، والذي يتم تمكينه افتراضيًا منذ الإصدار 2005. [ 30 ] استخدام /GS- يعطل الحماية.
مُترجم IBM
يمكن تفعيل الحماية من تجاوز سعة المكدس بواسطة علامة المترجم -qstackprotect. [ 31 ]
Clang/ LLVM
يدعم Clang نفس -fstack-protectorخيارات GCC [ 32 ] ونظام "مكدس آمن" أقوى ( -fsanitize=safe-stack ) مع تأثير منخفض مماثل على الأداء. [ 33 ] كما يحتوي Clang على ثلاثة كاشفات لتجاوز سعة المخزن المؤقت، وهي AddressSanitizer [ 6 ] و UBSan [ 34 ] وSafeCode غير الرسمي (آخر تحديث له لـ LLVM 3.0 ) . [ 35 ]-fsanitize=address-fsanitize=bounds
تختلف هذه الأنظمة في مزاياها وعيوبها من حيث انخفاض الأداء، وزيادة استهلاك الذاكرة، وأنواع الأخطاء المكتشفة. وتُعدّ حماية المكدس ميزة قياسية في بعض أنظمة التشغيل، بما في ذلك OpenBSD . [ 36 ]
مُجمِّع إنتل
يدعم مُصرّف لغة C و C++ من إنتل الحماية من تجاوز سعة المكدس بخيارات مشابهة لتلك التي يوفرها GCC و Microsoft Visual Studio. [ 37 ]
نظام الأمان من الفشل C
Fail-Safe C [ 7 ] هو مترجم مفتوح المصدر وآمن للذاكرة من نوع ANSI C يقوم بفحص الحدود بناءً على المؤشرات السميكة والوصول إلى الذاكرة الموجهة للكائنات. [ 38 ]
StackGhost (معتمد على الأجهزة)
ابتكر مايك فرانتزن تقنية StackGhost، وهي عبارة عن تعديل بسيط لروتينات ملء وتفريغ نافذة التسجيل ، مما يجعل استغلال ثغرات تجاوز سعة المخزن المؤقت أكثر صعوبة. تستخدم هذه التقنية ميزة فريدة في بنية SPARC من شركة Sun Microsystems ، وهي ميزة ملء وتفريغ نافذة التسجيل المؤجل، على المكدس ، وفي نفس الإطار ، للكشف بشفافية عن أي تعديلات على مؤشرات الإرجاع (وهي طريقة شائعة لاستغلال الثغرات للسيطرة على مسارات التنفيذ)، مما يوفر حماية تلقائية لجميع التطبيقات دون الحاجة إلى تعديل ملفاتها التنفيذية أو ملفات التعليمات البرمجية المصدرية. تأثيرها على الأداء ضئيل للغاية، حيث لا يتجاوز 1%. وقد قام مارك كيتينيس بحل مشكلات gdb الناتجة بعد عامين، مما سمح بتفعيل هذه الميزة. بعد ذلك، تم دمج كود StackGhost (وتحسينه) في إصدار SPARC من نظام التشغيل OpenBSD .
انظر أيضاً
مراجع
- ↑ فيثين، ويليام ل.؛ سيكورد، روبرت (27-03-2007). "VT-MB. انتهاك حدود الذاكرة" . US CERT .
- ↑ ليفي، إلياس (1996-11-08). "تحطيم المكدس للمتعة والربح" . فراك . 7 (49): 14.
- ↑ "تجاوزات سعة المخزن المؤقت: الهجمات والدفاعات ضد ثغرة العقد*" (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 2013-03-09.
- 1 2 "التحقق من حدود اللغة C" . Doc.ic.ac.uk. مؤرشف من الأصل بتاريخ 26-03-2016 . تم الاطلاع عليه بتاريخ 27-04-2014 .
- 1 2 "SAFECode: Secure Virtual Architecture" . Sva.cs.illinois.edu. 2009-08-12 . تم الاطلاع عليه بتاريخ 2014-04-27 .
- 1 2 3 "google/sanitizers" . 19 يونيو 2021.
- 1 2 3 "Fail-Safe C: Top Page" . Staff.aist.go.jp. 2013-05-07. مؤرشف من الأصل في 2016-07-07 . تم الاطلاع عليه في 2014-04-27 .
- ↑ "الثلاثاء، 5 أبريل 2005" (ملف PDF) . Feustel.us . مؤرشف من الأصل (ملف PDF) في 23 يونيو 2016. تم الاطلاع عليه بتاريخ 17 سبتمبر 2016 .
- ↑ ستينكيست، بيتر؛ هينيسي، جون (1987). "الوسوم والتحقق من النوع في لغة ليسب: مناهج الأجهزة والبرامج" . مجلة أنظمة التشغيل ACM SIGOPS . 21 (4). ACM: 50-59 . doi : 10.1145/36204.36183 .
- ↑ "نظرة عامة على أمان خوادم ClearPath Enterprise MCP" (ملف PDF) . Public.support.unisys.com. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 24 يناير 2013. تم الاطلاع عليه بتاريخ 27 أبريل 2014 .
- ↑ "أوراق بحثية - ندوة USENIX الأمنية السابعة، 1998" . Usenix.org. 12 أبريل 2002. تاريخ الاطلاع: 27 أبريل 2014 .
- ↑ "وقائع قمة مطوري دول مجلس التعاون الخليجي" (ملف PDF) . مايو 2003. مؤرشف من الأصل بتاريخ 15 يوليو 2004. تم الاطلاع عليه بتاريخ 17 سبتمبر 2016 .
{{cite web}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط ) - ↑ "إضافة GCC لحماية التطبيقات من هجمات تحطيم المكدس" . Research.ibm.com . تم الاطلاع عليه بتاريخ 27 أبريل 2014 .
- ↑ "سلسلة إصدارات GCC 4.1 - التغييرات والميزات الجديدة والإصلاحات - مشروع جنو - مؤسسة البرمجيات الحرة (FSF)" . Gcc.gnu.org . تم الاطلاع عليه بتاريخ 27 أبريل 2014 .
- ↑ "ريتشارد هندرسون - [ rfc ] إعادة تنفيذ حامي تحطيم مكدس IBM" . Gcc.gnu.org . تم الاسترجاع في 27-04-2014 .
- ↑ "تحسين الخيارات - باستخدام مجموعة مترجمات جنو (GCC)" . Gcc.gnu.org . تم الاطلاع عليه بتاريخ 27-04-2014 .
- ↑ "هان شين - [ رقعة ] إضافة خيار جديد "-fstack-protector-strong" (رقعة / وثائق بالداخل)" . Gcc.gnu.org. 2012-06-14 . تم الاطلاع عليه بتاريخ 2014-04-27 .
- ↑ إيدج، جيك (5 فبراير 2014). ""حماية قوية " لمكدس GCC . أخبار لينكس الأسبوعية . تم الاطلاع عليه بتاريخ 28 نوفمبر 2014.
وقد تم تضمينه في GCC 4.9
- ↑ "ميزات الأمان" . مشروع فيدورا. 11-12-2013 . تم الاطلاع عليه بتاريخ 27-04-2014 .
- ↑ "#1128 (التبديل من "-fstack-protector" إلى "-fstack-protector-strong" في فيدورا 20) – FESCo" . Fedorahosted.org . تم الاطلاع عليه بتاريخ 27-04-2014 .
- ↑ "الأمان/الميزات - ويكي أوبونتو" . Wiki.ubuntu.com . تم الاطلاع عليه بتاريخ 27-04-2014 .
- ↑ "FS#18864 : يُرجى النظر في تفعيل حماية GCC من تجاوز سعة المكدس (ProPolice، SSP) لجميع الحزم" . Bugs.archlinux.org . تم الاطلاع عليه بتاريخ 27-04-2014 .
- ↑ "svntogit/packages.git - نسخة Git من مستودع 'packages'" .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ "إحصائيات تعزيز أمان دبيان" . Outflux.net. مؤرشف من الأصل بتاريخ 28 أبريل 2014. تم الاطلاع عليه بتاريخ 27 أبريل 2014 .
- ↑ "ملاحظات إصدار FreeBSD 8.0-RELEASE" . Freebsd.org. 13-11-2013 . تم الاطلاع عليه بتاريخ 27-04-2014 .
- ↑ "صفحة دليل gcc-local(1) الخاصة بنظام OpenBSD" .
يأتي gcc مزودًا بامتداد حماية مكدس
ProPolice
، والذي يتم تمكينه افتراضيًا.
- ↑ "Hardened/Toolchain - Gentoo Wiki" . 2016-07-31.
يقوم نظام Gentoo المحصن بتفعيل حامي المكدس افتراضيًا ما لم يُطلب صراحةً عدم القيام بذلك.
- ↑ "المؤتمر الثاني عشر لأمن USENIX - ورقة تقنية" .
- ↑ "مدونات MSDN - احصل على أحدث المعلومات والرؤى والإعلانات والأخبار من خبراء ومطوري مايكروسوفت في مدونات MSDN" . 6 أغسطس 2021.
- ↑ "/GS (فحص أمان المخزن المؤقت) (C++)" . msdn.microsoft.com . تم الاطلاع عليه بتاريخ 27-04-2014 .
- ↑ "qstackprotect" . Publib.boulder.ibm.com . تم الاطلاع عليه بتاريخ 27-04-2014 .
- ↑ "قائمة بريدية لـ Clang" . Clang.llvm.org. 28 أبريل 2017. تم الاطلاع عليه بتاريخ 16 نوفمبر 2022 .
- ↑ "SafeStack — Clang 17.0.0git documentation" . clang.llvm.org .
- ↑ "دليل مستخدم مُصرّف Clang — وثائق Clang 3.5" . Clang.llvm.org . تم الاطلاع عليه بتاريخ 27-04-2014 .
- ↑ "SAFECode" . Safecode.cs.illinois.edu . تم الاطلاع عليه بتاريخ 27-04-2014 .
- ↑ "صفحة دليل clang-local(1) الخاصة بنظام OpenBSD" .
يأتي clang مزودًا بحماية المكدس مفعلة افتراضيًا، وهو ما يعادل الخيار
-fstack-protector-strong
في الأنظمة الأخرى.
- ↑ "دليل المستخدم ودليل المرجع لمترجم Intel C++ 15.0: fstack-security-check، GS" . software.intel.com . تم الاطلاع عليه بتاريخ 13 فبراير 2015 .
- ↑ "thesis.dvi" (PDF) . Staff.aist.go.jp . تم الاطلاع عليه بتاريخ 17-09-2016 .
روابط خارجية
- وقائع قمة مجلس التعاون الخليجي لعام 2003 (ملف PDF)
- تحطيم الكومة للمتعة والربح بقلم ألف ون
- الصفحة الرسمية لشرطة ProPolice
- الصفحة الرئيسية لـ Immunix StackGuard
- ورقة بحثية أصلية عن StackGuard في مؤتمر USENIX للأمن عام 1998
- StackGhost: حماية المكدس المدعومة بالأجهزة
- تطبيق بروبوليس على نظامي التشغيل FreeBSD 5.4 و 6.2
- أربع حيل مختلفة لتجاوز حماية StackShield و StackGuard
- حامي تحطيم الأكوام
- أخطاء برمجية
- ثغرات أمنية في الحاسوب
