
دراسة فنية للثغرة CVE-2025-5548
في هذا العمل، يتم تحليل الثغرة CVE-2025-5548، المرتبطة بـ تجاوز سعة المخزن المؤقت في المكدس الموجودة في FreeFloat FTP Server v1.0. الهدف الرئيسي من المختبر هو فهم كيفية تصرف تطبيق ضعيف تجاه المدخلات المعدلة، ومراقبة كيفية تسبب فشل التحقق في التأثير على تدفق تنفيذ البرنامج في بيئة خاضعة للرقابة.
لا يقتصر تطوير المستودع على إظهار النتيجة النهائية، بل يشمل عملية البحث الكاملة: إعداد البيئة، اختيار الأدوات، مراقبة الخلل، تحليل الذاكرة، والتحقق من الأثر الفعلي للثغرة.
تم تقسيم العمل إلى جزأين متميزين.
في هذا القسم، يتم شرح كيفية بناء بيئة الممارسة، نظام التشغيل المستخدم، التطبيق الضعيف، والأدوات التي اعتُبرت ضرورية لإجراء التحليل.
يركز الجزء الثاني على الجانب العملي. هنا يتم وصف العملية المتبعة لاكتشاف الخلل، تأكيد تلف الذاكرة، دراسة الكتابة فوق السجلات، والتحقق من كيفية استغلال الثغرة.
تم تنفيذ الممارسة على جهاز افتراضي يعمل بنظام Windows 11 Pro 25H2 (Build 26200.6584). البرنامج الضعيف المختار هو FreeFloat FTP Server v1.0، وهو تطبيق قديم مناسب لهذا النوع من التمارين لافتقاره للعديد من الحمايات الشائعة في البرامج الحالية.
تم تكوين شبكة الجهاز الافتراضي في وضع NAT، مما أتاح الوصول إلى الإنترنت لتثبيت التبعيات، تنزيل الأدوات، والحفاظ على الاتصال الأساسي للمختبر.
لتغطية جميع مراحل التحليل، كان من الضروري الاعتماد على العديد من الأدوات. استُخدم بعضها لإعداد البيئة، والبعض الآخر لمراجعة الملف الثنائي، وأخرى لمراقبة سلوك العملية عند حدوث الخلل.
استُخدم لتنزيل المستودعات، تنظيم بعض الموارد، وتسهيل إدارة المواد المستخدمة أثناء البحث.
استُخدم كأداة دعم للتحقق من الاتصال، تحديد الخدمة المكشوفة، والتأكد من استجابة الهدف بشكل صحيح على المنفذ المتوقع.
تم تثبيته للحصول على المكتبات، ملفات الرأس، والأدوات المفيدة في مهام التصحيح والتحليل منخفض المستوى داخل نظام Windows.
استُخدم للتحريرات السريعة، مراجعة النصوص البرمجية، والتلاعب البسيط بالسلاسل أو بيانات الاختبار.
كان بمثابة بيئة مريحة لكتابة النصوص البرمجية، اختبار الأتمتة، والعمل مع الكود بطريقة أكثر انتظامًا.
كان مفيدًا بشكل خاص عند الحاجة لمراجعة نصوص أطول أو تصحيح منطق متعلق ببناء الحمولات.
تم النظر في نسختين:
كان ضروريًا لتشغيل Ghidra، حيث أن هذه الأداة مطورة على Java.
استُخدم لمراقبة حالة البرنامج أثناء التنفيذ، فحص السجلات، مراجعة الذاكرة، وتحليل النقطة الدقيقة التي يحدث فيها الخلل.
استُخدم في مرحلة التحليل الثابت لمراجعة الملف الثنائي وتحديد الوظائف المشبوهة من منظور أمني.
استُخدم كدعم لفك الترجمة وفهم المنطق الداخلي للبرنامج الضعيف بشكل أفضل.
سهلت هذه الإضافة مهام مثل إنشاء الأنماط، حساب الإزاحة، وتحديد الأحرف المشكلة في الحمولة.
المكون الرئيسي للمختبر هو FreeFloat FTP Server v1.0، الذي يعمل كنظام هدف ضمن إثبات المفهوم. تكمن أهميته في أنه يحتوي على ثغرة كلاسيكية لتجاوز سعة المخزن المؤقت في المكدس، مما يجعله حالة مناسبة جدًا للتحليل التدريبي.
على الرغم من وجود أجهزة افتراضية معدة مسبقًا لهذا النوع من التمارين، فقد تم في هذه الحالة توثيق البيئة وتبرير الأدوات المستخدمة. يتيح ذلك فهمًا أفضل لسبب كون كل تطبيق جزءًا من المختبر والدور الذي يلعبه أثناء التحليل.
تألفت الخطوة الأولى من التحقق من أن خدمة FTP كانت متاحة وتعمل بشكل صحيح. بمجرد تأكيد الاتصال، تم مراجعة الملف الثنائي باستخدام أدوات التحليل الثابت لتحديد نقاط الضعف المحتملة المتعلقة بمعالجة السلاسل.
خلال هذه المراجعة، ظهرت دوال غير آمنة مثل strcpy و strcat، مما عزز الاشتباه في أن الخدمة قد تكون عرضة للمدخلات الطويلة بشكل مفرط. كما تم فحص عدة أوامر من بروتوكول FTP يمكن أن تتلقى بيانات يتحكم بها المستخدم، وتم اختيار أحدها كمرشح رئيسي للاختبارات.
بناءً على ذلك، تم تحميل العملية في مصحح لمراقبة سلوكها أثناء التنفيذ.
تألفت المرحلة التالية من إرسال سلاسل ذات أطوال متزايدة للتحقق مما إذا كان البرنامج سيتوقف عن الاستجابة بشكل صحيح. أتاح هذا الإجراء التحقق من أنه بدءًا من حجم معين، تتعطل الخدمة وينتهي الأمر بحدوث تغيير في الذاكرة.
أكد هذا السلوك أنه ليس مجرد خطأ تحقق سطحي، بل تلف فعلي يؤثر على تدفق العملية.
بعد التسبب في الخلل، كان من الضروري حساب عدد البايتات المطلوبة للوصول إلى عنوان الإرجاع بدقة. تم استخدام تسلسل غير متكرر بحيث يمكن ربط القيمة المنعكسة في EIP في لحظة التعطل بموقع محدد داخل المدخلات المرسلة.
بفضل هذا الإجراء، تم الحصول على الإزاحة المحددة اللازمة للكتابة فوق سجل التحكم.
مع الإزاحة المعروفة بالفعل، تم إعداد اختبار جديد حيث تم استبدال عنوان الإرجاع بقيمة يمكن التعرف عليها بسهولة. كان الهدف هو التحقق مما إذا كان البرنامج يسمح بتعديل EIP بشكل متحكم به.
كان الاختبار ناجحًا، حيث أظهر المصحح أن السجل يحتوي بالضبط على القيمة المدخلة. أثبت هذا أنه من الممكن تغيير تدفق التنفيذ وإعادة توجيهه نحو عنوان محدد.
بمجرد الوصول إلى هذه النقطة، تم تحليل البايتات التي قد تتداخل مع الحمولة. في هذا النوع من الثغرات، من الشائع أن تتسبب بعض الأحرف في اقتطاع، تغييرات غير متوقعة، أو إنهاء مبكر للسلسلة.
من خلال المقارنات المتتالية في الذاكرة، تم تحديد العديد من الأحرف السيئة، من بينها:
\x00\x0a\x0dكان اكتشافها مهمًا لبناء حمولة نهائية مستقرة ومتوافقة مع سلوك البرنامج الضعيف.
تألفت الخطوة التالية من إيجاد عنوان مناسب يسمح بإعادة توجيه التنفيذ نحو منطقة الذاكرة التي ستستضيف الحمولة. كان يجب إجراء هذا التحليل مع مراعاة نظام التشغيل والحراسات النشطة، حيث أن بعض العناوين غير مستقرة بين عمليات التنفيذ.
داخل المختبر، تم تحديد مرجع صالح يسمح بربط الكتابة فوق التدفق بالمدخلة التي يتحكم بها المهاجم.
بعد التحقق من التحكم في التدفق، تم بناء شيل كود متوافق مع القيود المكتشفة سابقًا. بالإضافة إلى ذلك، تمت إضافة منطقة سابقة من التعليمات المحايدة لتسهيل وصول وحدة المعالجة المركزية (CPU) بأمان إلى بداية الحمولة حتى في حالة وجود انحراف طفيف في الموقع المتوقع.
كانت هذه الخطوة مهمة لزيادة موثوقية التنفيذ.
في المرحلة الأخيرة، تم إطلاق الحمولة الكاملة ضد الخدمة الضعيفة بينما كان مُستمع ينتظر على الجهاز المهاجم. كانت النتيجة إنشاء اتصال عن بعد بالنظام الهدف، مما أكد أن الثغرة لا تسمح فقط بالتسبب في تعطل البرنامج، بل أيضًا الحصول على تنفيذ متحكم به.
يوضح هذا الأثر الفعلي للخلل ويبرر أهميته من منظور الأمن الهجومي والدفاعي.
تُظهر دراسة CVE-2025-5548 بوضوح كيف يمكن أن يكون تطبيق قديم، بدون آليات حماية حديثة، عرضة لتقنيات الاستغلال الكلاسيكية القائمة على تلف الذاكرة.
طوال المختبر، تم تغطية عدة مراحل أساسية: إعداد البيئة، المراقبة الأولية للخلل، التحقق من تجاوز السعة، التحكم في سجل التنفيذ، تصحيح الحمولة، والتحقق من النتيجة النهائية.
بعيدًا عن الاختبار التقني، تعمل هذه الحالة على فهم سبب كون استخدام الدوال غير الآمنة وغياب إجراءات الحماية لا يزالان خطرًا كبيرًا في البرامج القديمة. لذلك، فإن هذا النوع من التمارين مفيد بشكل خاص لتعزيز المعرفة بالهندسة العكسية، تحليل الثغرات، والاستغلال في بيئات خاضعة للرقابة.