تجاوز سعة مخزن البيانات

في البرمجيات، يحدث تجاوز سعة مخزن المكدس عندما يكتب البرنامج إلى عنوان ذاكرة في مكدس استدعاءات البرنامج خارج بنية البيانات المقصودة، والتي عادةً ما تكون مخزنًا مؤقتًا ثابت الطول . [ 1 ] [ 2 ] تحدث أخطاء تجاوز سعة مخزن المكدس عندما يكتب البرنامج بيانات إلى مخزن مؤقت موجود في المكدس أكثر مما هو مخصص له فعليًا. يؤدي هذا دائمًا تقريبًا إلى تلف البيانات المجاورة في المكدس، وفي الحالات التي يحدث فيها التجاوز عن طريق الخطأ، غالبًا ما يتسبب في تعطل البرنامج أو عمله بشكل غير صحيح. يُعد تجاوز سعة مخزن المكدس نوعًا من أنواع أعطال البرمجة الأكثر عمومية المعروفة باسم تجاوز سعة المخزن المؤقت . [ 1 ] من المرجح أن يؤدي ملء مخزن مؤقت في المكدس إلى تعطيل تنفيذ البرنامج أكثر من ملء مخزن مؤقت في الكومة، لأن المكدس يحتوي على عناوين الإرجاع لجميع استدعاءات الدوال النشطة.

يمكن إحداث تجاوز سعة مخزن البيانات بشكل متعمد كجزء من هجوم يُعرف باسماختراق مكدس الذاكرة . إذا كان البرنامج المتأثر يعمل بصلاحيات خاصة، أو يستقبل بيانات من مضيفين شبكيين غير موثوق بهم (مثلخادم ويبثغرة أمنيةمحتملة. إذا امتلأ مخزن مكدس الذاكرة ببيانات من مستخدم غير موثوق به، فبإمكان هذا المستخدم إتلاف المكدس بطريقة تسمح بحقن شيفرة تنفيذية في البرنامج قيد التشغيل والسيطرة على العملية. تُعد هذه إحدى أقدم الطرق وأكثرها موثوقيةللمهاجمينللوصول غير المصرح به إلى جهاز كمبيوتر. [ 3 ] [ 4 ] [ 5 ]

استغلال ثغرات تجاوز سعة مخزن البيانات

تتمثل الطريقة الشائعة لاستغلال ثغرة تجاوز سعة المخزن المؤقت في المكدس في استبدال عنوان إرجاع الدالة بمؤشر إلى بيانات يتحكم بها المهاجم (عادةً ما تكون موجودة على المكدس نفسه). [ 3 ] [ 6 ] ويوضح strcpy()المثال التالي ذلك:

#include <string.h>void foo ( char * bar ) { char c [ 12 ];strcpy ( c , bar ); // لا يوجد فحص للحدود }int main ( int argc , char * argv []) { foo ( argv [ 1 ]); return 0 ; }

يأخذ هذا الكود وسيطًا من سطر الأوامر وينسخه إلى متغير محلي في المكدس c. يعمل هذا بشكل صحيح مع وسائط سطر الأوامر التي يقل طولها عن 12 حرفًا (كما هو موضح في الشكل ب أدناه). أي وسيط يزيد طوله عن 11 حرفًا سيؤدي إلى تلف المكدس. (الحد الأقصى لعدد الأحرف الآمن هو أقل بواحد من حجم المخزن المؤقت هنا، لأنه في لغة البرمجة C، تُنهى السلاسل النصية بحرف بايت فارغ. وبالتالي، يتطلب إدخال مكون من 12 حرفًا 13 بايتًا للتخزين، حيث يُخزن الإدخال متبوعًا بالبايت الصفري. ثم يقوم البايت الصفري بالكتابة فوق موقع ذاكرة يقع على بُعد بايت واحد بعد نهاية المخزن المؤقت.)

يتم تجميع البرنامج foo()مع مدخلات متنوعة:

أ. - قبل نسخ البيانات.
ب. - "hello" هو الوسيط الأول في سطر الأوامر.
ج. - "AAAAAAAAAAAAAAAAAAAA\x08\x35\xC0\x80" هو الوسيط الأول لسطر الأوامر.

في الشكل (ج) أعلاه، عند إدخال وسيطة أكبر من 11 بايت في سطر الأوامر، foo()يتم استبدال بيانات المكدس المحلي، ومؤشر الإطار المحفوظ، والأهم من ذلك، عنوان الإرجاع. عند foo()انتهاء العملية، يتم سحب عنوان الإرجاع من المكدس والانتقال إليه (أي بدء تنفيذ التعليمات من ذلك العنوان). وبالتالي، يكون المهاجم قد استبدل عنوان الإرجاع بمؤشر إلى مخزن المكدس المؤقت char c[12]، الذي يحتوي الآن على البيانات التي أدخلها المهاجم. في حالة استغلال ثغرة تجاوز سعة مخزن المكدس المؤقت، ستكون سلسلة الأحرف "A" عبارة عن شفرة برمجية مناسبة للنظام الأساسي والوظيفة المطلوبة. إذا كان لهذا البرنامج امتيازات خاصة (مثل تفعيل بت SUID للتشغيل كمستخدم فائق )، فيمكن للمهاجم استغلال هذه الثغرة للحصول على امتيازات المستخدم الفائق على الجهاز المتأثر. [ 3 ]

يمكن للمهاجم أيضًا تعديل قيم المتغيرات الداخلية لاستغلال بعض الثغرات. على سبيل المثال:

#include <stdio.h> #include <string.h>void foo ( char * bar ) { float myFloat = 10.5 ; // Addr = 0x0023FF4C char c [ 28 ]; // Addr = 0x0023FF30// سيتم طباعة 10.500000 printf ( "myFloat value = %f \n " , myFloat );/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  خريطة الذاكرة:  @: الذاكرة المخصصة لـ c  #: الذاكرة المخصصة لـ myFloat *c *myFloat  0x0023FF30 0x0023FF4C  | |  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####  foo("السلسلة النصية طويلة جدًا !!!!! XXXXX"); ستقوم دالة memcpy بوضع القيمة  0x1010C042 (ترتيب البايتات الصغير) في قيمة myFloat.memcpy ( c , bar , strlen ( bar )); // لا يوجد فحص للحدود...// سيتم طباعة 96.031372 printf ( "myFloat value = %f \n " , myFloat ); }int main ( int argc , char * argv []) { foo ( "سلسلة نصية طويلة جدًا !!!!! \x10\x10\xc0\x42 " ); return 0 ; }

تُستخدم عادةً طريقتان لتغيير العنوان المخزن في مكدس الذاكرة: الطريقة المباشرة والطريقة غير المباشرة. وقد بدأ المهاجمون بتطوير هجمات غير مباشرة، ذات تبعيات أقل، لتجاوز إجراءات الحماية التي وُضعت للحد من الهجمات المباشرة. [ 7 ]

تختلف العديد من المنصات اختلافًا طفيفًا في تنفيذها لمكدس الاستدعاءات، مما قد يؤثر على كيفية عمل استغلال ثغرة تجاوز سعة مخزن المكدس. تخزن بعض بنى الأجهزة عنوان الإرجاع الرئيسي لمكدس الاستدعاءات في سجل. هذا يعني أن أي عنوان إرجاع يتم استبداله لن يُستخدم إلا عند فك مكدس الاستدعاءات لاحقًا. مثال آخر على التفاصيل الخاصة بالجهاز والتي قد تؤثر على اختيار أساليب الاستغلال هو أن معظم بنى أجهزة RISC لا تسمح بالوصول غير المُحاذي إلى الذاكرة. [ 8 ] بالإضافة إلى الطول الثابت لرموز العمليات في الجهاز، قد يجعل هذا القيد من الجهاز تقنية القفز إلى المكدس شبه مستحيلة التنفيذ (باستثناء حالة واحدة، وهي عندما يحتوي البرنامج بالفعل على رمز غير محتمل للقفز صراحةً إلى سجل المكدس). [ 9 ] [ 10 ]

أكوام تتراكم

في سياق موضوع تجاوز سعة مخزن البيانات المؤقت، نجد بنية معمارية شائعة النقاش ولكنها نادرة الاستخدام، حيث ينمو المكدس في الاتجاه المعاكس. يُقترح هذا التغيير في البنية المعمارية غالبًا كحل لمشكلة تجاوز سعة مخزن البيانات المؤقت، لأن أي تجاوز لسعة مخزن البيانات المؤقت يحدث ضمن نفس إطار المكدس لا يمكنه الكتابة فوق مؤشر الإرجاع. مع ذلك، فإن أي تجاوز يحدث في مخزن بيانات مؤقت من إطار مكدس سابق سيؤدي إلى الكتابة فوق مؤشر الإرجاع، مما يسمح باستغلال الثغرة بشكل خبيث. [ 11 ] على سبيل المثال، في المثال أعلاه، fooلن تتم الكتابة فوق مؤشر الإرجاع للدالة `return` لأن التجاوز يحدث فعليًا ضمن إطار المكدس للدالة `return` memcpy. ولكن، نظرًا لأن مخزن البيانات المؤقت الذي يتجاوز السعة أثناء استدعاء الدالة `return` memcpyموجود في إطار مكدس سابق، memcpyفسيكون لمؤشر الإرجاع للدالة `return` عنوان ذاكرة أعلى عدديًا من عنوان مخزن البيانات المؤقت. هذا يعني أنه بدلًا من الكتابة فوق مؤشر الإرجاع للدالة `return` ، سيتم الكتابة فوق fooمؤشر الإرجاع للدالة `return` . memcpyفي أحسن الأحوال، هذا يعني أن زيادة حجم المكدس في الاتجاه المعاكس ستغير بعض تفاصيل كيفية استغلال ثغرات تجاوز سعة المخزن المؤقت للمكدس، لكنها لن تقلل بشكل كبير من عدد الأخطاء القابلة للاستغلال.

برامج الحماية

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

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

كناريات المكدس

تُستخدم مؤشرات تجاوز سعة المخزن المؤقت للمكدس، والتي سُميت بهذا الاسم تشبيهًا بطائر الكناري في منجم الفحم ، للكشف عن تجاوز سعة المخزن المؤقت للمكدس قبل تنفيذ التعليمات البرمجية الخبيثة. تعمل هذه الطريقة عن طريق وضع عدد صحيح صغير، تُختار قيمته عشوائيًا عند بدء تشغيل البرنامج، في الذاكرة قبل مؤشر العودة للمكدس مباشرةً. في معظم حالات تجاوز سعة المخزن المؤقت، يتم الكتابة فوق الذاكرة من عناوين الذاكرة الأدنى إلى الأعلى، لذا، من أجل الكتابة فوق مؤشر العودة (وبالتالي السيطرة على العملية)، يجب أيضًا الكتابة فوق قيمة مؤشر تجاوز سعة المخزن المؤقت. يتم التحقق من هذه القيمة للتأكد من عدم تغييرها قبل أن يستخدم روتين ما مؤشر العودة على المكدس. [ 2 ] يمكن لهذه التقنية أن تزيد بشكل كبير من صعوبة استغلال تجاوز سعة المخزن المؤقت للمكدس لأنها تجبر المهاجم على السيطرة على مؤشر التعليمات بوسائل غير تقليدية مثل إتلاف متغيرات مهمة أخرى على المكدس. [ 2 ]

مكدس غير قابل للتنفيذ

يتمثل أحد الأساليب الأخرى لمنع استغلال ثغرة تجاوز سعة مخزن البيانات في فرض سياسة ذاكرة على منطقة ذاكرة المكدس تمنع التنفيذ من المكدس ( W^X ، "الكتابة XOR التنفيذ"). هذا يعني أنه لتنفيذ شيفرة خبيثة من المكدس، يجب على المهاجم إما إيجاد طريقة لتعطيل حماية التنفيذ من الذاكرة، أو إيجاد طريقة لوضع حمولة الشيفرة الخبيثة في منطقة ذاكرة غير محمية. وقد ازدادت شعبية هذه الطريقة الآن مع توفر دعم الأجهزة لعلامة منع التنفيذ في معظم معالجات أجهزة الكمبيوتر المكتبية.

مع أن هذه الطريقة تمنع استغلال ثغرة تجاوز سعة المكدس التقليدية، إلا أنه يمكن استغلالها بطرق أخرى. أولًا، من الشائع إيجاد طرق لتخزين الشيفرة الخبيثة في مناطق الذاكرة غير المحمية مثل الكومة، وبالتالي لا يتطلب الأمر سوى تغييرات طفيفة في طريقة الاستغلال. [ 12 ]

هناك هجوم آخر يُعرف باسم " طريقة العودة إلى مكتبة libc" لإنشاء الشيفرة الخبيثة. في هذا الهجوم، لا يقوم البرنامج الخبيث بتحميل مكدس الاستدعاءات بالشيفرة الخبيثة، بل بمكدس استدعاءات صحيح، بحيث يتم توجيه التنفيذ إلى سلسلة من استدعاءات المكتبة القياسية، مما يؤدي عادةً إلى تعطيل حماية تنفيذ الذاكرة والسماح للشيفرة الخبيثة بالعمل بشكل طبيعي. [ 13 ] ينجح هذا الهجوم لأن التنفيذ لا يتم توجيهه فعليًا إلى مكدس الاستدعاءات نفسه.

يُعدّ البرمجة الموجهة بالعودة (ROP) أحد أنواع البرمجة الموجهة بالعودة إلى مكتبة libc ، حيث تُنشئ سلسلة من عناوين العودة، يُنفّذ كل منها تسلسلًا صغيرًا من تعليمات الآلة المُنتقاة بعناية ضمن كود البرنامج الحالي أو مكتبات النظام، وينتهي هذا التسلسل بعودة. تُنجز هذه الأدوات، التي تُسمى بالأدوات البرمجية ، عملية بسيطة لمعالجة السجلات أو تنفيذًا مشابهًا قبل العودة، ويُحقق ربطها معًا أهداف المُهاجم. بل من الممكن استخدام البرمجة الموجهة بالعودة "بدون عودة" من خلال استغلال تعليمات أو مجموعات من التعليمات التي تتصرف بشكل مشابه لتعليمات العودة. [ 14 ]

التوزيع العشوائي

بدلاً من فصل الشيفرة عن البيانات، تتمثل إحدى تقنيات التخفيف الأخرى في إدخال عشوائية في مساحة ذاكرة البرنامج قيد التنفيذ. ولأن المهاجم يحتاج إلى تحديد مكان وجود الشيفرة القابلة للتنفيذ، يتم توفير حمولة تنفيذية (مع مكدس تنفيذي) أو يتم إنشاؤها باستخدام إعادة استخدام الشيفرة كما في ret2libc أو البرمجة الموجهة بالعودة (ROP). من حيث المبدأ، تمنع عشوائية تخطيط الذاكرة المهاجم من معرفة مكان أي شيفرة. مع ذلك، لا تقوم التطبيقات عادةً بتوزيع كل شيء عشوائيًا؛ فعادةً ما يتم تحميل الملف التنفيذي نفسه في عنوان ثابت، وبالتالي حتى عند دمج ASLR (عشوائية تخطيط مساحة العناوين) مع مكدس غير تنفيذي، يمكن للمهاجم استخدام هذه المنطقة الثابتة من الذاكرة. لذلك، يجب تجميع جميع البرامج باستخدام PIE (ملفات تنفيذية مستقلة عن الموقع) بحيث يتم توزيع هذه المنطقة من الذاكرة عشوائيًا أيضًا. تختلف إنتروبيا العشوائية من تطبيق لآخر، ويمكن أن تشكل إنتروبيا منخفضة بما فيه الكفاية مشكلة في حد ذاتها من حيث استخدام القوة الغاشمة للوصول إلى مساحة الذاكرة التي يتم عشوائيتها.

تجاوز الإجراءات المضادة

تُصعّب إجراءات التخفيف السابقة خطوات الاستغلال. ولكن لا يزال من الممكن استغلال ثغرة تجاوز سعة المخزن المؤقت للمكدس إذا وُجدت بعض الثغرات الأمنية أو إذا تحققت بعض الشروط. [ 15 ]

تجاوز Stack Canary

تسريب معلومات عبر استغلال ثغرة في سلسلة التنسيق

يستطيع المهاجم استغلال ثغرة سلسلة التنسيق للكشف عن مواقع الذاكرة في البرنامج المعرض للخطر. [ 16 ]

تجاوز المكدس غير القابل للتنفيذ

عند تفعيل خاصية منع تنفيذ البيانات لمنع أي وصول تنفيذي إلى مكدس التعليمات البرمجية، يظل بإمكان المهاجم استخدام عنوان الإرجاع المُستبدل (مؤشر التعليمات) للإشارة إلى البيانات في مقطع برمجي ( ملف .text على نظام لينكس) أو أي قسم تنفيذي آخر من البرنامج. والهدف من ذلك هو إعادة استخدام التعليمات البرمجية الموجودة. [ 17 ]

سلسلة حبل

تتمثل هذه الثغرة في استبدال مؤشر الإرجاع قبل تعليمة الإرجاع (ret في معمارية x86) للبرنامج. سيتم تنفيذ التعليمات بين مؤشر الإرجاع الجديد وتعليمة الإرجاع، وستعود تعليمة الإرجاع إلى الحمولة التي يتحكم بها المُستغل. [ 17 ]

سلسلة متاجر جوب

البرمجة الموجهة بالقفز هي تقنية تستخدم تعليمات القفز لإعادة استخدام التعليمات البرمجية بدلاً من تعليمات الإرجاع. [ 18 ]

تجاوز التوزيع العشوائي

من عيوب تطبيق تقنية ASLR على أنظمة 64 بت أنها عرضة لهجمات كشف الذاكرة وتسريب المعلومات. يستطيع المهاجم تنفيذ هجوم ROP عن طريق كشف عنوان دالة واحدة باستخدام هجوم تسريب المعلومات. يصف القسم التالي استراتيجية مشابهة موجودة لاختراق حماية ASLR. [ 19 ]

أمثلة بارزة

  • انتشرت دودة موريس في عام 1988 جزئياً عن طريق استغلال ثغرة تجاوز سعة المخزن المؤقت في خادم بصمة الإصبع في نظام يونكس . [ 20 ]
  • انتشرت دودة سلامر في عام 2003 عن طريق استغلال ثغرة تجاوز سعة المخزن المؤقت في خادم SQL الخاص بمايكروسوفت . [ 21 ]
  • انتشرت دودة بلاستر في عام 2003 عن طريق استغلال ثغرة تجاوز سعة المخزن المؤقت في خدمة مايكروسوفت DCOM .
  • انتشرت دودة Witty في عام 2004 عن طريق استغلال ثغرة تجاوز سعة المخزن المؤقت في برنامج BlackICE Desktop Agent التابع لأنظمة أمن الإنترنت . [ 22 ]
  • هناك مثالان على سماح جهاز Wii بتشغيل أي كود برمجي على نظام غير مُعدّل. الأول هو "اختراق توايلايت" الذي يتضمن إعطاء اسم طويل لحصان الشخصية الرئيسية في لعبة The Legend of Zelda: Twilight Princess ، [ 23 ] والثاني هو "Smash Stack" في لعبة Super Smash Bros. Brawl الذي يتضمن استخدام بطاقة SD لتحميل ملف مُعدّ خصيصًا في مُحرّر المستويات داخل اللعبة. مع أن كلا الطريقتين تُتيحان تشغيل أي كود برمجي، إلا أن الأخيرة تُستخدم غالبًا لإعادة تحميل لعبة Brawl نفسها مع تطبيق التعديلات . [ 24 ]

انظر أيضاً

مراجع

  1. 1 2 فيثين، ويليام ل.؛ سيكورد، روبرت (27-03-2007). "VT-MB. انتهاك حدود الذاكرة" . US CERT .
  2. 1 2 3 داود، مارك؛ ماكدونالد، جون؛ شو، جاستن (نوفمبر 2006). فن تقييم أمن البرمجيات . أديسون ويسلي . الصفحات 169-196 . ISBN  0-321-44442-6.
  3. 1 2 3 ليفي، إلياس (1996-11-08). "تحطيم المكدس للمتعة والربح" . فراك . 7 (49): 14.
  4. بينكوس، ج.؛ بيكر، ب. (يوليو-أغسطس 2004). "ما وراء اختراق المكدس: التطورات الحديثة في استغلال تجاوزات المخزن المؤقت" (ملف PDF) . مجلة IEEE للأمن والخصوصية . 2 (4): 20-27 . رمز Bibcode : 2004ISPri...2d..20P . doi : 10.1109/MSP.2004.36 . S2CID 6647392 . 
  5. بوربيستا. "تجاوزات المكدس" (ملف PDF) . مؤرشف من الأصل (ملف PDF) في 28 سبتمبر 2007.
  6. بيرتراند، لويس (2002). "OpenBSD: إصلاح الأخطاء، تأمين النظام" . MUSESS '02: ندوة هندسة البرمجيات بجامعة ماكماستر . مؤرشف من الأصل بتاريخ 30-09-2007.
  7. كوبرمان، بنيامين أ.؛ برودلي، كارلا إي.؛ أوزدوغانوغلو، حلمي؛ فيجاي كومار، تي إن؛ جالوت، أنكيت (نوفمبر 2005). "الكشف عن هجمات تجاوز سعة مخزن البيانات المؤقت ومنعها" . مجلة اتصالات رابطة مكائن ​​الحوسبة . 48 (11): 50-56 . doi : 10.1145/1096000.1096004 . ISSN 0001-0782 . S2CID 120462 .  
  8. pr1. "استغلال ثغرات تجاوز سعة المخزن المؤقت في SPARC" .{{cite web}}: صيانة CS1: أسماء رقمية: قائمة المؤلفين ( رابط )
  9. فضولي (2005-01-08). "الهندسة العكسية - اختراق PowerPC على نظام التشغيل Mac OS X باستخدام GDB" . Phrack . 11 (63): 16.
  10. سوفاريل، آنا نورا؛ إيفانز، ديفيد؛ بول، ناثانيل. أين FEEB؟ فعالية عشوائية مجموعة التعليمات (تقرير).
  11. زودياك (28-12-2001). "ثغرات تجاوز سعة نظام التشغيل HP-UX (PA-RISC 1.1)" . فراك . 11 (58): 11.
  12. فوستر، جيمس سي؛ أوسيبوف، فيتالي؛ بهالا، نيش؛ هاينن، نيلز (2005). هجمات تجاوز سعة المخزن المؤقت: الكشف، والاستغلال، والوقاية (ملف PDF) . الولايات المتحدة الأمريكية: دار نشر سينغريس. رقم ISBN 1-932266-67-4.
  13. نيرغال (28-12-2001). "استغلالات العودة المتقدمة إلى مكتبة (ج): دراسة حالة PaX" . Phrack . 11 (58): 4.
  14. تشيكواي، س.؛ دافي، ل.؛ ديميتريينكو، أ.؛ صادقي، أ.ر.؛ شاشام، هـ.؛ ويناندي، م. (أكتوبر 2010). "البرمجة الموجهة نحو الإرجاع بدون إرجاع". وقائع المؤتمر السابع عشر لجمعية ACM حول أمن الحاسوب والاتصالات - CCS '10 . الصفحات 559-572 . doi : 10.1145/1866307.1866370 . ISBN  978-1-4503-0245-6. S2CID 207182734 . 
  15. شوشيتايشفيلي، يان. "أخطاء الذاكرة، أمن البرامج" . كلية بي دبليو إن . تم الاسترجاع في 7 سبتمبر 2024 .
  16. بوت، محمد عارف؛ أجمل، زرافشان؛ خان، ظفر إقبال؛ إدريس، محمد؛ جاويد، ياسر (يناير 2022). "دراسة معمقة لتقنيات تجاوز تخفيف تجاوز سعة المخزن المؤقت" . العلوم التطبيقية . 12 (26): 6702. doi : 10.3390/app12136702 . ISSN 2076-3417 . 
  17. 1 2 بوت، محمد عارف؛ أجمل، زرافشان؛ خان، ظفر إقبال؛ إدريس، محمد؛ جاويد، ياسر (يناير 2022). "دراسة معمقة لتقنيات تجاوز تخفيف تجاوز سعة المخزن المؤقت" . العلوم التطبيقية . 12 (13): 12-13 . doi : 10.3390/app12136702 . ISSN 2076-3417 . 
  18. ^ Sécurité matérielle des systèmes (بالفرنسية). 2022-09-03.
  19. بوت، محمد عارف؛ أجمل، زرافشان؛ خان، ظفر إقبال؛ إدريس، محمد؛ جاويد، ياسر (يناير 2022). "دراسة معمقة لتقنيات تجاوز تخفيف تجاوز سعة المخزن المؤقت" . العلوم التطبيقية . 12 (16): 6702. doi : 10.3390/app12136702 . ISSN 2076-3417 . 
  20. "تقرير عن دودة الإنترنت" . 7 نوفمبر 1988.
  21. "Twilight Hack - WiiBrew" . wiibrew.org . تم الاطلاع عليه بتاريخ 18-01-2018 .
  22. "Smash Stack - WiiBrew" . wiibrew.org . تم الاطلاع عليه بتاريخ 18-01-2018 .