مقدمة
أثناء إطلاق تحديث تحسين أداء لإحدى خدمات الخلفية (Backend Service)، ظن الفريق أن المخاطر محدودة لأن التغيير «وظيفي بسيط». لكن سهوًا في التحقق من المدخلات فتح الباب أمام سلسلة استغلالات انتهت بزرع برمجية خبيثة على خوادم الإنتاج.
كيف بدأ كل شيء؟
الخدمة كانت تستقبل طلبات JSON عبر واجهة API داخلية.
انطلقت نسخة جديدة دون فحص أمني شامل، وبعد يومين بدأت تظهر طلبات
تحتوي على قيَم مشبوهة في الحقول.
{"payload": "<script>...</script>"}
نقطة الضعف البرمجية
الدالة المسؤولة عن معالجة الطلبات كانت بالشكل التالي:
const data = JSON.parse(request.body);
executeTask(data.payload); // يجب ألا تقبل مدخلات غير موثوقة
كانت executeTask مُصمّمة للمهام الداخلية فقط، لكنها أصبحت متاحة عبر
API داخلي دون حماية كافية، مما سمح بتنفيذ أوامر عن بعد (RCE).
الاستغلال
- حقن حمولة خبيثة عبر
payload. - تنفيذ أوامر عن بُعد (RCE) على الخادم.
- زرع برمجية خبيثة صغيرة داخل النظام.
- جمع سجلات حساسة ومفاتيح الوصول والجلسات.
- إرسال البيانات لخادم خارجي.
لماذا لم يُكتشف مبكرًا؟
- غياب مراقبة كافية لواجهة الـ API.
- عدم وجود WAF أمام الواجهة الداخلية.
- تعامل غير آمن مع دوال التنفيذ الخلفية.
- غياب مراجعات أمنية للكود الجديد.
- الاكتفاء باختبارات وظيفية فقط.
علامات على الاختراق
- ارتفاع غير طبيعي في استهلاك CPU.
- ملفات عشوائية في مسار
/tmp. - اتصالات صادرة نحو نطاقات خارجية غير مألوفة.
- سلوك غير طبيعي في مهام المعالجة.
التحقيق والاستجابة
بعد تحليل العمليات، اكتشف الفريق ملفًا تنفيذيًا متخفيًا. وعند تحليل الأوامر، تبين أنه نقطة دخول (Entry Point) لبرمجية خبيثة اُدخلت عبر استغلال ثغرة في الـ API.
الدروس المستفادة
- التحقق من المدخلات ضروري لكل واجهة.
- حماية واجهات API الداخلية كأنها خارجية تمامًا.
- تقييد أي دالة يمكنها تنفيذ أوامر على الخادم.
- إضافة مراقبة Logging + Alerts لكل الخدمات.
- لا يوجد «تحديث بسيط» في بيئات الإنتاج.