الدليل الشامل لثغرة Unrestricted Resource Consumption التحديات الازمة وطرق الحماية

Vulnerabilities
تعتمد على استهلاك موارد لأنظمة، وَتُؤَدَّى إلى هجمات حجب الخدمة DOS, ما هى ثغرة الاستهلاك غير المقيد للموارد؟
Mostafa Tamam
Jan. 20, 2024, 1 p.m.
mostafa_tamam
الدليل الشامل لثغرة Unrestricted Resource Consumption التحديات الازمة وطرق الحماية

مقدمة

تلعب واجهات برمجة التطبيقات API دورًا حاسمًا في التطبيقات فهي تمكنها من التواصل مع بعضها البعض وتبادل البيانات وتنفيذ المهام المختلفة بسلاسة, ومع ذلك، فإن واجهات الـ API معرضة أيضًا لمخاطر أمنية مختلفة، بما في ذلك الاستهلاك غير المقيد للموارد, فى هذا الجزء من سلسة OWASP API TOP 10 سوف نستكشف مخاطر وأسباب الاستهلاك غير المقيد للموارد في API، واسترتجيات وسبل الوقاية.

ما هي ثغرة الاستهلاك غير المقيد للموارد؟

تعد الثغرة الرابعة من ثغرات الـ API الأشهر OWASP لأشهر 10 ثغرات أمنية, وتسمى Unrestricted Resource Consumption أو الاستهلاك غير المقيد للموارد، هي مشكلة في واجهة برمجة التطبيقات (API) حيث لا يوجد لديه ضمانات لمنع الاستخدام المفرط الخاصة به. عندما لا تكون هناك قيود على استهلاك الموارد، يمكن أن تُؤْدَى إلى هجمات حجب الخدمة (DoS) ومواجهه تكاليف مالية، بسبب انقطاع الخدمة، هذه الثغرة الذي تعد نسخة محدثة من API4:2019 Lack of Resources and Rate Limiting أو نقص الموارد وتحديد المعدل.

كيف يحدث هذا الهجوم؟

يمكن تنفيذ هذا الهجوم عن طريق إرسال عدد كبير من الطلبات إلى النظام المستهدف أو عن طريق إرسال الطلبات التي تتطلب قدرًا كبيرًا من موارد المعالجة أو الذاكرة’ يمكن أن تُؤْدَى ثغرة الاستهلاك غير المقيد للموارد إلى أن يصبح النظام المستهدف غير متاح أو غير مستقر، مما قد يكون له عواقب كبيرة على الشركة أو المؤسسة التي تعتمد على النظام.

يمكن أن يؤدي الاستغلال إلى هجمات حجب الخدمة (DoS)، بسبب كثرة الطلبات، ولكنه قد يؤدي أيضًا إلى زيادة التكاليف التشغيلية مثل تلك المتعلقة بالبنية التحتية، بسبب ارتفاع الطلب على وحدة المعالجة المركزية (CPU)، وزيادة احتياجات التخزين السحابي، وما إلى ذلك.

كيف يمكن استغلال هذا الهجوم؟

  • إرسال عدد كبير من الطلبات إلى واجهة برمجة التطبيقات (API)، مما قد يؤدي إلى زيادة التحميل على خادم واجهة برمجة التطبيقات (API) وعدم الاستجابة.
  • إرسال الطلبات التي تتطلب قدرًا كبيرًا من موارد المعالجة أو الذاكرة، مثل الاستعلامات المعقدة أو الحمولات الكبيرة.
  • إرسال الطلبات التي تتسبب في قيام خادم واجهة برمجة التطبيقات (API) بإجراء عمليات معقدة, مثل استعلامات قاعدة البيانات أو عمليات التشفير.

سيناريو الهجوم

في السيناريو التالي، يتلاعب المهاجم بمحتوى طلب واجهة برمجة التطبيقات (API)، مما يؤدي إلى استجابة الخادم بحمولة طلبات كبيرة جدًا، مما يؤدي إلى بطء أداء التطبيق.

  1. يرسل المهاجم طلب واجهة برمجة التطبيقات (API) الشرعي لصفحة واحدة تحتوي على 200 عنصر.
  2. يقوم المهاجم بتعديل حجم الصفحة، مما يزيدها من 200 إلى 200000.
  3. تؤدي هذه الزيادة إلى قيام التطبيق بإرجاع عدد زائد من العناصر استجابةً للاستعلام، مما يستهلك موارد الخادم بشكل زائد.

استراتيجيات الحماية وسبل الوقاية

يُشير مشروع أمان واجهات برمجة التطبيقات (OWASP API Security) إلى أن واجهة برمجة التطبيقات (API) تعتبر غير آمنة إذا كانت أحد الحدود التالية غير متوفرة أو تم تعيينها بشكل غير مناسب:

  • فترات الوقت لتنفيذ الطلبات
  • الحد الأقصى للذاكرة المخصصة
  • الحد الأقصى لعدد الملفات
  • الحد الأقصى لعدد العمليات
  • الحد الأقصى لحجم ملف التحميل
  • عدد العمليات للقيام بها في طلب واحد من عميل واجهة برمجة التطبيقات (على سبيل المثال، دمج GraphQL)
  • عدد السجلات في كل صفحة ليتم إرجاعها في طلب واحد والاستجابة.
  • الحد الخاص بنفقات مقدمي الخدمات الطرف الثالث مثل (AWS، GCP، Azure).

لتجنب هذه الهجمات، يمكن تنفيذ عدة استراتيجيات مثل:

تحديد السرعة (Rate Limiting)

يمكن أن يساعد تحديد السرعة في تجنب تنفيذ المهاجمين لعدد كبير من الطلبات على الخادم الـ API. حيث يمكن للمؤسسات تكوين حدود السرعة استنادًا إلى عدد الطلبات لكل مستخدم أو عنوان IP أو عند كل نقطة نهاية API.

التحقق من الإدخال (Input Validation)

يمكن أن يساعد تنفيذ التحقق من الإدخال في تجنب إرسال المهاجمين لطلبات تتطلب كمية كبيرة من موارد المعالجة أو الذاكرة. حيث يمكن للمؤسسات التحقق من صحة بيانات الإدخال، مثل query parameter و and request payloads لضمان توافقها مع الصيغ والأحجام المتوقعة.

توزيع الحمل (Load Balancing)

يمكن أن يساعد تنفيذ توزيع الحمل في توزيع الطلبات بشكل متساوي عبر العديد من خوادم الـ API، مما يقلل من مخاطر الطلبات الزائدة أو استنفاد الموارد على أي خادم.

التخزين المؤقت على الخادم (Server-side Caching)

يمكن أن يساعد تنفيذ التخزين المؤقت على الخادم في تقليل الحمل على خادم الـ API عن طريق تخزين البيانات المطلوبة بشكل متكرر في الذاكرة أو على الـ Desk.

الرصد وتسجيل الأحداث (Monitoring and Logging)

يمكن أن يساعد تقنية الرصد وتسجيل الأحداث في اكتشاف والاستجابة لهجمات استهلاك الموارد غير المقيدة بسرعة. حيث يمكن مراقبة حركة الـ API واستخدام موارد الخادم، وتسجيل الطلبات والاستجابات للتحليل.

الملخص والخاتمة

كل طلب API له تكلفة فنية ومالية. عندما لا يفرض موفرو واجهة برمجة التطبيقات (API) قيودًا على استهلاك الموارد، هناك خطر متزايد لرفض الخدمة (DoS)، ورفض الخدمة الموزعة (DDoS)، والتكاليف المالية غير الضرورية، وتدهور جودة الخدمة للمستخدمين الآخرين، لذلك كن حريص على تطبيق المعايير والسياسات الأمنة لمنع مثل هذه الهجمات والسلام ختام.


DDoS DoS Vulnerability Unrestricted Resource Consumption OWASP API TOP 10 Rate limiting Root-X حجب الخدمة