21 تغريدة 4 قراءة May 12, 2022
ممكن كثير منكم سمع عن أمان الذاكره واهميته في بناء الانظمه والمشاريع البرمجية، وكثير منكم ايضا سمع عن الثغرات والمشكلات الأمنيه الي كثير شركات تحاربها وتعاني منها اليوم.
طيب ايش العلاقه بينهم؟
في هذا الثريد بتكلم لكم بشكل مختصر عن علاقة الذاكره بالأمان...
بتكلم عن:
١- ايش هو أمان الذاكره
٢- الأخطاء الي تهدد أمان الذاكره
٣- اللغات البرمجية الآمنه vs الغير آمنه
٤- ايش التهديد الناتج عن الذاكره الغير آمنه
١- ايش هو أمان الذاكره؟
عشان نفهم أمان الذاكره،
اول شيء لازم نفهم أن اي برمجيه تكتبها تاخذ جزء محدد من الذاكره، بالتالي التطبيقات والأنظمه (الي هي عباره عن سطور برمجيه) جميعها تعيش وتشتغل على ذاكرة جهازك (RAM memory).
ايضا، لازم نفهم ان اي تطبيق او نظام آمن، هو في الحقيقه آمن "من ناحية الذاكره" وآمن بسبب "أمان الذاكره" والسبب هو ان الاكواد المستخدمه لا تخالف اي من قوانين أمان الذاكره او (لا تحتوي على اي اخطاء وصول للذاكره).
٢- الأخطاء الي تهدد أمان الذاكره
بعض الانتهاكات الي تقلل أمان الذاكره
١-buffer overflow
٢-buffer over-read
٣-null pointer
٤-double free
٥-use after free
٦-wild pointer
البرمجيات الي تخلو من الأخطاء هذي، تعتبر آمنه. ونقدر نقول ان الذاكره الآمنه هي الي تخلو من الأخطاء هذي
اذا وجدت هذه الاخطاء في البرنامج، بتصير مشكله في "memory access"، يعني صلاحية وأحقية الوصول للذاكرة بتكون مهدده، والنتيجه تكون تهديدات وثغرات أمنيه ممكن تستغل من قبل المخترقين
٣- اللغات البرمجية الآمنه vs غير آمنه
زي مانعرف، لغات البرمجه تنقسم الى نوعين
١- high level languages
مثل java, JavaScript, python, etc, وهذي اللغات تعتبر آمنه على الذاكره لان إدارة الذاكره تتم عن طريق garbage collector. ولكن ادائها بطيء
٢- low level languages
مثل ++C/C و assembly وهي تعتبر غير آمنه من ناحية الذاكره والسبب هو أن إدارة الذاكره فيها يدويه "تعتمد على المبرمج" ولكن ادائها سريع
بشكل مختصر، low level تعطيك سرعه وكفائه عاليه ولكن على حساب الأمان، و high level تعطي أمان عالي ولكن على حساب السرعه والكفائه
لو كنت مبرمج مواقع وتطبيقات وتستعمل high level languages غالبا بتكون امورك تمام ولا قد تعاملت مع ثغرات ومشاكل تخص الذاكره، لأن طبيعة العمل ماتحدك على التعامل المباشر مع الذاكره، و GC بيمنعك من اغلب الانتهاكات
اما لو كنت مبرمج أنظمه، وتتعامل مع low level languages, ف أنت تعرف تماما مدى صعوبة اجتناب وتحديد الأخطاء والتهديدات الي تتعلق بالذاكره،
طيب يزيد، ليش مانستعمل high level languages ونرتاح من الثغرات والتهديدات هذي؟ ليش نستعمل اللغات الغير آمنه في برمجة الأنظمه؟
الجواب:
مانقدر نستعمل high level languages لانها بطيئه وتستهلك طاقه بشكل كبير بسبب garbage collectors،
يوم نتكلم عن انظمه مثل operating system, databases, CLI tools, search engines, etc.
احنا نتكلم عن عاملين أساسيين لازم يتواجدون في هذه الأنظمه
١- سرعه عاليه
٢- خفه وتوفير للذاكره.
و فقط لغات مثل ++C/C توفر مثل هذه المتطلبات، ولغه اخرى بذكرها تحت👇
يعني اي لغه high level تعتبر امنه واي لغه low level تعتبر غير آمنه؟
لا، لغة rust جت تحل مشكلة الأمان في اللغات ال low level. و rust اصلا تعتبر لغة low level لبرمجه الأنظمة.
٤- ايش التهديد الناتج عن الذاكره الغير آمنه؟
اي انتهاك او تهديد لأمان الذاكره ممكن يخلي البرنامج يتعطل، ويمكن استغلاله لتغيير السلوك المقصود، وممكن توصل العواقب ل تسريب بيانات و تنفيذ تعليمات برمجيه خبيثه، وعن بعد كمان, من قبل المخترقين. وتعرف هذي ب ACE and RCE.
هل المشاكل الناتجه عن عدم أمان الذاكره كثيره؟
١- 60%-70% من الثغرات في انظمة IOS and macOS ناتجه عن"ذاكره غير آمنه"
٢- 70% من الثغرات في انظمة مايكروسوفت ناتجه عن نفس السبب
٣- 90% من الثغرات في انظمة اندرويد ناتجه عن نفس السبب
٤- بشكل عام، 80% من الثغرات ناتجه عن نفس السبب
الارقام كبيره صح؟
السبب هو ان نسبه كبيره من الانظمه هذي، مكتوبه بلغات low level مثل ++C/C وكان التركيز اكيد على الاداء السريع والكفاءة العاليه.
ختامًا،
اذا كنت مبرمج أنظمه او تتعامل مع لغات low level، لازم يكون عندك فهم عميق للذاكره وطريقة عملها، و الفهم العميق لايؤكد بالضروره أمان الذاكره في برامجك، شركات كبيره ومتقدمه بالمجال، تعاني! والسبب اعمق من "فهم وعدم فهم"
ومن رأيي المتواضع، اشوف الفهم العميق للأمور هذي هو الزامي لجميع المبرمجين بغض النظر عن نوع اللغه. لانه بيساعدك مهما كان مجالك، انك تكتب كود سريع وموفر في الحدود الي تسمح لك فيها اللغه.
وصلت لنهاية الثريد، اتمنى استفدت وشكرا على وقتك. اذا عجبك انشر + الاهم، اذا عندك إضافة او ملاحظه تفضل اكتبها ولا تتردد👍
هذي المصادر للإحصاءات الي ذكرتها
1- msrc-blog.microsoft.com
2- hacks.mozilla.org
هذا بحث من جامعة CMU يتكلم بتفصيل عن مفهوم "أمان الذاكره"
١- arxiv.org

جاري تحميل الاقتراحات...