تحديات أمنية خطيرة تواجه مطوري تطبيقات جافا وأوراكل فورم وغيرها

نشره مجتبى الحداد في

ربما صدق من قال بأن مطورى التطبيقات يهتمون لسرعة التطبيقات وكفائتها الوظيفية لكن لايلقون بالاً البتّه لأمن التطبيق !!!!

وربما اذا قمت بسؤال مطور تطبيقات بأنك كيف تحمى تطبيقك تجده وبثقة يقول بأنك لاتستطيع الدخول الى تطبيقه دون إسم مستخدم وكلمة مرور !!! اخذين فى الاعتبار بأن أمن التطبيق مختزل فقط فى عملية ال Authentication اى تفاصيل الدخول وناسين تماماً بأن أمن التطبيق ربما يكون مشروعاً فى حد ذاته ناسيا تماماً ان عملية إختراق التطبيقات لاتتم عادة عن طريق سرقة تفاصيل الدخول فقط , فبعض الطرق التى يمكن عن طريقها الوصول لبيانات تطبيق هى:

1- استخدام طرق ال sql injection عن طريق تمرير أكواد برمجية بعنوان التطبيق وطبعا اقصد هنا تطبيقات الويب او التى تعمل على مستعرض انترنت حتى لو كانت داخل مؤسسة وليست فعليا على الأنترنت.
2- الوصول لفهرس التطبيق على نظام التشغيل !؟؟ وهذا يفتح الباب على مصراعيه لكل الاليات المتاحة لأختراق انظمة التشغيل والتى يتركز اهمها فى اهمال عمليات التحديث المستمر لنظام التشغيل والذى يخلف ثغرات يمكن عن طريقا الحصول على صلاحيات على النظام نفسه .
3- تمرير كود عن طريق مستخدم ذو صلاحيات متوسطة للحصول على صلاحيات أعلى وهو ايضا من انواع ال Sql injection لكن ربما تعتمد على لغات اخرى .
4- إستغلال الثغرات المكتشفة فى التطبيق نفسه , مثل عدم اهتمام المبرمج بالتأمين الكافى لكل الملفات التى يحتاجها التطبيق ليعمل.
5- استخدام تطبيقات اخرى مكسورة او غير مسجلة رسميا على نفس الجهاز الذى يعمل عليه التطبيق المقصود والتى يمكن عن طريقها الحصول على صلاحيات التحكم فى الجهاز او الحصول على كلمات المرور للتطبيقات الاخرى عن طريق  keylogger .
6- اخيرا النقطة التى تهمنا هى عدم عمل تحديث لبيئة تشغيل التطبيق نفسه !!!! ولاأقصد هنا نظام التشغيل بل ال Runtime الخاصة بالتطبيق وسأركز هنا على الجافا ..

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

فالجافا كما يعلم الجميع احد  أقوى اللغات وأكثرها كفاءة وبنيت عليها معظم التطبيقات الناجحة فيكفى أن أكبر شركة قواعد بيانات تبنى معظم تطبيقاتها على لغة الجافا امثال أوراكل Forms أوراكل ADF أوراكل Weblogic وتفرعاتها امثال تطبيقات ERP  وغيرها من التطبيقات الضخمة التى لاتتبع لشركة أوراكل , وكلنا يعلم ان شركة اوراكل اصبحت هى صاحبة الجافا على الرغم من مجانية الجافا بعد إستحواذها على شركة Sun micro system , المهم  وكما تعلمون فأنه عند استعمال اى تطبيق مبنى على الجافا ولتشغيل هذه التطبيق على اى جهاز يجب تثبيت مشغل الجافا أولا ونطلق عليه هنا Java Runtime Environment وهو غير بيئة تطوير الجافا والمسماه Java Development Kit او احيان Software Development Kit  فالمذكور اولا هى البيئة التى نحتاجها لتشغيل تطبيقات الجافا الجاهزة مثل الألعاب او تطبيقات قواعد البيانات أو غيرها ونطلق عليها JRE اما الأخريتان فنحتاجهما لأنشاء تطبيقات الجافا وكتابة شفرات الجافا وتختصران ك JDK او  SDK

تلقائياً تحتوى ال JDK على jre لأن الاخيرة بيئة تشغيل , اما على الجهاز المراد فقط تشغيل التطبيق عليه فنحتاج الى هذه ال jre او كما تعرف احيانا عند البعض ب Java Virtual Machine وهى الالية التى تنفذ التعليمات الموجوده بملف الجافا والذى ربما يكون عباره عن ملف Class  او ملف jar يحتوى على عدة Classes .

عموما أود الإشارة هنا على انه لتشغيل البرنامج يجب وجود بيئة التشغيل والمتمثلة فى jre او jvm وهذه يتم اصدارها وتحديثها كل ساعه من قبل الشركة ولديها عدة اصدارات فمثلا تجد jre 1 و 2 و3 و4 و5 و6 و7 وتجدها على الشكل jre 1.5 او jre1.6  المهم يتم تحديث هذه المشغلات من الشركة باستمرار نسبة لوجود ثغرات يتم اكتشافها دوما واحيانا بعد صدور التطبيق بيوم واحد فقط او حتى خلال يوم صدور التطبيق ويسمى Zero day Exploit  ويجب على المستخدم  الذى يشغل اى نوع من تطبيقات الجافا حتى تلك التى تشتغل على مستعرضات الويب من عمل هذه التحديث على وجه السرعة حال صدوره , وعدم اجراء هذا التحديث يؤدى لمشكلات أمنية ومشكلات اخرى لاحصر لها .

انظر للرابط المرفق فقط لتعرف كم الثغرات الهائلة التى وجدت بالجافا بنفس يوم اصدارها :

ثغرات الجافا

تخيل مثلا انك قمت ببناء تطبيق يستخدم الاصدار jre 1.6.20 والرقم 20 هنا هو رقم التحديث وبعد شهر واحد من هذا التاريخ ستجد ان الأصدار الحالى لل jre  يحمل الرقم jre 1.6.29  فهذا الرقم فى الخانة الاخيره يخبرك بان البيئة التى يعتمد عليها تطبيقك يوجد بها ثغرات أمنية او غيرها ويجب عليك اغلاق هذه الثغرات بأقصى سرعة ممكنة خصوصا اذا علمنا ان الشركة حين تصدر التحديث فانها توضح لماذا اصدرتة والمشكلات الموجوده بالنسخة التى تحتاج لتحديث وبالتالى فانه يمكن لاى شخص معرفة الثغرات الموجوده بتطبيقك بغاية السهولة يكفى فقط ان يعرف الاصدار الذى تعمل عليه ويقوم بالدخول لموقع الشركة لمعرفة الثغرات الموجودة بهذا الأصدار الذى تعمل علية والتى تم اصدار تحديثات له وبعدها مباشرة يمكن ببساطة إستغلال الثغرات الموجوده والتى تم معرفتها بسهولة فى الوصول الى تطبيقك وإختراقه بسهولة !!!!!! نعم الموضوع بهذه البساطة , المشكلة ان مطورى التطبيقات يعتقدون بانه لاشان لهم بهذه الأمور فهى تخص مديرى الأنظمة System Administrator فقط وهذا حقيقة فهم خاطىء تماماً لان من يعرف مدى التوافق القائم بين التطبيق الذى قمت بإنشائه وبيئة التطبيق jre التى تعمل عليها هو مسئولية مطور التطبيق فى المرحلة الأولى , عليه فتجد معظم المؤسسات تستخدم تطبيقات مبنية على الجافا أمثال أوراكل فورم أوراكل ADF أو اى تطبيقات أخرى تعتمد الجافا غير شركة أوراكل وهى تعمل باصدارات قديمة جداً من  بيئات التشغيل Jre ولايعلمون مايمكن ان تسببه هذه التطبيقات القديمة على مؤسساتهم !! يكفى ان يعلمو بأن ثغرات البرنامج الذى يعملون عليه تم نشرها بالصحف والأنترنت واصبحت الدعوة مجانية لكل المخترقين  لتجربة اختراق هذه البرامج الغير محدثه !!!

ترى من المسئول حين حدوث مشكلات كهذه هل هو مدير المؤسسة ام مدير التطبيقات ام المطور ام مدير الأنظمة أم الكل !؟ لكن يظل المسئول الاول مطور التطبيق حسب رأيي ...