الجمعة، 13 ديسمبر 2013
13.12.13

ثغرة جديدة Fragment Injection ب Android | شرح مبادئ نظام Android


تم اكتشاف مؤخرا ثغرة بالأندرويد تطال الكثير من التطبيقات و من بينها Settings  - و المتوفر في كل أجهزة أندرويد مما يجعلها كلها دون استثناء معرضة للإستغلال بهذه الثغرة - , gmail , Google Now, DropBox  و EverNote . و بشكل عام كل التطبيقات التي تستعمل PreferenceActivityClass باستعمال Exported Activity  هي مصابة بهذه الثغرة . أما في ما يخص الباتش و إصلاح الثغرة فهو موجود ب Android KitKat .

و أنا من خلال شرح هذه الثغرة سأستغل الفرصة لشرح مبادئ الأندرويد , فاربطوا الأحزمة لننطلق بهذا العالم .

نبذة عن نظام التشغيل أندرويد :

أندرويد نظام تشغيل يستعمل اللينكس كنواة -Kernel-   له , والمسؤول عن هذا المشروع و تطويره هو Android Open Source Project او اختصارا AOSP  .


نظام Android يدعم Background Processing  -  المعالجات process تشتغل خلف الستار دون تدخل من المستعمل, مشابهة لأنظمة اشتغال الحواسيب – كما و يدعم 2-D  و 3-D  و كذلك من أبرز مميزات النظام ما يجعله متفوقا عن باقي أنظمة الأجهزة الذكية  كثافة و كثرة المكتبات أو User Interface Library .

و هذه بشكل مختصر هندسة النظام
Android Architecture
Android Architecture 
ما هو Google Play  :

جوجل وضعت سوقا مفتوحا لمبرمجي تطبيقات الأندرويد و للباحثين عن تطبيقات لهواتفهم و أجهزتهم الذكية , وهذا السوق هو Google Play  حيث يمكنك أن تشتري التطبيقات و في نفس الوقت أن تعرض تطبيقات من برمجتك الخاصة .
وكذلك يدعم خدمة التحديث , فبمجرد أن يقوم المبرمج بتحديث لتطبيقه تقوم google Play بإشعارك بتوفر التحديث .

مكونات واجهة المستخدم بنظام أندرويد :

Activity :

تمثل الجانب المرئي لتطبيقات الأندرويد , و طبعا أي تطبيق بالأندرويد من الممكن أن يحتوي علىActivity  متعددة .
Activities تستعمل Fragmentsلتكوين واجهة مستخدم للتواصل معه , أما fragments  فهو مشروح في الجزء التالي.

Fragments :

هي الأجزاء التي تكون ال Activity ,   تقوم بإخفاء كود التطبيق و هذا يسهل عملية إعادة الإستخدام و في نفس الوقت تدعم العديد من أحجام الأجهزة الذكية . 

Activity and Fragment
Activities And Fragments

نظام الحماية بأندرويد :

نظام التشغيل لأندرويد يقوم بتنصيب اي تطبيق و تعيين مستعمل و رقم ID group خاص للتطبيق, و ملفات التطبيق تكون ذات خصوصية مرتبطة بالمستعمل الذي تم تعيينه , و أي تطبيق اخر لا يمكنه الدخول لهذه الملفات و طبعا كل تطبيق يستعمل معالج Process خاص به.

هذا يدفع لاستنتاج أن كل تطبيق يكون معزول عن باقي التطبيقات الأخرى , و أي ملفات مشتركة بين تطبيقين يتم التصريح له من قبله عن طريق خدمة معينة.

بعد هذا التقديم المتواضع عن نظام التشغيل أندرويد , نعود للحديث عن الثغرة التي افتتحنا بها مقالنا و سأبدأ بشرح طريقة الهجوم باستخدام تطبيقات خبيثة أو ملغومة .

الهجوم باستخدام Malicious App :

بأندرويد , كما سبق الذكر بفقرة نظام الحماية , كل تطبيق يكون بمعزل عن باقي التطبيقات المشغلة بالنظام , و أي تطبيق لا يمكنه الدخول لملفات و بيانات التطبيقات الأخرى , لكن يظل ممكنا أن يقوم تطبيق باستدعاء مكونات تطبيق اخر .

أي Activity يمكن أن يستدعى من طرف تطبيق اخر , و تكوين Activity عمومي يؤدي الى إنشاء مكان فرعي SandBox. و المشكل يطرح عندما يقوم تطبيق على شكل فيروس باستدعاء Activity ويقوم بتزويده ببيانات خبيثة.

Attacking Shared Activities


الثغـــــــرة :

التطبيق الملغم يمكنه استدعاء أي PreferenceActivity Class  و تزويده ب :android :show_fragment  بغرض تحميل Arbitrary Class . طبعا المخترق أو الهكر من خلال تطبيق الإستغلال يهدف لتنفيذ أوامر التي ستقوم بكسر Android Sandbox –تمت الإشارة له بالتقديم - , و بهذا يمكن الوصول للبيانات و المعلومات الحساسة من التطبيقات المصابة بالثغرة , و كذلك يمكن تغيير permissions .  و كذلك يجب الإشارة أن المخترق لا يمكنه تزويد أو حقن Class  خاصة به بل فقط التي يقوم بتحميلها و يستعملها التطبيق – Android Framework Classes  و App Classes  -  .


كذلك التطبيقات الملغومة يمكنها أن تجعل من PreferenceActivity تحمل Arbitrary Fragment للتطبيق المصاب بالثغرة . و للتوضيح يمكن الإستعانة بالصورة التالية

Attacking a Fragment

إصلاح الثغرة :
جوجل قامت بإصلاح الثغرة و و ضعت الباتش ب Android 4.4 KitKat  , كذلك لمن يحب الإطلاع عن طريقة استغلال الثغرة من خلال المصادر بالأسفل .

المصادر :

شرح الثغرة و استغلالها :  Fragment Injection
http://developer.android.com/reference/android/app/Fragment.html



0 comments:

إرسال تعليق

أضف تعليقك