فحص التلوث
يُعدّ فحص التلوث ميزةً في بعض لغات البرمجة ، مثل بيرل [ 1 ] وروبي [ 2 ] وباليرينا [ 3 ]، وهي مصممة لتعزيز الأمان بمنع المستخدمين ذوي النوايا الخبيثة من تنفيذ أوامر على جهاز الكمبيوتر المضيف. ويُسلّط فحص التلوث الضوء على مخاطر أمنية محددة ، ترتبط أساسًا بمواقع الويب التي تُهاجم باستخدام تقنيات مثل حقن SQL أو هجمات تجاوز سعة المخزن المؤقت .
ملخص
تقوم فكرة فحص التلوث على أن أي متغير يمكن تعديله من قِبل مستخدم خارجي (مثل متغير مُحدد بواسطة حقل في نموذج ويب ) يُشكل خطرًا أمنيًا محتملاً. إذا استُخدم هذا المتغير في تعبير يُحدد متغيرًا ثانيًا، يصبح هذا المتغير الثاني مشبوهًا أيضًا. يمكن لأداة فحص التلوث حينها فحص المتغيرات واحدًا تلو الآخر، مُشكلةً قائمة بالمتغيرات التي قد تتأثر بمدخلات خارجية. إذا استُخدم أي من هذه المتغيرات لتنفيذ أوامر خطيرة (مثل أوامر مباشرة إلى قاعدة بيانات SQL أو نظام تشغيل الحاسوب المضيف )، يُحذر مدقق التلوث من أن البرنامج يستخدم متغيرًا مُلوثًا قد يكون خطيرًا. عندها، يُمكن لمبرمج الحاسوب إعادة تصميم البرنامج لإنشاء جدار حماية حول المدخلات الخطيرة.
يمكن اعتبار فحص التلوث تقريبًا متحفظًا للتحقق الكامل من عدم التدخل أو المفهوم الأعم لتدفق المعلومات الآمن . [ 4 ] ولأن تدفق المعلومات في نظام ما لا يمكن التحقق منه بفحص مسار تنفيذ واحد لهذا النظام، [ 5 ] فإن نتائج تحليل التلوث ستعكس بالضرورة معلومات تقريبية حول خصائص تدفق المعلومات في النظام الذي يُطبق عليه. [ 6 ]
مثال
يُتيح كود Perl الخطير التالي ثغرة أمنية كبيرة في حقن SQL من خلال عدم التحقق من قيمة المتغير $name:
#!/usr/bin/env perl my $name = $cgi- > param ( "name" ); # استخراج الاسم من المتصفح ... $dbh -> { TaintIn } = 1 ; $dbh- > execute ( "SELECT * FROM users WHERE name = '$name';" ); # تنفيذ استعلام SQLفي حال تفعيل خاصية التحقق من التلوث، سيرفض بيرل تنفيذ الأمر وسيُنهي العملية برسالة خطأ، وذلك لاستخدام متغير مُلوَّث في استعلام SQL. بدون التحقق من التلوث، يُمكن للمستخدم إدخال قيمة فارغة foo'; DROP TABLE users --، مما يُؤدي إلى تنفيذ أمر يحذف جدول قاعدة البيانات بالكامل. الحل الأكثر أمانًا هو ترميز القيمة الملوثة لـ $name إلى سلسلة نصية SQL حرفية واستخدام النتيجة في استعلام SQL، مما يضمن عدم $nameتنفيذ أي أمر خطير مُضمَّن في المتغير. هناك طريقة أخرى لتحقيق ذلك وهي استخدام عبارة مُجهَّزة لتنظيف جميع مُدخلات المتغيرات للاستعلام.
تجدر الإشارة إلى أن Perl DBI يتطلب تعيين TaintInسمة لمقبض قاعدة البيانات بالإضافة إلى تمكين وضع التلوث للتحقق من سلاسل SQL الخاصة بك. [ 7 ]
تاريخ
دعمت لغة بيرل خاصية التلوين في البرامج النصية setuid من الإصدار 3.0 على الأقل (الذي صدر في عام 1989)، [ 8 ] على الرغم من أنه لم يتم إدخال المفتاح [1] الذي يدمج التلوين في وقت تشغيل واحد إلا في الإصدار 5.0 (الذي صدر في عام 1994) [ 8 ] .-T
في عام 1996، طبّقت نتسكيب خاصية تعديل البيانات في جافا سكريبت ضمن متصفح نتسكيب نافيجاتور 3. [ 9 ] ومع ذلك، ولأن الدعم كان يُعتبر تجريبيًا، فقد تم إصداره معطلاً (مما يتطلب تدخل المستخدم لتفعيله) واضطر مصممو الصفحات إلى تعديل البرامج النصية للاستفادة منه. ولم تُطبّق شركات المتصفحات الأخرى هذه الخاصية قط.
مراجع
- 1 2 "perlsec - أمان لغة بيرل" . فريق تطوير بيرل 5. تم الاطلاع عليه بتاريخ 20-05-2012 .
- ↑ برمجة روبي --- دليل المبرمج العملي . أديسون ويسلي لونجمان. 2001. ص 253 (الفصل 20).
- ↑ شركة WSO2. "Ballerina - فحص التلوث" . ballerina.io . تم الاسترجاع في 15 فبراير 2022 .
{{cite web}}:|last=له اسم عام ( مساعدة ) CS1 صيانة: أسماء رقمية: قائمة المؤلفين ( رابط ) - ↑ أ. سابيلفيلد و أ. س. مايرز، "أمن تدفق المعلومات القائم على اللغة"، مجلة IEEE للمجالات المختارة في الاتصالات ، 2003.
- ↑ ج. ليغاتي، ل. باور، د. ووكر. "أتمتة التحرير: آليات تطبيق سياسات الأمان أثناء التشغيل". المجلة الدولية لأمن المعلومات ، 2005
- ↑ ت. تيراوتشي وأ. أيكن. "تدفق المعلومات الآمن كمشكلة أمنية". في الندوة الدولية الثانية عشرة للتحليل الثابت ، سبتمبر 2005.
- ↑ "DBI - واجهة مستقلة عن قاعدة البيانات للغة بيرل" . تم الاطلاع عليه بتاريخ 29-08-2020 .
- 1 2 "perlhist - سجلات تاريخ لغة بيرل" . فريق تطوير بيرل 5. تم الاطلاع عليه بتاريخ 29 أغسطس 2020 .
- ^ فلاناغان ، ديفيد (1997). جافا سكريبت: الدليل النهائي ( الطبعة الثانية). أورايلي وشركاه. ص. 321. ردمك 9781565922341[
...] يُعدّ نموذج الأمان الذي يُلوّث البيانات تجريبيًا في Navigator 3.0، وهو غير مُفعّل افتراضيًا. ومع ذلك، من المتوقع أن يكون نموذج الأمان الافتراضي في الإصدار 4.0 من Navigator.
روابط خارجية
- إرشادات من اتحاد شبكة الويب العالمية (W3C) بشأن فحص تلوث نصوص CGI
- perlsec - وثائق أمان لغة بيرل
- تحليل البرامج الثابتة
- برمجة الحاسوب
