تعد وظائف برامج CGI قوية، ولكن لهذا السبب على وجه التحديد، إذا كنت، كمطور CGI أو مسؤول نظام، لا تهتم بكتابة برامج CGI وإعدادها، فسيكون نظامك مليئًا بالثغرات. تتناول هذه المقالة المشكلات الأمنية الخاصة بـ CGI.
3. سلامة CGI
إن وظيفة برنامج CGI قوية، فهي لا تتمتع بوظائف البرامج العادية فحسب، بل يمكنها أيضًا نشر نتائج البرنامج على الويب. ولكن على وجه التحديد نظرًا لأن وظائف برامج CGI قوية جدًا، إذا كنت، كمطور CGI أو مسؤول نظام، لا تهتم بكتابة برامج CGI وإعدادها، فسيكون نظامك مليئًا بالثغرات، مما يسمح لبعض المستخدمين غير القانونيين بالاستفادة منها. منهم.
الأمان المذكور هنا ليس ناتجًا عن مواصفات CGI، ولكنه ناتج عن برمجة وإعدادات نظام غير صحيحة. تسمح مواصفات CGI للمستخدمين بالاستفادة من قوة الحوسبة للخادم. فالحسابات غير الصحيحة على الخادم هي التي تؤدي إلى ثغرات أمنية في النظام. سأقدم أدناه ثغرة أمنية لـ CGI في أنظمة UNIX. هذه الثغرة الأمنية شائعة جدًا.
#!/usr/local/bin/perl
#formmail.cgi
تتطلب "cgi.pl"؛
# قم بتشغيل تطبيق البريد الإلكتروني "/bin/mail" برأس الموضوع: من حقل "اسم النموذج".
open (MAIL, "|/bin/mail -s '".$input{"formname"}."' webweave");
# أضف حقل إرسال "محتوى النموذج" ليكون نص الرسالة
بريد الطباعة $input{"formcontents"};
إغلاق (البريد)؛
خروج (0)؛
في هذا المثال، يرسل برنامج CGI معلومات النموذج إلى /bin/mail ويرسلها إلى خادم webveave. في معظم الحالات، يمكن لبرنامج CGI إكمال المهمة بشكل طبيعي، لكن برنامج CGI هذا لا يقوم بتصفية المعلومات التي أدخلها المستخدم في نموذج الويب، وبالتالي يترك مخاطر أمنية. عندما يقوم المستخدمون أو الأشخاص الذين لديهم دوافع خفية بإدخال بيانات غير صحيحة، فقد يتسبب ذلك في حدوث أخطاء في النظام أو الحصول على أذونات غير ضرورية.
على سبيل المثال، يقوم المستخدم بملء المحتوى التالي في "اسم النموذج" الخاص بنموذج الويب:
"ls /etc/passwd '[email protected] #'
سيتم عرض محتوى /etc/passwd في متصفح الويب الخاص بالمستخدم. إذا كان ملف passwd لنظام UNIX هذا لا يحتوي على ظل، فيمكن للمستخدم استخدام هذا المحتوى لمحاولة كسر كلمة المرور باستخدام Crack Jack أو Crack John!
كما ذكرنا سابقًا، فإن أمان CGI هو مسؤولية كل من المبرمجين ومسؤولي النظام. الآن سأتحدث عن الأشياء التي يجب على كل منهما الانتباه إليها:
وظيفة مسؤول النظام:
1. التعاون مع المبرمجين لمشاركة المعلومات حول أمان الخادم، والتحقق من رموز بعضهم البعض في نفس الوقت، واكتشاف المشكلات الأمنية في التعليمات البرمجية في الوقت المناسب.
2. استخدم برنامج خادم جيدًا وانتقل غالبًا إلى موقع الويب الخاص ببرنامج الخادم للتعرف على أحدث المعلومات.
3. قم بتقييد مستخدمي الخادم بمضيفي شبكة محددين، واستخدم وظيفة إدارة أمان الخادم، وضبط التحكم في الوصول إلى التوجيه، وما إلى ذلك.
4. تقييد وظائف CGI، وتقييد بعض الخدمات المتقدمة للمستخدمين الموثوق بهم، وقصر استخدام برامج CGI المختبرة على المطورين، وتوفير برامج CGI المختبرة فقط للمستخدمين.
5. عند استخدام برامج CGI الخاصة بأشخاص آخرين، تحقق بعناية من الكود.
6. قصر استخدام برامج CGI على بيئة محمية، وقم بتعيين الخادم على وصول مستخدم غير متميز، وقم بإعداد حساب أو مجموعة قيد التشغيل خصيصًا لبرامج CGI.
7. قم بإعداد الخادم الذي يقوم بتشغيل برنامج CGI خارج جدار الحماية تجدر الإشارة إلى أنه يجب إعداد الخادم الذي يقوم بتشغيل برنامج CGI خارج جدار الحماية، بمجرد اكتشاف المستخدمين غير القانونيين للثغرة الأمنية خادم برنامج CGI، سوف تتمكن من التحكم في جميع المضيفين داخل جدار الحماية!
8. قم بتقليل أولوية تشغيل برامج CGI لمنع المستخدمين من تشغيل عدد كبير من برامج CGI بشكل ضار مما يتسبب في زيادة التحميل على الخادم.
9. اشترك في رسائل البريد الإلكتروني حول أمان الشبكة وشارك في مجموعات أخبار أمان الشبكة.
وظائف مبرمج CGI:
1. التعاون مع مسؤول النظام لفهم المعلومات الأمنية للنظام والتحقق من رموز بعضهم البعض.
2. استخدام برامج المكتبة الموثوقة والتحقق من الكود المصدري لبرامج المكتبة.
3. احصل على اسم العميل من REMOTE_HOST وقصر بعض الوظائف المتقدمة على العملاء الموثوقين.
4. إذا كان خادم الويب يوفر تأكيدًا لكلمة مرور HTTP، فاستخدم كلمة مرور HTTP لتقييد الوصول.
5. تصفية مدخلات المستخدم وإزالة بيانات الإدخال غير القانونية.
6. حدد حجم البيانات المدخلة لمنع المستخدمين الضارين من التحميل الزائد على الخادم عن طريق إدخال كميات كبيرة من البيانات.
7. تجنب تمرير بيانات المستخدم إلى تطبيقات أخرى لمنع المستخدمين من استدعاء مترجم الأوامر أو استغلال الثغرات الأمنية في التطبيقات الأخرى.
8. عندما تكتشف ثغرة أمنية في أحد برامج CGI، لا تخبر أحداً، ناهيك عن ترك تعليقات في البرنامج، ما يجب عليك فعله هو تصحيح الثغرة الأمنية على الفور.
9. تعلم كيف تكون مهاجمًا واكتشف الثغرات الأمنية في برامج CGI.