البرمجة الموجهة نحو العائد

البرمجة الموجهة نحو العودة ( ROP ) هي تقنية استغلال أمني للحاسوب تسمح للمهاجم بتنفيذ التعليمات البرمجية على الرغم من وجود دفاعات أمنية [ 1 ] [ 2 ] من شأنها أن تمنع ذلك، مثل حماية مساحة التنفيذ وتوقيع التعليمات البرمجية . [ 3 ]

في هذه التقنية، يسيطر المهاجم على مكدس الاستدعاءات ليُسيطر على تدفق التحكم في البرنامج ، ثم يُنفذ تسلسلات تعليمات آلية مُختارة بعناية موجودة مُسبقًا في ذاكرة الجهاز، تُسمى "الأدوات". [ 4 ] [ ملاحظة 1 ] تنتهي كل أداة عادةً بتعليمات إرجاع ، وتوجد في روتين فرعي ضمن البرنامج الحالي و/أو كود المكتبة المشتركة. [ ملاحظة 1 ] تسمح هذه الأدوات، عند ربطها معًا، للمهاجم بتنفيذ عمليات عشوائية على جهاز يستخدم دفاعات قادرة على كشف الهجمات الأبسط.

خلفية

مثال على تخطيط مكدس الاستدعاءات. DrawLineتم استدعاء الروتين الفرعي بواسطة DrawSquare. لاحظ أن المكدس ينمو للأعلى في هذا الرسم التخطيطي.

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

In a standard buffer overrun attack, the attacker would simply write attack code (the "payload") onto the stack and then overwrite the return address with the location of these newly written instructions. Until the late 1990s, major operating systems did not offer any protection against these attacks. For example, Microsoft Windows provided no buffer-overrun protections until 2004.[5] Eventually, operating systems began to combat the exploitation of buffer overflow bugs by marking the memory where data is written as non-executable, a technique known as executable-space protection. With this enabled, the machine would refuse to execute any code located in user-writable areas of memory, preventing the attacker from placing payload on the stack and jumping to it via a return address overwrite. Later on, hardware support became available to strengthen this protection.

With data execution prevention, an adversary cannot directly execute instructions written to a buffer because the buffer's memory section is marked as non-executable. To defeat this protection, a return-oriented programming attack does not inject malicious instructions, but rather uses instruction sequences already present in executable memory, called "gadgets", by manipulating return addresses. A typical data execution prevention implementation cannot defend against this attack because the adversary did not directly execute the malicious code, but rather combined sequences of "good" instructions by changing stored return addresses; therefore the code used would be marked as executable.

Return-into-library technique

The widespread implementation of data execution prevention made traditional buffer overflow vulnerabilities difficult or impossible to exploit in the manner described above. Instead, an attacker was restricted to code already in memory marked executable, such as the program code itself and any linked shared libraries. Since shared libraries, such as libc, often contain subroutines for performing system calls and other functionality potentially useful to an attacker, they are the most likely candidates for finding code to assemble an attack.

في هجوم "العودة إلى المكتبة"، يستولي المهاجم على مسار التحكم في البرنامج باستغلال ثغرة تجاوز سعة المخزن المؤقت، كما ذُكر سابقًا. بدلًا من محاولة كتابة حمولة هجومية على المكدس، يختار المهاجم دالة مكتبة متاحة ويستبدل عنوان الإرجاع بموقع دخولها. ثم تُستبدل مواقع أخرى في المكدس، مع مراعاة قواعد الاستدعاء المطبقة ، لتمرير المعاملات المناسبة إلى الدالة بدقة، ما يُمكّنها من أداء وظائف مفيدة للمهاجم. عُرضت هذه التقنية لأول مرة في برنامج Solar Designer عام 1997، [ 6 ] ووُسّعت لاحقًا لتشمل تسلسلًا غير محدود لاستدعاءات الدوال. [ 7 ]

أجزاء من التعليمات البرمجية المستعارة

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

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

الهجمات

تعتمد البرمجة الموجهة نحو الإرجاع على أسلوب أجزاء التعليمات البرمجية المستعارة، وتوسعه لتوفير وظائف كاملة لتورينغ للمهاجم، بما في ذلك الحلقات والفروع الشرطية . [ 9 ] [ 10 ] بعبارة أخرى، توفر البرمجة الموجهة نحو الإرجاع "لغة" وظيفية بالكامل يمكن للمهاجم استخدامها لجعل جهاز مخترق يؤدي أي عملية مطلوبة. نشر هوفاف شاشام هذه التقنية في عام 2007 [ 11 ] ، وبيّن كيف يمكن محاكاة جميع بنيات البرمجة المهمة باستخدام البرمجة الموجهة نحو الإرجاع ضد تطبيق مستهدف مرتبط بمكتبة C القياسية ويحتوي على ثغرة أمنية قابلة للاستغلال تتمثل في تجاوز سعة المخزن المؤقت.

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

على معمارية x86

على الرغم من إمكانية تنفيذ هجمات البرمجة الموجهة نحو العودة على مجموعة متنوعة من البنى، [ 11 ] إلا أن ورقة شاشام ومعظم الأعمال اللاحقة تركز على بنية Intel x86 . تُعد بنية x86 مجموعة تعليمات CISC متغيرة الطول . تستغل البرمجة الموجهة نحو العودة على x86 حقيقة أن مجموعة التعليمات "كثيفة" للغاية، أي أن أي تسلسل عشوائي من البايتات يُحتمل أن يكون قابلاً للتفسير كمجموعة صالحة من تعليمات x86.

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

تم تطوير أداة آلية للمساعدة في أتمتة عملية تحديد مواقع الأدوات وبناء هجوم ضد ملف تنفيذي. [ 12 ] هذه الأداة، المعروفة باسم ROPgadget، تبحث في الملف التنفيذي عن أدوات مفيدة محتملة، وتحاول تجميعها في حمولة هجومية تُنشئ واجهة سطر أوامر لقبول أوامر عشوائية من المهاجم.

حول عشوائية تخطيط مساحة العناوين

يُعاني نظام عشوائية تخطيط مساحة العناوين من ثغرات أمنية. فبحسب ورقة بحثية لشاشام وآخرون [ 13 فإنّ نظام ASLR على معمارية 32 بت محدود بعدد البتات المتاحة لعشوائية العناوين. إذ لا يتوفر سوى 16 بتًا من أصل 32 بتًا للعناوين، ويمكن اختراق هذه البتات الـ 16 بهجوم القوة الغاشمة في غضون دقائق. أما معمارية 64 بت فهي أكثر متانة، حيث يتوفر 40 بتًا من أصل 64 بتًا للعشوائية. صحيحٌ أنّه من الممكن شنّ هجوم القوة الغاشمة على عشوائية 40 بتًا، إلا أنّه من غير المرجّح أن يمرّ دون اكتشاف. إضافةً إلى هجمات القوة الغاشمة، توجد تقنيات أخرى لإزالة العشوائية .

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

بدون استخدام تعليمات الإرجاع

بحسب ورقة بحثية لـ Checkoway وآخرون [ 15 ] ، يُمكن تنفيذ البرمجة الموجهة نحو العودة على معماريتي x86 وARM دون استخدام تعليمة العودة (0xC3 على x86). بدلاً من ذلك، استخدموا تسلسلات تعليمات مُصممة بعناية موجودة مسبقًا في ذاكرة الجهاز لتؤدي وظيفة تعليمة العودة. لتعليمة العودة تأثيران: أولاً، تقرأ القيمة المكونة من أربعة بايتات في أعلى المكدس، وتُعيّن مؤشر التعليمات إلى تلك القيمة، وثانيًا، تزيد قيمة مؤشر المكدس بمقدار أربعة (وهو ما يُعادل عملية سحب عنصر). في معمارية x86، يُمكن لتسلسلات تعليمات القفز والسحب أن تعمل كتعليمة عودة. أما في معمارية ARM، فيُمكن لتسلسلات تعليمات التحميل والتفرع أن تعمل كتعليمة عودة.

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

الدفاعات

خالٍ من الغلوتين

طُوِّرت تقنية G-Free بواسطة كان أونارلي أوغلو، وليلى بيلج، وأندريا لانزي، ودافيد بالزاروتي، وإنجين كيردا. وهي حل عملي ضد أي شكل من أشكال البرمجة الموجهة نحو العودة. يعمل هذا الحل على إزالة جميع تعليمات التفرع الحر غير المتوافقة (مثل تعليمات RET أو CALL التي يمكن للمهاجمين استخدامها لتغيير مسار التحكم ) داخل الملف التنفيذي الثنائي، ويحمي تعليمات التفرع الحر من استخدامها من قِبل المهاجم. تشبه طريقة حماية G-Free لعنوان العودة طريقة XOR canary المُطبَّقة في StackGuard. علاوة على ذلك، تتحقق من صحة استدعاءات الدوال عن طريق إضافة كتلة تحقق. إذا لم يتم العثور على النتيجة المتوقعة، تتسبب G-Free في تعطل التطبيق. [ 16 ]

عشوائية تخطيط مساحة العناوين

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

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

يتمثل نهج آخر، تتبناه شركة kBouncer، في تعديل نظام التشغيل للتحقق من أن تعليمات الإرجاع تُعيد توجيه مسار التحكم إلى الموقع الذي يلي مباشرةً تعليمة الاستدعاء. يمنع هذا النهج تسلسل الأدوات، ولكنه غير فعال ضد هجمات البرمجة الموجهة نحو القفز التي تُغير القفزات وتعليمات تعديل مسار التحكم الأخرى بدلاً من تعليمات الإرجاع. [ 21 ]

عشوائية الشفرة الثنائية

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

متجر

الحماية من الكتابة فوق معالج الاستثناءات المهيكلة هي ميزة في نظام التشغيل Windows تحمي من أكثر هجمات تجاوز سعة المكدس شيوعًا، وخاصة الهجمات على معالج الاستثناءات المهيكلة.

ضد هجمات التحكم في التدفق

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

ضد برامج التجسس الموجهة نحو العودة

في عام ٢٠١٠، اقترح جينكو لي وآخرون [ ٢٤ ] أن مُصرّفًا مُعدَّلًا بشكل مناسب يمكنه التخلص من "الأدوات" الموجهة نحو العودة عن طريق استبدال كل منها بتسلسل التعليمات ، وكل منها بتسلسل التعليمات ، حيث يُمثل جدولًا ثابتًا لجميع عناوين العودة "المشروعة" في البرنامج، ويمثل فهرسًا مُحددًا في ذلك الجدول. [ ٢٤ ] : ٥-٦. يمنع هذا إنشاء أداة موجهة نحو العودة تعود مباشرةً من نهاية دالة إلى عنوان عشوائي في منتصف دالة أخرى؛ فبدلًا من ذلك، لا يمكن للأدوات العودة إلا إلى عناوين العودة "المشروعة"، مما يزيد بشكل كبير من صعوبة إنشاء أدوات مفيدة. ادعى لي وآخرون أن "تقنية التوجيه غير المباشر للعودة التي نقدمها تُعيد برمجة التوجيه نحو العودة إلى النمط القديم للعودة إلى مكتبة libc". [ 24 ] تضمن المترجم الخاص بإثبات المفهوم مرحلة تحسين ثقب النظر للتعامل مع "تعليمات الآلة التي تحتوي على رمز العملية المرجعي في رموز العمليات أو المعاملات المباشرة الخاصة بها"، [ 24 ] مثل .callfpushl$index; jmpfretpopl%reg; jmptable(%reg)tableindexmovl$0xC3,%eax

رموز مصادقة المؤشر (PAC)

يقدم تصميم ARMv8.3-A ميزة جديدة على مستوى الأجهزة تستفيد من البتات غير المستخدمة في مساحة عنوان المؤشر لتوقيع عناوين المؤشر بشكل مشفر باستخدام تشفير كتلة قابل للتعديل مصمم خصيصًا [ 25 ] [ 26 ] والذي يوقع القيمة المطلوبة (عادةً عنوان الإرجاع) جنبًا إلى جنب مع قيمة "السياق المحلي" (مثل مؤشر المكدس).

قبل تنفيذ عملية حساسة (أي العودة إلى المؤشر المحفوظ) يمكن التحقق من التوقيع لاكتشاف التلاعب أو الاستخدام في سياق غير صحيح (على سبيل المثال، الاستفادة من عنوان إرجاع محفوظ من سياق استغلال الترامبولين).

تم تحديث معالجات Apple Silicon منذ الإصدار A12 إلى ARMv8.3 وتستخدم وحدات PAC. حصل نظام Linux على دعم لمصادقة المؤشر داخل النواة في الإصدار 5.7 الذي صدر عام 2020؛ وأضيف دعم تطبيقات مساحة المستخدم في عام 2018. [ 27 ]

في عام 2022، نشر باحثون في معهد ماساتشوستس للتكنولوجيا هجومًا جانبيًا ضد أنظمة التحكم الآلي للشبكات (PACs) أطلق عليه اسم PACMAN . [ 28 ]

تحديد أهداف الفروع (BTI)

أدخلت معمارية ARMv8.5-A ميزات على مستوى العتاد لتحديد الأهداف الصحيحة لتعليمات التفرع بشكل صريح. يُدرج المُصرّف تعليمة خاصة، تُسمى "BTI"، عند كل نقطة وصول متوقعة لتعليمات التفرع غير المباشر . تشمل وجهات التفرع المُحددة عادةً نقاط دخول الدوال وكتل التعليمات البرمجية الخاصة بالتبديل/الحالة.

تُستخدم تعليمات BTI في صفحات ذاكرة التعليمات البرمجية التي يُحددها المُترجم والمُربط على أنها "محمية". أي تعليمة تفرع غير مباشر تصل إلى صفحة محمية، عند أي تعليمة أخرى غير BTI، تُؤدي إلى حدوث خطأ.

تمثل الوجهات المحددة التي يتم فيها إدراج تعليمة BTI ما يقارب 1% من جميع التعليمات في متوسط ​​كود التطبيق. لذلك، فإن استخدام BTI يزيد حجم الكود بنفس المقدار. [ 29 ]

توجد الأدوات المستخدمة في هجوم ROP في أي مكان ضمن كود التطبيق. لذا، في المتوسط، تبدأ 99% من هذه الأدوات بتعليمات ليست BTI. ويؤدي التفرع إلى هذه الأدوات إلى حدوث خطأ. ونظرًا لأن هجوم ROP يتكون من سلسلة من الأدوات المتعددة، فإن احتمال أن تكون جميع الأدوات في السلسلة ضمن نسبة الـ 1% التي تبدأ بتعليمات BTI ضئيل للغاية.

تُعدّ كلٌّ من PAC وBTI آليتين متكاملتين لمنع حقن التعليمات البرمجية الخبيثة باستخدام هجمات البرمجة الموجهة نحو العودة والقفز. فبينما يركز PAC على مصدر عملية التفرع (مؤشر مُوقّع)، يركز BTI على وجهة التفرع. [ 30 ]

انظر أيضاً

ملحوظات

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

مراجع

  1. فاسكيز، هوغو (1 أكتوبر 2007). "اختراق منصة Check Point الآمنة" (ملف PDF) . اختبار الاختراق . برشلونة، إسبانيا: Pentest Consultores. ص  219.
  2. "موضوع: تجاوزات متعددة في المخزن المؤقت لمنصة CheckPoint الآمنة" . مجموعة مستخدمي Check Point . مؤرشف من الأصل بتاريخ 30-09-2019.
  3. شاشام، هوفاف؛ بوكانان، إريك؛ رومر، رايان؛ سافاج، ستيفان. "البرمجة الموجهة نحو العودة: استغلال الثغرات دون حقن التعليمات البرمجية" . تم الاسترجاع في 12 أغسطس 2009 .
  4. بوكانان، إي.؛ رومر، ر.؛ شاشام، هـ.؛ سافاج، س. (أكتوبر 2008). "عندما تتحول التعليمات الجيدة إلى سيئة: تعميم البرمجة الموجهة نحو العودة إلى RISC" (ملف PDF) . وقائع المؤتمر الخامس عشر لجمعية ACM حول أمن الحاسوب والاتصالات - CCS '08 . الصفحات 27-38 . doi : 10.1145/1455770.1455776 . ISBN  978-1-59593-810-7. S2CID 11176570 . 
  5. منع تنفيذ البيانات في نظام التشغيل Microsoft Windows XP SP2
  6. برنامج Solar Designer، ثغرات العودة إلى المكتبة (ج) ، Bugtraq
  7. نيرغال، فراك 58 المادة 4، استغلالات العودة إلى المكتبة (ج)
  8. سيباستيان كراهمر، استغلال ثغرات تجاوز سعة المخزن المؤقت في معمارية x86-64 وتقنية استغلال أجزاء التعليمات البرمجية المستعارة ، 28 سبتمبر 2005
  9. عبادي، م.ن.؛ بوديو، م.؛ إرلينغسون، أ.؛ ليغاتي، ج. (نوفمبر 2005). "سلامة تدفق التحكم: المبادئ والتطبيقات". وقائع المؤتمر الثاني عشر لجمعية الحوسبة الآلية (ACM) حول أمن الحاسوب والاتصالات - CCS '05 . الصفحات 340-353 . doi : 10.1145/1102120.1102165 . ISBN  1-59593-226-7. S2CID 3339874 . 
  10. عبادي، م.ن.؛ بوديو، م.؛ إرلينغسون، أ.؛ ليغاتي، ج. (أكتوبر 2009). "مبادئ سلامة تدفق التحكم، وتطبيقاتها، ومجالات عملها". معاملات ACM في أمن المعلومات والأنظمة . 13 : 1-40 . doi : 10.1145/1609956.1609960 . S2CID 207175177 . 
  11. 1 2 3 شاشام، هـ. (أكتوبر 2007). "هندسة اللحم البريء على العظم: العودة إلى مكتبة libc بدون استدعاءات دوال (على معالج x86)". وقائع المؤتمر الرابع عشر لجمعية ACM حول أمن الحاسوب والاتصالات - CCS '07 . الصفحات 552-561 . doi : 10.1145/1315245.1315313 . ISBN  978-1-59593-703-2. S2CID 11639591 . 
  12. جوناثان سالوان وآلان ويرث، ROPgadget - أداة البحث عن الأدوات وأداة التثبيت التلقائي
  13. [شاشام وآخرون، 2004] هوفاف شاشام، ماثيو بيج، بن بفاف، يو-جين جوه، ناجيندرا مودادوجو، ودان بونيه. حول فعالية عشوائية مساحة العناوين. في وقائع المؤتمر الحادي عشر لجمعية الحوسبة الآلية (ACM) حول أمن الحاسوب والاتصالات (CCS)، 2004.
  14. [بينيت وآخرون، 2013] جيمس بينيت، ييتشونغ لين، وتوفيق حق. رقم الوحش، 2013. https://www.fireeye.com/blog/threat-research/2013/02/the-number-of-the-beast.html مؤرشف بتاريخ 22 فبراير 2017 في أرشيف الإنترنت
  15. تشيكواي، إس.، دافي، إل.، ديميتريينكو، أ.، صادقي، أ.-ر.، شاشام، هـ.، ويناندي، م. 2010. البرمجة الموجهة نحو الإرجاع بدون إرجاع. في وقائع مؤتمر CCS 2010، تحرير أ. كيروميتيس وف. شماتيكوف. مطبعة ACM ، 559-572
  16. أونارلي أوغلو، ك.، بيلج، ل.، لانزي، أ.، بالزاروتي، د.، كيردا، إ. 2010. G-Free: التغلب على البرمجة الموجهة نحو العودة من خلال الملفات الثنائية الخالية من الأدوات. في وقائع مؤتمر ACSAC 2010، تحرير م. فرانز وج. مكدرموت. مطبعة ACM ، 49-58.
  17. سكويرا، ر.؛ كاستيل، ك.؛ أوخرافي، هـ.؛ زيلدوفيتش، ن.؛ ستريلين، و. (أكتوبر 2013). "تحليل منهجي للدفاعات ضد البرمجة الموجهة نحو العودة" (ملف PDF) . بحوث في الهجمات والاختراقات والدفاعات . سلسلة محاضرات في علوم الحاسوب. المجلد 8145. الصفحات 82-102 . doi : 10.1007/978-3-642-41284-4_5 . ISBN   978-3-642-41283-7تمت أرشفة النسخة الأصلية (PDF) بتاريخ 22-02-2014.
  18. فينكات، أشيش؛ شاماسوندر، سريسكاندا؛ شاشام، هوفاف؛ تولسن، دين م. (2016-01-01). "HIPStR". وقائع المؤتمر الدولي الحادي والعشرين حول الدعم المعماري للغات البرمجة وأنظمة التشغيل . ASPLOS '16. نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 727-741 . doi : 10.1145/2872362.2872408 . ISBN  9781450340915. S2CID 7853786 . 
  19. هيسر، ج.؛ نغوين-تونغ، أ.؛ كو، م.؛ هول، م.؛ ديفيدسون، ج. و. (مايو 2012). "ILR: أين ذهبت أجهزتي؟". ندوة IEEE للأمن والخصوصية لعام 2012. الصفحات 571-585 . doi : 10.1109/SP.2012.39 . ISBN  978-1-4673-1244-8. S2CID 15696223 . 
  20. US 9135435 ، فينكات، أشيش؛ كريشناسوامي، أرفيند ويامادا ، كويتشي وآخرون، "نقل حالة البرنامج المدفوع بالمترجم الثنائي"، نُشر في 2015-09-15، مُخصص لشركة إنتل. 
  21. فاسيليس باباس. kBouncer: تخفيف فعال وشفاف لمرض اعتلال الشبكية الخداجي . أبريل 2012.
  22. ↑ طلب الولايات المتحدة 2019347385 ، شيلي، آصف، "أساليب وأنظمة الأمان عن طريق تغيير الكود"، نُشر في 2019-11-14 ، وتم التخلي عنه منذ ذلك الحين. 
  23. فرانسيون، أ.، بيريتو، د.، كاستيلوتشيا، س. 2009. حماية الأنظمة المدمجة من هجمات تدفق التحكم. في وقائع مؤتمر SecuCode 2009، تحرير س. لاكموند وس. شيفر. مطبعة ACM ، 19-26.
  24. 1 2 3 4 لي، جينكو؛ وانغ، تشي؛ جيانغ، شوشيان؛ غريس، مايك؛ بهرام، سينا. التغلب على برامج التجسس الجذرية الموجهة نحو العودة باستخدام نواة "بدون عودة". في وقائع مؤتمر EuroSys 2010 ، تحرير جي. مولر. مطبعة ACM ، 195-208.
  25. أفانزي، روبرتو (2016). عائلة تشفير الكتلة QARMA (ملف PDF) . معاملات IACR في علم التشفير المتناظر (ToSC) . المجلد 17 (نُشر في 8 مارس 2017). الصفحات 4-44 . doi : 10.13154/tosc.v2017.i1.4-44 . مؤرشف من النسخة الأصلية (ملف PDF) في 13 مايو 2020.  
  26. أمن منتجات كوالكوم. "مصادقة المؤشر على ARMv8.3" (ملف PDF) . شركة كوالكوم تكنولوجيز. مؤرشف (ملف PDF) من الأصل بتاريخ 2020-06-06 . تم الاطلاع عليه بتاريخ 2020-06-16 . وبناءً على ذلك، قمنا بتصميم QARMA، وهي عائلة جديدة من خوارزميات التشفير الكتلية الخفيفة والقابلة للتعديل.
  27. "لينكس 5.7 لمعالجات ARM 64 بت يُضيف ميزة مصادقة المؤشر داخل النواة، ومراقبات النشاط - فورونيكس" . www.phoronix.com . تاريخ الاطلاع: 31 مارس 2020 .
  28. رافيشاندرا، جوزيف؛ نا، وون تايك؛ لانغ، جاي؛ يان، مينغجيا (يونيو 2022). "باكمان: مهاجمة مصادقة مؤشر ARM بالتنفيذ التخميني". وقائع الندوة الدولية السنوية التاسعة والأربعين حول هندسة الحاسوب . رابطة آلات الحوسبة. doi : 10.1145/3470496.3527429 . hdl : 1721.1/146470 .
  29. "تطبيق تقنيات PAC وBTI على كود حقيقي" . developer.arm.com . تم الاطلاع عليه بتاريخ 4 فبراير 2024 .
  30. "سلامة تدفق التحكم، الحماية النشطة من البرامج الضارة على أنظمة Arm64" (ملف PDF) . sipearl.com . تاريخ الاسترجاع: 4 فبراير 2024 .
  31. تشا، سانغ كيل؛ باك، برايان؛ بروملي، ديفيد ؛ ليبتون، ريتشارد جاي (8 أكتوبر 2010) [4 أكتوبر 2010]. برامج مستقلة عن المنصة (ملف PDF) . وقائع المؤتمر السابع عشر لجمعية ACM حول أمن الحاسوب والاتصالات (CCS'10). شيكاغو، إلينوي، الولايات المتحدة الأمريكية: جامعة كارنيجي ميلون ، بيتسبرغ، بنسلفانيا، الولايات المتحدة الأمريكية / معهد جورجيا للتكنولوجيا ، أتلانتا، جورجيا، الولايات المتحدة الأمريكية. الصفحات 547-558 . doi : 10.1145/1866307.1866369 . ISBN  978-1-4503-0244-9تمت أرشفة الملف (PDF) من النسخة الأصلية بتاريخ 26-05-2022 . تم الاطلاع عليه بتاريخ 26-05-2022 .(12 صفحة) (انظر أيضًا:) (ملاحظة: يستخدم مصطلح "الأداة" للإشارة إلى أجزاء من منطق البرنامج، وفي هذه الحالة يتم تقسيمها إلى رأس الأداة وجسم الأداة .)