استنفاد محتمل للموارد: عدم وجود تحديد للمعدل على /uploads.json يسمح بتحميل جماعي للملفات

وصف المشكلة

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

التفاصيل

  • واجهة برمجة تطبيقات التحميل (API): /uploads.json

  • المشكلة: لا يوجد تحديد واضح لمعدل الطلبات على هذا المسار (endpoint). يمكن لأي مستخدم مصادق عليه تحميل أعداد كبيرة من الملفات بسرعة.

  • إعادة الإنتاج:

    • عن طريق أتمتة الطلبات، يمكن للمستخدم إرسال آلاف طلبات التحميل في وقت قصير.

    • تحققنا من أنه بعد إرسال آلاف طلبات التحميل، يحتوي دليل التخزين على آلاف الملفات.

التأثير الأمني/على الموارد

  • يمكن للمهاجمين أو حتى المستخدمين العاديين استنفاد مساحة تخزين الخادم، أو تدهور الأداء، أو التسبب في مشكلات تشغيلية عن طريق تحميل أعداد هائلة من الملفات.

  • يمكن إساءة استخدام هذا بشكل محتمل لرفض الخدمة (denial-of-service) أو لزيادة تكاليف التخزين بشكل غير متوقع.

أسئلة

  • هل هناك أي تحديد مدمج لمعدل الطلبات أو منع إساءة الاستخدام للمسار /uploads.json في Discourse؟

  • هل هناك إعدادات أو إضافات موصى بها لتقييد تكرار تحميل المستخدمين للملفات أو إجمالي استخدام التخزين لكل مستخدم؟

  • هل هناك أفضل الممارسات لمنع استنفاد الموارد الناجم عن تحميل الملفات في عمليات نشر Discourse؟

شكراً لاهتمامكم ومشورتكم!